public void onDrawFrame(GL10 glUnused) { super.onDrawFrame(glUnused); // -- no proper physics here, just a bad approximation to keep // this example as short as possible ;-) mRaptor.setZ(mRaptor.getZ() + 2f); mRaptor.setX((float) Math.sin(mTime) * 20f); mRaptor.setRotZ((float) Math.sin(mTime + 8f) * -30f); mRaptor.setRotY(180 + (mRaptor.getRotZ() * .1f)); mRaptor.setRotY(180); mRaptor.setY((float) Math.cos(mTime) * 10f); mRaptor.setRotX((float) Math.cos(mTime + 1f) * -20f); mSphere.setZ(mRaptor.getZ()); mTime += .01f; if (mRootCube.getZ() - mRaptor.getZ() <= (30 * -6)) { mRootCube.setZ(mRaptor.getZ()); } }
protected void initScene() { PointLight light = new PointLight(); light.setZ(6); light.setPower(2); getCurrentScene().addLight(light); Texture jetTexture = new Texture("jetTexture", R.drawable.jettexture); SphereMapTexture sphereMapTexture = new SphereMapTexture("manilaSphereMapTex", R.drawable.manila_sphere_map); jetTexture.setInfluence(.8f); // -- important! sphereMapTexture.isEnvironmentTexture(true); sphereMapTexture.setInfluence(.2f); Object3D jet1 = null; // -- sphere map with texture try { Material material1 = new Material(); material1.enableLighting(true); material1.setDiffuseMethod(new DiffuseMethod.Lambert()); material1.addTexture(jetTexture); material1.addTexture(sphereMapTexture); ObjectInputStream ois; ois = new ObjectInputStream(mContext.getResources().openRawResource(R.raw.jet)); jet1 = new Object3D((SerializedObject3D) ois.readObject()); jet1.setMaterial(material1); jet1.setY(2.5f); addChild(jet1); } catch (Exception e) { e.printStackTrace(); } Vector3 axis = new Vector3(2, -4, 1); axis.normalize(); Animation3D anim1 = new RotateAnimation3D(axis, 360); anim1.setRepeatMode(RepeatMode.INFINITE); anim1.setDuration(12000); anim1.setTransformable3D(jet1); registerAnimation(anim1); anim1.play(); sphereMapTexture = new SphereMapTexture("manilaSphereMapTex2", R.drawable.manila_sphere_map); sphereMapTexture.isEnvironmentTexture(true); sphereMapTexture.setInfluence(.5f); Material material2 = new Material(); // -- important, indicate that we want to mix the sphere map with a color material2.enableLighting(true); material2.setDiffuseMethod(new DiffuseMethod.Lambert()); try { material2.addTexture(sphereMapTexture); } catch (TextureException e) { e.printStackTrace(); } material2.setColorInfluence(.5f); Object3D jet2 = jet1.clone(false); jet2.setMaterial(material2); // -- also specify a color jet2.setColor(0xff666666); jet2.setY(-2.5f); addChild(jet2); Animation3D anim2 = new RotateAnimation3D(axis, -360); anim2.setRepeatMode(RepeatMode.INFINITE); anim2.setDuration(12000); anim2.setTransformable3D(jet2); registerAnimation(anim2); anim2.play(); getCurrentCamera().setPosition(0, 0, 14); }
protected void initScene() { DirectionalLight light = new DirectionalLight(0, -.6f, .4f); light.setPower(1); getCurrentScene().addLight(light); // -- create sky sphere mSphere = new Sphere(400, 8, 8); Material sphereMaterial = new Material(); try { sphereMaterial.addTexture(new Texture("skySphere", R.drawable.skysphere)); } catch (TextureException e1) { e1.printStackTrace(); } mSphere.setMaterial(sphereMaterial); mSphere.setDoubleSided(true); addChild(mSphere); try { // -- load gzipped serialized object ObjectInputStream ois; GZIPInputStream zis = new GZIPInputStream(mContext.getResources().openRawResource(R.raw.raptor)); ois = new ObjectInputStream(zis); mRaptor = new Object3D((SerializedObject3D) ois.readObject()); Material raptorMaterial = new Material(); raptorMaterial.setDiffuseMethod(new DiffuseMethod.Lambert()); raptorMaterial.enableLighting(true); raptorMaterial.addTexture(new Texture("raptorTex", R.drawable.raptor_texture)); mRaptor.setMaterial(raptorMaterial); mRaptor.setScale(.5f); addChild(mRaptor); } catch (Exception e) { e.printStackTrace(); } // -- create a bunch of cubes that will serve as orientation helpers mCubes = new Object3D[30]; mRootCube = new Cube(1); Material rootCubeMaterial = new Material(); rootCubeMaterial.setDiffuseMethod(new DiffuseMethod.Lambert()); rootCubeMaterial.enableLighting(true); try { rootCubeMaterial.addTexture(new Texture("camouflage", R.drawable.camouflage)); } catch (TextureException e) { e.printStackTrace(); } mRootCube.setMaterial(rootCubeMaterial); mRootCube.setY(-1f); // -- similar objects with the same material, optimize mRootCube.setRenderChildrenAsBatch(true); addChild(mRootCube); mCubes[0] = mRootCube; for (int i = 1; i < mCubes.length; ++i) { Object3D cube = mRootCube.clone(true); cube.setY(-1f); cube.setZ(i * 30); mRootCube.addChild(cube); mCubes[i] = cube; } // -- create a chase camera // the first parameter is the camera offset // the second parameter is the interpolation factor ChaseCamera chaseCamera = new ChaseCamera(new Vector3(0, 3, 16), .1f); // -- tell the camera which object to chase chaseCamera.setObjectToChase(mRaptor); // -- set the far plane to 1000 so that we actually see the sky sphere chaseCamera.setFarPlane(1000); replaceAndSwitchCamera(chaseCamera, 0); }