/*--------------*/ /* Ja41.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 Ja41 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(){ //Transform3Dオブジェクト Transform3D trans = new Transform3D(); //平行移動用 Transform3D rot = new Transform3D(); //回転用 BranchGroup branchG0 = new BranchGroup(); //背景色の設定(設定が無い場合は黒) Background background = new Background(new Color3f(0.3f, 0.3f, 0.3f)); background.setApplicationBounds(bounds); branchG0.addChild(background); //[時計盤(大)]Appearance1を作成 Appearance ap1 = new Appearance(); ColoringAttributes ca1 = new ColoringAttributes(); ca1.setColor(new Color3f( 0.5f, 0.9f, 0.5f)); ap1.setColoringAttributes(ca1); //[時計盤(小)]Appearance2を作成 Appearance ap2 = new Appearance(); ColoringAttributes ca2 = new ColoringAttributes(); ca2.setColor(new Color3f( 0.7f, 1.0f, 0.7f)); ap2.setColoringAttributes(ca2); //[台]Appearance3を作成 Appearance ap3 = new Appearance(); ColoringAttributes ca3 = new ColoringAttributes(); ca3.setColor(new Color3f( 1.0f, 1.0f, 0.4f)); ap3.setColoringAttributes(ca3); //transG0:以下の幾何変換の取りまとめノード TransformGroup transG0 = new TransformGroup(); branchG0.addChild(transG0); //[時計盤]を作成 rot.rotX(Math.PI/2); //90度回転 TransformGroup transG1 = new TransformGroup(rot); transG0.addChild(transG1); Cylinder cylinder1 = new Cylinder(0.60f, 0.30f, ap1); Cylinder cylinder2 = new Cylinder(0.42f, 0.31f, ap2); transG1.addChild(cylinder1); transG1.addChild(cylinder2); //[台]を作成 trans.setTranslation(new Vector3f(0.0f, -0.65f, 0.0f)); TransformGroup transG2 = new TransformGroup(trans); transG0.addChild(transG2); Box box1 = new Box(0.5f, 0.1f, 0.3f, ap3); transG2.addChild(box1); branchG0.compile(); return branchG0; } public void destroy(){ simpleU.cleanup(); } public static void main(String[] args){ //Application MainFrame frame = new MainFrame(new Ja41(), 512, 512); } }