Example3.java
上传用户:gyyuli
上传日期:2013-07-09
资源大小:3050k
文件大小:3k
源码类别:

J2ME

开发平台:

Java

  1. import javax.microedition.m3g.*;
  2. /**
  3.  * Animation and interpolation test.
  4.  *
  5.  * The result should be a smoothly rotating white cube over a black
  6.  * "floor".
  7.  *
  8.  */
  9. public class Example3 extends ExampleBase
  10. {
  11.     private World iWorld;
  12.     public Example3()
  13.     {
  14.         super(SHOW_RENDER_TIME);
  15.     }
  16.     protected void render(int time)
  17.     {
  18.         iWorld.animate(time);
  19.         iWorld.align(null);
  20.         Graphics3D.getInstance().render(iWorld);
  21.     }
  22.     protected void initialize()
  23.     {
  24.         iWorld = new World();
  25.         Mesh box = createBox();
  26.         Background bg = new Background();
  27.         bg.setColor(0xff204080);
  28.         iWorld.setBackground(bg);
  29.         Camera camera = new Camera();
  30.         camera.setPerspective(90.0f, 1.0f, 1.0f, 100.0f);
  31.         camera.setTranslation(0.0f, 0.0f, 30.0f);
  32.         iWorld.addChild(camera);
  33.         iWorld.setActiveCamera(camera);
  34.         Light light = new Light();
  35.         light.setTranslation(0.0f, 0.0f, 30.0f);
  36.         iWorld.addChild(light);
  37.         Node ground = (Node)box.duplicate();
  38.         ground.setTranslation(0.0f, -15.0f, 0.0f);
  39.         ground.setScale(2.0f, 0.1f, 2.0f);
  40.         iWorld.addChild(ground);
  41.         for (int i = 0; i < 1; i++)
  42.         {
  43.             int num = 5;
  44.             int duration = 3000;
  45.             int comps = 4;
  46.             Node node = (Node)box.duplicate();
  47.             node.setScale(0.5f, 0.5f, 0.5f);
  48.             iWorld.addChild(node);
  49.    //       KeyframeSequence seq = new KeyframeSequence(num, comps, KeyframeSequence.LINEAR);
  50.          KeyframeSequence seq = new KeyframeSequence(num, comps, KeyframeSequence.SLERP);
  51. //          KeyframeSequence seq = new KeyframeSequence(num, comps, KeyframeSequence.SPLINE);
  52.     //        KeyframeSequence seq = new KeyframeSequence(num, comps, KeyframeSequence.SQUAD);
  53. //          KeyframeSequence seq = new KeyframeSequence(num, comps, KeyframeSequence.STEP);
  54. //          seq.setRepeatMode(KeyframeSequence.CONSTANT);
  55.             seq.setRepeatMode(KeyframeSequence.LOOP);
  56.             seq.setDuration(duration);
  57.             for (int j = 0; j < num; j++)
  58.             {
  59.                 float[] value = new float[comps];
  60.                 for (int k = 0; k < comps; k++)
  61.                 {
  62.                     value[k] = ((float)random() - 0.5f) * 30.0f;
  63.                 }
  64.                 seq.setKeyframe(j, (j * 2 + 1) * duration / (num * 2), value);
  65.             }
  66.             AnimationController ctrl = new AnimationController();
  67. //          AnimationTrack track = new AnimationTrack(seq, AnimationTrack.TRANSLATION);
  68.             AnimationTrack track = new AnimationTrack(seq, AnimationTrack.ORIENTATION);
  69.             track.setController(ctrl);
  70.             node.addAnimationTrack(track);
  71.         }
  72.     }
  73. }