예제 #1
0
void PlaneModel::MakePropeller(){


	//########################################################################################

	
	//--------------------------------------------------
	//* Front Propeller
	if(true){
		GroupModel* propeller = new GroupModel();
		float bladeLength = 0.6f;
		int blades = 8;
		for(int i=0; i<blades;i++){	
			GroupModel* blade = new GroupModel();
				SphereModel* sphere = new SphereModel();
				sphere->SetScaling(vec3(bladeLength, 0.06f, 0.1f));
				sphere->SetPosition(vec3(bladeLength/2, 0.0f, 0.0f));
				sphere->SetRotation(vec3(1.0f, 0.0f, 0.0f), 45.0f);
			blade->AddChild(sphere);
			blade->SetRotation(vec3(0.0f,0.0f,2.0f), i*(360.0f/blades));
			propeller->AddChild(blade);
		}
	
		propeller->SetPosition(vec3(0.0f,0.0f,2.5f));
		propeller->SetRotation(vec3(0.0f,0.0f,1.0f), 0.0f);
		propeller->SetRotationSpeed(5.0f*180.0f);
		AddChild("propeller", propeller);
	}
	//*/
}
예제 #2
0
void PlaneModel::MakeBody(){

	//########################################################################################
	
	if(1){//body
		SphereModel* model = new SphereModel(color);
		model->SetScaling(vec3(0.8f, 0.5f, 2.5f));
		model->SetPosition(vec3(0.0f, 0.0f, 0.0f));
		//model->SetRotation(vec3(0.0f, 1.0f, 0.0f), 45.0f);
		AddChild("body", model);
	}

	//########################################################################################

	if(1){//cockpit
		GroupModel* group = new GroupModel();
		if(1){ //glass
			float col = mBlack;
			SphereModel* model = new SphereModel(vec3(col,col,col));
			model->SetScaling(vec3(0.5f, 0.4f, 1.7f));
			model->SetPosition(vec3(0.0f, 0.3f, 0.0f));
			//model->SetRotation(vec3(0.0f, 1.0f, 0.0f), 45.0f);
			group->AddChild("glass", model);
		}
		if(1){ //back
			SphereModel* model = new SphereModel(color);
			model->SetScaling(vec3(0.5f, 0.4f, 2.0f));
			model->SetPosition(vec3(0.0f, 0.3f, -0.4f));
			//model->SetRotation(vec3(0.0f, 1.0f, 0.0f), 45.0f);
			group->AddChild("back",model);
		}
		AddChild("cockpit", group);
		group->mRotationAngleX = -5.0f;
	}

	

}
예제 #3
0
void PlaneModel::MakeWings(){
//########################################################################################
	//wing
	GroupModel* wing = new GroupModel();
	SphereModel* wingbase = new SphereModel();
	wingbase->SetScaling(vec3(4.0f, 0.1f, 0.5f));
	wingbase->SetPosition(vec3(0.0f, 0.0f, 0.0f));
	//sphere->SetRotation(vec3(0.0f, 1.0f, 0.0f), 45.0f);
	wing->AddChild("wing_base", wingbase);
	AddChild("wing", wing);
	//Flaps ---------------------------------------------------------------------------------
	float flapWidth = 0.45f;// z width of flap
	float flapLen = 2.0f;//  3.4 full wing
	float wingAng = 6; // rotate to fit wing
	float zOffset = -0.2;//-0.2;
	float xOffset = 1.78f;//2.3f;
	vec3 flapColor = vec3(0.4f, 0,0);
	//Left Flap -----------------------------------------------------------------------------
	if(1){
		GroupModel* wingside = new GroupModel();					//wingside->AddChild(new CubeModel(vec3(0,0,1), vec3(0.2f))); //marker
			if(1){
				Model* m = new CubeModel(flapColor);	//flap->AddChild(new CubeModel(vec3(1), vec3(0.2f))); //marker
				m->SetPosition(vec3(1.60f,-0.025,-0.42f));
				m->SetScaling(vec3(1.2f,0.05f, flapWidth));
				wingside->AddChild(m);
			}
		
			GroupModel* flap = new GroupModel();
				//flaps cube
				Model* m = new CubeModel(flapColor);	//flap->AddChild(new CubeModel(vec3(1), vec3(0.2f))); //marker
				m->SetPosition(vec3(0,-0.025,-flapWidth/2));
				m->SetScaling(vec3(flapLen,0.05f, flapWidth));
			
			flap->SetRotation(vec3(1,0,0), 0); // angle of flap
			flap->SetPosition(vec3(0,0,zOffset));
			//flap->SetRotationSpeed(60);
			flap->AddChild("flap", m);
		
		wingside->SetRotation(vec3(0,1,0), -wingAng);
		wingside->SetPosition(vec3(xOffset,0,0));
		wingside->AddChild("flap",flap);
		wing->AddChild("left", wingside);
	}
	//Right Flap -----------------------------------------------------------------------------
	if(1){
		GroupModel* wingside = new GroupModel();					//wingside->AddChild(new CubeModel(vec3(0,0,1), vec3(0.2f))); //marker
			if(1){
				Model* m = new CubeModel(flapColor);	//flap->AddChild(new CubeModel(vec3(1), vec3(0.2f))); //marker
				m->SetPosition(vec3(-1.60f,-0.025,-0.42f));
				m->SetScaling(vec3(1.2f,0.05f, flapWidth));
				wingside->AddChild(m);
			}
		
			GroupModel* flap = new GroupModel();
				//flaps cube
				Model* m = new CubeModel(flapColor);	//flap->AddChild(new CubeModel(vec3(1), vec3(0.2f))); //marker
				m->SetPosition(vec3(0,-0.025,-flapWidth/2));
				m->SetScaling(vec3(flapLen,0.05f, flapWidth));
			
			flap->SetRotation(vec3(1,0,0), 0); // angle of flap
			flap->SetPosition(vec3(0,0,zOffset));
			//flap->SetRotationSpeed(60);
			flap->AddChild("flap", m);
		
		wingside->SetRotation(vec3(0,1,0), wingAng);
		wingside->SetPosition(vec3(-xOffset,0,0));
		wingside->AddChild("flap",flap);
		wing->AddChild("right", wingside);
	}
	
	//########################################################################################
}