示例#1
0
文件: main.cpp 项目: AKIRA5611/AR
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();
}
示例#2
0
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();
}
示例#3
0
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();
}
示例#4
0
文件: Item.cpp 项目: ttlg/criticalhit
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();
}
示例#5
0
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();
}
示例#6
0
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 );		// デプステスト・無効
}
示例#7
0
文件: Hero.cpp 项目: ttlg/criticalhit
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();
}
示例#8
0
void MqoObject::display()
{
	mqoCallModel(mqoModel);
}
示例#9
0
//=======================================================
// 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 );		// デプステスト・無効
}