import javax.vecmath.*; import javax.media.j3d.*; import com.sun.j3d.utils.universe.*; import com.sun.j3d.utils.geometry.*; import java.awt.GraphicsConfiguration; import java.awt.BorderLayout; import java.awt.Label; import java.awt.*; import javax.swing.*; import java.applet.Applet; //import java.*; public class HelloUniverse extends Applet { public BranchGroup createSceneGraph() { // Create the root of the branch graph BranchGroup objRoot = new BranchGroup(); // Create the TransformGroup node and initialize it to the // identity. Enable the TRANSFORM_WRITE capability so that // our behavior code can modify it at run time. Add it to // the root of the subgraph. TransformGroup objTrans = new TransformGroup(); objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); objRoot.addChild(objTrans); Appearance ap = new Appearance(); ColoringAttributes ca = new ColoringAttributes(0.1f,0.3f,0.3f,0); // Create a simple Shape3D node; add it to the scene graph. // objTrans.addChild(new ColorCube(0.4)); // ap = new Appearance(); // ca = new ColoringAttributes(0.7f,0.3f,0.3f,0); // ap.setColoringAttributes(ca); // objTrans.addChild(new Cone(0.43f, 0.2f, ap)); // Create a new Behavior object that will perform the // desired operation on the specified transform and add // it into the scene graph. Transform3D yAxis = new Transform3D(); Alpha rotationAlpha = new Alpha(-1, 4000); RotationInterpolator rotator = new RotationInterpolator( rotationAlpha, objTrans, yAxis, 0.0f, (float) Math.PI*2.0f ); BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0); rotator.setSchedulingBounds(bounds); objRoot.addChild(rotator); // Have Java 3D perform optimizations on this scene graph. objRoot.compile(); return objRoot; } public HelloUniverse() { /// setLayout(new GridLayout(1,2)); GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration(); Canvas3D canvas3d = new Canvas3D(config); JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); JButton addJoint = new JButton("add a joint"); JPanel panelJoints = new JPanel(); panelJoints.setLayout(new FlowLayout()); AddJoint listener = new AddJoint(this, panelJoints); addJoint.addActionListener(listener); //add("North", addJoint); add(canvas3d); add(panel); panel.add("North", addJoint); panel.add("Center", panelJoints); // Create the scene; attach it to the virtual universe BranchGroup scene = createSceneGraph(); SimpleUniverse u = new SimpleUniverse(canvas3d); u.getViewingPlatform().setNominalViewingTransform(); u.addBranchGraph(scene); } }