diff examples/java3d/hello9.java @ 1:5df24c91468d

Oh my what a mess.
author samer
date Fri, 05 Apr 2019 16:26:00 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/java3d/hello9.java	Fri Apr 05 16:26:00 2019 +0100
@@ -0,0 +1,97 @@
+/*
+		hello9.java
+
+		Construct universe without using SimpleUniverse 
+		utility class - this puts together the view
+		group explicitly.
+
+		Shading
+ */
+
+import samer.core.*;
+import java.awt.event.*;
+import java.awt.*;
+import javax.media.j3d.*;
+import javax.vecmath.*;
+import com.sun.j3d.utils.geometry.*;
+
+public class hello9 extends util implements Agent
+{
+	// create universe
+	LocalUniverse	U=new LocalUniverse();
+	BranchGroup		root=new BranchGroup();
+	
+	public static void main(String[] arse) { init(); new hello9(); }
+
+	public hello9()
+	{		
+		// create scene
+		// root.addChild(pointLight(2,2,2,new Color3f(1f,1f,1f)));
+		root.addChild(color(pointLight(0,1,0),new Color3f(.2f,.1f,0.1f)));
+		root.addChild(directionalLight(6,-1,4));
+		root.addChild(ambientLight());
+
+		root.addChild(createSceneGraph());
+		root.addChild(new Viewer("view"));
+		root.setCapability(Group.ALLOW_CHILDREN_EXTEND);
+		root.setCapability(Group.ALLOW_CHILDREN_WRITE);
+		root.compile();
+		
+		U.addGroup(root);
+
+		Shell.registerAgent(this);
+		Shell.exposeCommands(this);
+	}
+
+	private static Group createSceneGraph()
+	{
+		Transform3D		r=new Transform3D();
+		r.rotX(1.1);
+		r.setScale(0.5);
+
+		TransformGroup  t2=new TransformGroup(r);
+		GeometryInfo gi=yoyoGeometryInfo(32);
+		new NormalGenerator().generateNormals(gi);
+
+		Geometry g=gi.getGeometryArray();
+		Shape3D faces=new Shape3D();
+		Shape3D edges=new Shape3D();
+		faces.setGeometry(g); faces.setAppearance(material1()); 
+		edges.setGeometry(g); edges.setAppearance(shadedwireframe());
+
+		TransformGroup	tg = new TransformGroup();
+		addRotator(tg);
+		t2.addChild(faces);
+		t2.addChild(edges);
+		tg.addChild(t2);
+
+		return tg;
+	}
+
+	public void getCommands(Agent.Registry r) { 
+		r.add("view").add("axis");
+		r.setTarget(null); 
+		r.add("start").add("stop"); 
+	}
+
+	public void execute(String cmd, Environment env) throws Exception
+	{
+		if (cmd.equals("view")) { 
+			root.addChild(new Viewer(X.string(env.datum("name"),"view")));
+		} else if (cmd.equals("axis")) {
+			Transform3D t3d=new Transform3D();
+			t3d.set(0.5);
+
+			TransformGroup tg=new TransformGroup(t3d);
+			BranchGroup bg=new BranchGroup();
+			Axis axis=new Axis();
+
+			axis.setAppearance(wireframe1());
+			tg.addChild(axis);
+			bg.addChild(tg);
+			bg.compile();
+			root.addChild(bg);
+		}
+
+	}
+}
\ No newline at end of file