Mercurial > hg > jslab
view src/samer/j3d/J3DViewerImmediate.java.not @ 0:bf79fb79ee13
Initial Mercurial check in.
author | samer |
---|---|
date | Tue, 17 Jan 2012 17:50:20 +0000 |
parents | |
children |
line wrap: on
line source
/* */ package samer.j3d; import samer.core.*; import samer.core.types.*; import samer.maths.*; import samer.tools.*; import java.io.*; import java.awt.event.*; import javax.media.j3d.*; import javax.vecmath.*; public class J3DViewerImmediate extends Util implements Task { Root root=new Root(); Background bg; Geometry geom; Appearance app; Viewer V; TaskList tasks; VDouble speed, scale; GraphicsContext3D gc; Transform3D mt=new Transform3D(); Canvas3D canvas; float angle=0; public J3DViewerImmediate(Matrix P, VVector A) throws Exception { if (P==null) { Shell.print("creating PointsMatrix"); P=new Matrix("PointsMatrix",A.size(),3); new MatrixAgent(P).execute("load",Shell.env()); } // create scene bg=new Background(new Color3f(0.26f,0.23f,0.35f)); // geom=new MatrixPointArrayAlpha(P,A); // app=transparent(0,points(new Appearance())); geom= // new MatrixPointArray(P,A); new MatrixPoints4D(P,A); app=transparent(0,points()); V=new Viewer("particles"); // remember to stop canvas renderers root.addChild(V); root.compile(); root.golive(); // Shell.registerAgent(this); // Shell.exposeCommands(this); Shell.push(V.node); speed=new VDouble("speed",0.1); scale=new VDouble("scale",1); Shell.pop(); canvas=V.V.canvas; canvas.stopRenderer(); tasks=(TaskList)Shell.get("taskList"); tasks.addTask(this); } public void stopping() { Shell.print("view stopping"); } public void starting() { Shell.print("view starting"); if (gc==null) gc = canvas.getGraphicsContext3D(); gc.setAppearance(app); // gc.setBackground(bg); } public void run() { mt.rotY(angle+=speed.value); mt.setScale(scale.value); gc.clear(); gc.setModelTransform(mt); gc.draw(geom); canvas.swap(); } public void dispose() { // Shell.deregisterAgent(this); tasks.removeTask(this); V.dispose(); } }