package com.wizard.J3D.HelloJava3D;
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.GraphicsConfiguration;
import javax.media.j3d.Alpha;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.RotationInterpolator;
import javax.media.j3d.TransformGroup;
import javax.media.j3d.Transform3D;
import javax.vecmath.Point3d;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.universe.SimpleUniverse;
import com.sun.j3d.utils.geometry.ColorCube;
public class HelloJava3Dd extends Applet{
public BranchGroup createSceneGraph(){
BranchGroup objRoot = new BranchGroup();
TransformGroup objSpin = new TransformGroup();
objSpin.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
TransformGroup objRotation = new TransformGroup();
Transform3D rotate = new Transform3D();
//注意在这里是绕那个轴转!
rotate.rotX(Math.PI/5.0d);
objRotation.setTransform(rotate);
objRotation.addChild(objSpin);
objRoot.addChild(objRotation);
objSpin.addChild(new ColorCube(0.4));
///////////////////////////////////////////////////////
//
// 这一个Transform3D 是一个用来改变Y轴的方向的
// 这样就可以使 旋转的方向发生变化
//
//
Transform3D aixY = new Transform3D();
aixY.rotX((float)Math.PI*2.0d/3.0d);
// aixY.rotX((float)Math.PI/2.0d);
Alpha alpha = new Alpha(-1,4000);
RotationInterpolator rotation =
new RotationInterpolator(alpha,objSpin,aixY,0.0f,2.0f*(float)(Math.PI));
BoundingSphere bound =
new BoundingSphere(new Point3d(0.0d,0.0d,0.0d),1.0d);
rotation.setSchedulingBounds(bound);
objSpin.addChild(rotation);
objRoot.compile();
return objRoot;
}
public HelloJava3Dd() {
// TODO Auto-generated constructor stub
this.setLayout(new BorderLayout());
GraphicsConfiguration config =
SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas3D = new Canvas3D(config);
this.add("Center",canvas3D);
SimpleUniverse simpleU = new SimpleUniverse(canvas3D);
simpleU.getViewingPlatform().setNominalViewingTransform();
BranchGroup scene = this.createSceneGraph();
simpleU.addBranchGraph(scene);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Frame frame = new MainFrame(new HelloJava3Dd(),256,256);
}
}// end for class HelloJava3Dd