import javax.media.j3d.*; // Canvas3D etc import java.applet.Applet; // Applet import java.awt.BorderLayout; // BorderLayout, Frame import com.sun.j3d.utils.applet.MainFrame; // MainFrame import com.sun.j3d.utils.universe.*; import java.awt.Frame; import com.sun.j3d.utils.behaviors.mouse.*; import javax.vecmath.*; public class Prog4 extends Applet { public Prog4() { setLayout ( new BorderLayout() ); Canvas3D c = new Canvas3D ( null ); add ( "Center", c ); BranchGroup scene = createSceneGraph(); createLights ( scene ); SimpleUniverse u = new SimpleUniverse ( c ); u.getViewingPlatform().setNominalViewingTransform(); u.addBranchGraph ( scene ); } /* from SpinMouse.java */ private TransformGroup defaultMouseGroup() { TransformGroup mouseGroup = new TransformGroup(); mouseGroup.setCapability ( TransformGroup.ALLOW_TRANSFORM_READ ); mouseGroup.setCapability ( TransformGroup.ALLOW_TRANSFORM_WRITE ); BoundingSphere bounds = new BoundingSphere ( new Point3d ( 0.0, 0.0, 0.0 ), 100.0 ); MouseRotate behavior1 = new MouseRotate ( mouseGroup ); mouseGroup.addChild ( behavior1 ); behavior1.setSchedulingBounds ( bounds ); MouseZoom behavior2 = new MouseZoom ( mouseGroup ); mouseGroup.addChild ( behavior2 ); behavior2.setSchedulingBounds ( bounds ); MouseTranslate behavior3 = new MouseTranslate ( mouseGroup ); mouseGroup.addChild ( behavior3 ); behavior3.setSchedulingBounds ( bounds ); return mouseGroup; } /* from Lit.java, lighting off by default? No off if setAppearance(null) */ private void createLights ( BranchGroup graphRoot ) { BoundingSphere bounds = new BoundingSphere ( new Point3d ( 0.0, 0.0, 0.0 ), 100.0 ); Color3f ambientLightColor = new Color3f ( 0.2f, 0.2f, 0.2f ); AmbientLight ambientLight = new AmbientLight ( ambientLightColor ); ambientLight.setInfluencingBounds ( bounds ); graphRoot.addChild ( ambientLight ); Color3f lightColor = new Color3f ( 0.9f, 0.9f, 0.9f ); Vector3f direction = new Vector3f ( 1.0f, 1.0f, -1.0f ); DirectionalLight light1 = new DirectionalLight( lightColor, direction ); light1.setInfluencingBounds ( bounds ); graphRoot.addChild ( light1 ); } private BranchGroup createSceneGraph() { BranchGroup objRoot = new BranchGroup(); TransformGroup objTrans = defaultMouseGroup(); objRoot.addChild ( objTrans ); NormalTetra x = new NormalTetra(); objTrans.addChild ( x ); return objRoot; } public static void main ( String[] args ) { Frame frame = new MainFrame ( new Prog4(), 256, 256 ); } }