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