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); } //*/ }
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; } }
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); } //######################################################################################## }