package com.wizard.J3D.HelloJava3D;
import java.applet.Applet;
import java.awt.Frame;
import java.awt.GraphicsConfiguration;
import java.awt.BorderLayout;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.universe.SimpleUniverse;
public class HelloJava3Db extends Applet{
//这是sun《Java指南》的例子
public HelloJava3Db() {
// 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);
BranchGroup scene = this.createSceneGraph();
simpleU.getViewingPlatform().setNominalViewingTransform();
simpleU.addBranchGraph(scene);
}// end for HelloJava3Db (constructor)
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Frame frame = new MainFrame(new HelloJava3Db(),256,256);
}
public BranchGroup createSceneGraph(){
// Create the root of the branch graph
BranchGroup objRoot = new BranchGroup();
objRoot.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
TransformGroup objRotate = new TransformGroup();
//objRotate.addChild(rotate);
objRotate.addChild(new ColorCube(0.4));
objRoot.addChild(objRotate);
// rotate object has composited transformation matrix
Transform3D rotate = new Transform3D();
Transform3D tempRotate = new Transform3D();
//////////////////////////////////////////////////
// 在这里可以改变魔方的位置
// 如果需要改变为以Z轴为中心旋转,那就用rotZ(double arg0)这个方法
// 当我们想平移的话可以这样,使用rotate.setTranslation(arg0)
// arg0 是一个位移的矩阵
//
rotate.rotX(Math.PI/4.0d);
tempRotate.rotY(Math.PI/5.0d);
rotate.mul(tempRotate);// 使用这个方法,我们可以把旋转组合起来
////////////////////////////////////////////////
//
// 要记得把叶加入节点中
//
objRotate.setTransform(rotate);
objRoot.compile();
return objRoot;
}// end for CreateSceneGraph methord of HelloJava3D
}