samer@1: /* samer@1: hello9.java samer@1: samer@1: Construct universe without using SimpleUniverse samer@1: utility class - this puts together the view samer@1: group explicitly. samer@1: samer@1: Shading samer@1: */ samer@1: samer@1: import samer.core.*; samer@1: import java.awt.event.*; samer@1: import java.awt.*; samer@1: import javax.media.j3d.*; samer@1: import javax.vecmath.*; samer@1: import com.sun.j3d.utils.geometry.*; samer@1: samer@1: public class hello9 extends util implements Agent samer@1: { samer@1: // create universe samer@1: LocalUniverse U=new LocalUniverse(); samer@1: BranchGroup root=new BranchGroup(); samer@1: samer@1: public static void main(String[] arse) { init(); new hello9(); } samer@1: samer@1: public hello9() samer@1: { samer@1: // create scene samer@1: // root.addChild(pointLight(2,2,2,new Color3f(1f,1f,1f))); samer@1: root.addChild(color(pointLight(0,1,0),new Color3f(.2f,.1f,0.1f))); samer@1: root.addChild(directionalLight(6,-1,4)); samer@1: root.addChild(ambientLight()); samer@1: samer@1: root.addChild(createSceneGraph()); samer@1: root.addChild(new Viewer("view")); samer@1: root.setCapability(Group.ALLOW_CHILDREN_EXTEND); samer@1: root.setCapability(Group.ALLOW_CHILDREN_WRITE); samer@1: root.compile(); samer@1: samer@1: U.addGroup(root); samer@1: samer@1: Shell.registerAgent(this); samer@1: Shell.exposeCommands(this); samer@1: } samer@1: samer@1: private static Group createSceneGraph() samer@1: { samer@1: Transform3D r=new Transform3D(); samer@1: r.rotX(1.1); samer@1: r.setScale(0.5); samer@1: samer@1: TransformGroup t2=new TransformGroup(r); samer@1: GeometryInfo gi=yoyoGeometryInfo(32); samer@1: new NormalGenerator().generateNormals(gi); samer@1: samer@1: Geometry g=gi.getGeometryArray(); samer@1: Shape3D faces=new Shape3D(); samer@1: Shape3D edges=new Shape3D(); samer@1: faces.setGeometry(g); faces.setAppearance(material1()); samer@1: edges.setGeometry(g); edges.setAppearance(shadedwireframe()); samer@1: samer@1: TransformGroup tg = new TransformGroup(); samer@1: addRotator(tg); samer@1: t2.addChild(faces); samer@1: t2.addChild(edges); samer@1: tg.addChild(t2); samer@1: samer@1: return tg; samer@1: } samer@1: samer@1: public void getCommands(Agent.Registry r) { samer@1: r.add("view").add("axis"); samer@1: r.setTarget(null); samer@1: r.add("start").add("stop"); samer@1: } samer@1: samer@1: public void execute(String cmd, Environment env) throws Exception samer@1: { samer@1: if (cmd.equals("view")) { samer@1: root.addChild(new Viewer(X.string(env.datum("name"),"view"))); samer@1: } else if (cmd.equals("axis")) { samer@1: Transform3D t3d=new Transform3D(); samer@1: t3d.set(0.5); samer@1: samer@1: TransformGroup tg=new TransformGroup(t3d); samer@1: BranchGroup bg=new BranchGroup(); samer@1: Axis axis=new Axis(); samer@1: samer@1: axis.setAppearance(wireframe1()); samer@1: tg.addChild(axis); samer@1: bg.addChild(tg); samer@1: bg.compile(); samer@1: root.addChild(bg); samer@1: } samer@1: samer@1: } samer@1: }