/*--------------*/ /* Ex51.java */ /*--------------*/ import java.applet.Applet; import java.awt.*; //BorderLayout,GraphicsConfiguration,event import javax.media.j3d.*; //Java3d import com.sun.j3d.utils.applet.MainFrame; //MainFrame import com.sun.j3d.utils.universe.*; //SimpleUniverse import com.sun.j3d.utils.geometry.*; //Primitive import javax.vecmath.*; //Point3f,Color3f public class Ex51 extends Applet{ private SimpleUniverse simpleU; private BoundingSphere bounds = new BoundingSphere(new Point3d(), 10.0); public void init(){ //アプレットの中央にCanvas3Dを追加 setLayout(new BorderLayout()); Canvas3D canvas = new Canvas3D(SimpleUniverse.getPreferredConfiguration()); add(canvas, BorderLayout.CENTER); //シーングラフの生成 simpleU = new SimpleUniverse(canvas); simpleU.getViewingPlatform().setNominalViewingTransform(); //シーングラフの作成 simpleU.addBranchGraph(createSceneGraph()); } private BranchGroup createSceneGraph(){ BranchGroup branchG0 = new BranchGroup(); //背景色の設定(設定が無い場合は黒) Background background = new Background(new Color3f(0.3f, 0.3f, 0.3f)); background.setApplicationBounds(bounds); branchG0.addChild(background); //Interpolator用のノード TransformGroup transG0 = new TransformGroup(); branchG0.addChild(transG0); //ColorCubeの生成 ColorCube colorCube = new ColorCube(0.2f); transG0.addChild(colorCube); //平行移動のアニメーション設定 transG0.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); Transform3D transAxis = new Transform3D(); //X軸方向 transAxis.rotZ(Math.PI/2); //90度回転 <=====add Alpha positionAlpha = new Alpha(-1, //無限に繰返し Alpha.DECREASING_ENABLE, //減少有効 2000, 0, //起動時間,変化開始までの時間 3000, 0, 0, //増加時間,加速時間,停止時間 4000, 2000, 0); //減少時間,加速時間,停止時間 PositionInterpolator translator = //X軸方向の平行移動 new PositionInterpolator(positionAlpha, //Alphaオブジェクト transG0, transAxis,//対象ノード、移動軸 -0.7f, 0.7f); //開始位置,終了位置 translator.setSchedulingBounds(bounds); transG0.addChild(translator); branchG0.compile(); return branchG0; } public void destroy(){ simpleU.cleanup(); } public static void main(String[] args){ //Application MainFrame frame = new MainFrame(new Ex51(), 512, 512); } }