// Java 3D Test Applet // BoxApplet.java // Copyright (c) 1999 ENDO Yasuyuki // mailto:yasuyuki@javaopen.org // http://www.javaopen.org/j3dbook/index.html import java.applet.*; import java.awt.*; import javax.media.j3d.*; import javax.vecmath.*; import com.sun.j3d.utils.applet.MainFrame; import com.sun.j3d.utils.universe.SimpleUniverse; import com.sun.j3d.utils.geometry.Box; import com.sun.j3d.utils.behaviors.picking.PickRotateBehavior; import com.sun.j3d.utils.behaviors.picking.PickTranslateBehavior; import com.sun.j3d.utils.behaviors.picking.PickZoomBehavior; public class BoxApplet extends Applet { private Canvas3D canvas = null; public BoxApplet() { GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration(); this.canvas = new Canvas3D(config); this.setLayout(new BorderLayout()); this.add(this.canvas, BorderLayout.CENTER); SimpleUniverse universe = new SimpleUniverse(canvas); universe.getViewingPlatform().setNominalViewingTransform(); universe.addBranchGraph(createSceneGraph()); } private BranchGroup createSceneGraph() { BranchGroup root = new BranchGroup(); root.addChild(createLight()); TransformGroup trans = new TransformGroup(); trans.setCapability(TransformGroup.ALLOW_TRANSFORM_READ); trans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); trans.setCapability(TransformGroup.ENABLE_PICK_REPORTING); BoundingSphere bounds = new BoundingSphere(new Point3d(), 100.0); PickRotateBehavior rotator = new PickRotateBehavior(root, this.canvas, bounds); root.addChild(rotator); PickTranslateBehavior translator = new PickTranslateBehavior(root, this.canvas, bounds); root.addChild(translator); PickZoomBehavior zoomer = new PickZoomBehavior(root, this.canvas, bounds); root.addChild(zoomer); Box box = new Box( 0.1f, 0.4f, 0.9f, Box.GENERATE_NORMALS, createAppearance()); trans.addChild(box); root.addChild(trans); return root; } private Appearance createAppearance() { Appearance app = new Appearance(); Material mat = new Material(); mat.setDiffuseColor(0.0f, 0.0f, 1.0f); app.setMaterial(mat); return app; } private Light createLight() { DirectionalLight light = new DirectionalLight( true, new Color3f(1.0f, 1.0f, 1.0f), new Vector3f(0.0f, 0.0f, -1.0f)); light.setInfluencingBounds(new BoundingSphere(new Point3d(), 100.0)); return light; } public static void main(String[] args) { BoxApplet applet = new BoxApplet(); Frame frame = new MainFrame(applet, 250, 250); } }