void WallRender(){ /* for(int i=0;i<Map_Height;i++){ glPushMatrix(); glTranslatef(-block_size,-block_size*i,50.0f); mqoCallModel(WallModel); glPopMatrix(); glPushMatrix(); glTranslatef(block_size*Map_Width,-block_size*i,50.0f); mqoCallModel(WallModel); glPopMatrix(); } for(int i=0;i<Map_Width+2;i++){ glPushMatrix(); glTranslatef(block_size*(i-1),-block_size*Map_Height,50.0f); mqoCallModel(WallModel); glPopMatrix(); } */ glPushMatrix(); glTranslatef(-block_size,-9*block_size,Map_depth); mqoCallModel(WallModel); glPopMatrix(); }
void display(void) { kinect.run(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glColor4f(0.0f, 0.0f, 1.0f, 1.0f); for (int i = 0; i < 20; ++i){ Point(kinect.kinectX[i]-WIDTH*0.45, (kinect.kinectY[i]-HEIGHT*0.45)*(-1), 20.0); } glViewport(0, 0, WIDTH, HEIGHT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); //視野角,アスペクト比(ウィンドウの幅/高さ),描画する範囲(最も近い距離,最も遠い距離) gluPerspective(30.0, (double)WIDTH / (double)HEIGHT, 1.0, 10000.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); //視点の設定 gluLookAt(kinect.kinectX[NUI_SKELETON_POSITION_HAND_LEFT] - WIDTH / 2, (kinect.kinectY[NUI_SKELETON_POSITION_HAND_LEFT] - HEIGHT / 2)*(-1), 500.0*kinect.kinectZ[NUI_SKELETON_POSITION_HAND_LEFT], //カメラの座標 0.0, 100.0, 0.0, // 注視点の座標 0.0, 1.0, 0.0); // 画面の上方向を指すベクトル std::cout << kinect.kinectX[NUI_SKELETON_POSITION_HAND_LEFT] << std::endl; //ライトの設定 glLightfv(GL_LIGHT0, GL_POSITION, lightpos); mqoCallModel(model); glutSwapBuffers(); }
void MQObject::draw() { glPushMatrix(); glTranslatef( pos.x, pos.y, pos.z ); glRotatef( rot.x, 1, 0, 0 ); glRotatef( rot.y, 0, 1, 0 ); glRotatef( rot.z, 0, 0, 1 ); mqoCallModel( model ); glPopMatrix(); drawSphere(); }
void Item::draw() { if ( ( itemID == I_PUMPKIN || itemID == I_PUMPKIN_BOSS ) && 40 < pos.y ) { cnt++; double v0 = GRAVITY; pos.y = pos.y + v0 * (cnt/30.0) + GRAVITY * 0.5 * ((cnt/30.0)*(cnt/30.0)); } rot.y += rotSpeed; glPushMatrix(); glTranslatef( pos.x, pos.y, pos.z ); glRotatef( rot.y, 0, 1, 0 ); glRotatef( rot.z, 0, 0, 1 ); glRotatef( rot.x, 1, 0, 0 ); mqoCallModel( model ); glPopMatrix(); //drawSphere(); }
void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glViewport(0, 0, WIDTH, HEIGHT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); //視野角,アスペクト比(ウィンドウの幅/高さ),描画する範囲(最も近い距離,最も遠い距離) gluPerspective(30.0, (double)WIDTH / (double)HEIGHT, 1.0, 10000.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); //視点の設定 gluLookAt(150.0, 400.0, 500.0, //カメラの座標 0.0, 100.0, 0.0, // 注視点の座標 0.0, 1.0, 0.0); // 画面の上方向を指すベクトル //ライトの設定 glLightfv(GL_LIGHT0, GL_POSITION, lightpos); mqoCallModel(model); glutSwapBuffers(); }
void Drawnashi( int mark_id,double (&patt_trans)[3][4]){ double gl_para[16]; // ARToolKit->OpenGL変換行列 // 陰面消去 glEnable( GL_DEPTH_TEST ); // 陰面消去・有効 glDepthFunc( GL_LEQUAL ); // デプステスト // 変換行列の適用 argConvGlpara( patt_trans, gl_para ); // ARToolKitからOpenGLの行列に変換 glMatrixMode( GL_MODELVIEW ); // 行列変換モード・モデルビュー glLoadMatrixd( gl_para ); // 読み込む行列を指定 SetupLighting1(); // ライトの定義 glEnable( GL_LIGHTING ); // ライティング・有効 glEnable( GL_LIGHT0 ); // ライト0・オン // オブジェクトの材質 SetupMaterial1(); // 3Dオブジェクトの描画 GLfloat rmovez; if (rmove < 20.0){ rmovez = -pow(10.0-rmove,2.0)+100; }else{ rmovez = -pow(10.0-(rmove-20.0),2.0)+100; } /* 3次元オブジェクトの描画 */ glTranslatef(5*rmove, 0.0 , 25+rmovez); // オブジェクトの平行移動(z軸方向に25mm移動) glRotatef(90, 0.0, 0.0, 1.0); // オブジェクトをz軸まわりに回転 元はyが0でzが1だった glPushMatrix(); glRotatef( 90, 1.0, 0.0, 0.0 ); // モデルを立たせる もとは始めが90だったから立ってた mqoCallModel( rmodel ); // モデルの描画 glPopMatrix(); glDisable( GL_LIGHTING ); // ライティング・無効 glDisable( GL_DEPTH_TEST ); // デプステスト・無効 }
void Hero::drawPose( MQO_MODEL pose ) { Vector dirV = Vector( direct.z, 0, -direct.x ); Vector eye = getEye(); double z = 2.5; double y = -2.5; Vector core; core.x = eye.x + direct.x * z + dirV.x * 0; core.y = eye.y + y; core.z = eye.z + direct.z * z + dirV.z * 0; glPushMatrix(); glTranslatef( core.x, core.y, core.z ); glRotatef( rot.y, 0, 1, 0 ); glRotatef( rot.x + 20, 1, 0, 0 ); glRotatef( rot.z, 0, 0 ,1 ); if ( state != H_DAMAGE ) mqoCallModel( pose ); else mqoAlphaCall( pose, 0.7 ); //mqoCallModel( animeModelMap["atack_right"][0] ); glPopMatrix(); }
void MqoObject::display() { mqoCallModel(mqoModel); }
//======================================================= // 3Dオブジェクトの描画を行う関数 //======================================================= void DrawObject( int mark_id,double (&patt_trans)[3][4] ,int i) { double gl_para[16]; // ARToolKit->OpenGL変換行列 // 陰面消去 glEnable( GL_DEPTH_TEST ); // 陰面消去・有効 glDepthFunc( GL_LEQUAL ); // デプステスト // 変換行列の適用 argConvGlpara( patt_trans, gl_para ); // ARToolKitからOpenGLの行列に変換 glMatrixMode( GL_MODELVIEW ); // 行列変換モード・モデルビュー glLoadMatrixd( gl_para ); // 読み込む行列を指定 switch( mark_id ){ case MARK1_MARK_ID: // ライティング SetupLighting1(); // ライトの定義 glEnable( GL_LIGHTING ); // ライティング・有効 glEnable( GL_LIGHT0 ); // ライト0・オン // オブジェクトの材質 SetupMaterial1(); // 3Dオブジェクトの描画 if (movex[i] < 20.0){ movez[i] = -pow(10.0-movex[i],2.0)+100; }else{ movez[i] = -pow(10.0-(movex[i]-20.0),2.0)+100; } /* 3次元オブジェクトの描画 */ glTranslatef(-5*movex[i], 0.0 , 25+movez[i]); // オブジェクトの平行移動(z軸方向に25mm移動) glRotatef(90, 0.0, 0.0, 1.0); // オブジェクトをz軸まわりに回転 元はyが0でzが1だった glPushMatrix(); glRotatef( 90, 1.0, 0.0, 0.0 ); // モデルを立たせる もとは始めが90だったから立ってた mqoCallModel( model[i] ); // モデルの描画 glPopMatrix(); break; case MARK2_MARK_ID: // ライティング SetupLighting2(); // ライトの定義 glEnable( GL_LIGHTING ); // ライティング・有効 glEnable( GL_LIGHT0 ); // ライト0・オン // オブジェクトの材質 SetupMaterial2(); // 3Dオブジェクトの描画 if (movex[i] < 20.0){ movez[i] = -pow(10.0-movex[i],2.0)+100; }else{ movez[i] = -pow(10.0-(movex[i]-20.0),2.0)+100; } /* 3次元オブジェクトの描画 */ glTranslatef(-5*movex[i], 0.0 , 25+movez[i]); // オブジェクトの平行移動(z軸方向に25mm移動) glRotatef(90, 0.0, 0.0, 1.0); // オブジェクトをz軸まわりに回転 元はyが0でzが1だった glPushMatrix(); glRotatef( 90, 1.0, 0.0, 0.0 ); // モデルを立たせる もとは始めが90だったから立ってた mqoCallModel( model[i] ); // モデルの描画 glPopMatrix(); break; case MARK3_MARK_ID: // ライティング SetupLighting1(); // ライトの定義 glEnable( GL_LIGHTING ); // ライティング・有効 glEnable( GL_LIGHT0 ); // ライト0・オン // オブジェクトの材質 SetupMaterial2(); // 3Dオブジェクトの描画 if (movex[i] < 20.0){ movez[i] = -pow(10.0-movex[i],2.0)+100; }else{ movez[i] = -pow(10.0-(movex[i]-20.0),2.0)+100; } /* 3次元オブジェクトの描画 */ glTranslatef(-5*movex[i], 0.0 , 25+movez[i]); // オブジェクトの平行移動(z軸方向に25mm移動) glRotatef(90, 0.0, 0.0, 1.0); // オブジェクトをz軸まわりに回転 元はyが0でzが1だった glPushMatrix(); glRotatef( 90, 1.0, 0.0, 0.0 ); // モデルを立たせる もとは始めが90だったから立ってた mqoCallModel( model[i] ); // モデルの描画 glPopMatrix(); break; case MARK4_MARK_ID: // ライティング SetupLighting1(); // ライトの定義 glEnable( GL_LIGHTING ); // ライティング・有効 glEnable( GL_LIGHT0 ); // ライト0・オン // オブジェクトの材質 SetupMaterial1(); // 3Dオブジェクトの描画 if (movex[i] < 20.0){ movez[i] = -pow(10.0-movex[i],2.0)+100; }else{ movez[i] = -pow(10.0-(movex[i]-20.0),2.0)+100; } /* 3次元オブジェクトの描画 */ glTranslatef(-5*movex[i], 0.0 , 25+movez[i]); // オブジェクトの平行移動(z軸方向に25mm移動) glRotatef(90, 0.0, 0.0, 1.0); // オブジェクトをz軸まわりに回転 元はyが0でzが1だった glPushMatrix(); glRotatef( 90, 1.0, 0.0, 0.0 ); // モデルを立たせる もとは始めが90だったから立ってた mqoCallModel( model[i]); // モデルの描画 glPopMatrix(); break; case MARK5_MARK_ID: // ライティング SetupLighting2(); // ライトの定義 glEnable( GL_LIGHTING ); // ライティング・有効 glEnable( GL_LIGHT0 ); // ライト0・オン // オブジェクトの材質 SetupMaterial2(); // 3Dオブジェクトの描画 if (movex[i] < 20.0){ movez[i] = -pow(10.0-movex[i],2.0)+100; }else{ movez[i] = -pow(10.0-(movex[i]-20.0),2.0)+100; } /* 3次元オブジェクトの描画 */ glTranslatef(-5*movex[i], 0.0 , 25+movez[i]); // オブジェクトの平行移動(z軸方向に25mm移動) glRotatef(90, 0.0, 0.0, 1.0); // オブジェクトをz軸まわりに回転 元はyが0でzが1だった glPushMatrix(); glRotatef( 90, 1.0, 0.0, 0.0 ); // モデルを立たせる もとは始めが90だったから立ってた mqoCallModel( model[i] ); // モデルの描画 glPopMatrix(); break; case MARK6_MARK_ID: // ライティング SetupLighting1(); // ライトの定義 glEnable( GL_LIGHTING ); // ライティング・有効 glEnable( GL_LIGHT0 ); // ライト0・オン // オブジェクトの材質 SetupMaterial2(); // 3Dオブジェクトの描画 if (movex[i] < 20.0){ movez[i] = -pow(10.0-movex[i],2.0)+100; }else{ movez[i] = -pow(10.0-(movex[i]-20.0),2.0)+100; } /* 3次元オブジェクトの描画 */ glTranslatef(-5*movex[i], 0.0 , 25+movez[i]); // オブジェクトの平行移動(z軸方向に25mm移動) glRotatef(90, 0.0, 0.0, 1.0); // オブジェクトをz軸まわりに回転 元はyが0でzが1だった glPushMatrix(); glRotatef( 90, 1.0, 0.0, 0.0 ); // モデルを立たせる もとは始めが90だったから立ってた mqoCallModel( model[i] ); // モデルの描画 glPopMatrix(); break; case MARK7_MARK_ID: // ライティング SetupLighting1(); // ライトの定義 glEnable( GL_LIGHTING ); // ライティング・有効 glEnable( GL_LIGHT0 ); // ライト0・オン // オブジェクトの材質 SetupMaterial1(); // 3Dオブジェクトの描画 if (movex[i] < 20.0){ movez[i] = -pow(10.0-movex[i],2.0)+100; }else{ movez[i] = -pow(10.0-(movex[i]-20.0),2.0)+100; } /* 3次元オブジェクトの描画 */ glTranslatef(-5*movex[i], 0.0 , 25+movez[i]); // オブジェクトの平行移動(z軸方向に25mm移動) glRotatef(90, 0.0, 0.0, 1.0); // オブジェクトをz軸まわりに回転 元はyが0でzが1だった glPushMatrix(); glRotatef( 90, 1.0, 0.0, 0.0 ); // モデルを立たせる もとは始めが90だったから立ってた mqoCallModel( model[i] ); // モデルの描画 glPopMatrix(); break; case MARK8_MARK_ID: // ライティング SetupLighting1(); // ライトの定義 glEnable( GL_LIGHTING ); // ライティング・有効 glEnable( GL_LIGHT0 ); // ライト0・オン // オブジェクトの材質 SetupMaterial1(); // 3Dオブジェクトの描画 if (movex[i] < 20.0){ movez[i] = -pow(10.0-movex[i],2.0)+100; }else{ movez[i] = -pow(10.0-(movex[i]-20.0),2.0)+100; } /* 3次元オブジェクトの描画 */ glTranslatef(-5*movex[i], 0.0 , 25+movez[i]); // オブジェクトの平行移動(z軸方向に25mm移動) glRotatef(90, 0.0, 0.0, 1.0); // オブジェクトをz軸まわりに回転 元はyが0でzが1だった glPushMatrix(); glRotatef( 90, 1.0, 0.0, 0.0 ); // モデルを立たせる もとは始めが90だったから立ってた mqoCallModel( model[i] ); // モデルの描画 glPopMatrix(); break; } // 終了処理 glDisable( GL_LIGHTING ); // ライティング・無効 glDisable( GL_DEPTH_TEST ); // デプステスト・無効 }