java.lang.Object | +--javax.media.j3d.Transform3D | +--java.awt.Component | +--java.awt.Canvas | +--javax.media.j3d.Canvas3D | +--javax.media.j3d.VirtualUniverse | +--com.sun.j3d.utils.universe.SimpleUniverse | +--javax.media.j3d.SceneGraphObject | +--javax.media.j3d.Node | +--javax.media.j3d.Group | +--javax.media.j3d.BranchGroup | +--javax.media.j3d.TransformGroup | +--javax.media.j3d.Leaf | +--javax.media.j3d.Shape3D | +--com.sun.j3d.utils.geometry.ColorCube
/* * Hello3D.java * 太田,やさしくわかるJava 3D,技術評論社,2003. */ import java.applet.Applet; import java.awt.BorderLayout; import javax.media.j3d.*; import javax.vecmath.*; import com.sun.j3d.utils.geometry.ColorCube; import com.sun.j3d.utils.universe.SimpleUniverse; public class Hello3D extends Applet { private Canvas3D canvas; private SimpleUniverse universe; public void init() { canvas=new Canvas3D( SimpleUniverse.getPreferredConfiguration()); universe=new SimpleUniverse(canvas); universe.getViewingPlatform(). setNominalViewingTransform(); universe.addBranchGraph(createSceneGraph()); setLayout(new BorderLayout()); add(canvas,BorderLayout.CENTER); } private BranchGroup createSceneGraph(){ BranchGroup root; Transform3D rotation,rotationX,rotationY; TransformGroup transform; root=new BranchGroup(); rotationX=new Transform3D(); rotationX.rotX(Math.PI/4.0); rotationY=new Transform3D(); rotationY.rotY(Math.PI/5.0); rotation=new Transform3D(); rotation.mul(rotationX,rotationY); transform=new TransformGroup(rotation); root.addChild(transform); transform.addChild(new ColorCube(0.4)); return root; } }ColorCubeクラスは,テスト用に,各面の色が違う立方体を 作るためのクラスである. ノードの座標系を指定するには,ノードに至る経路の間に TransformGroupノードを挟む. TransformGroupオブジェクトは,子ノードの座標系をあらわすTransoform3D オブジェクトを与えられて生成する.