annotate src/samer/j3d/ViewGroup.java @ 8:5e3cbbf173aa tip

Reorganise some more
author samer
date Fri, 05 Apr 2019 22:41:58 +0100
parents bf79fb79ee13
children
rev   line source
samer@0 1 /**
samer@0 2 ViewGroup.java
samer@0 3
samer@0 4 A View branch group containing a ViewPlatform
samer@0 5 and associated Views, Canvas3Ds and Windows to
samer@0 6 hold the canvases. Can be added dynamically
samer@0 7 to a live universe.
samer@0 8
samer@0 9 Parameters:
samer@0 10 initial placement
samer@0 11 autostart canvas?
samer@0 12 autostart view?
samer@0 13 keyboard navigator?
samer@0 14 various view policies
samer@0 15
samer@0 16 Requirements:
samer@0 17 must be placable (hence TransformGroup and ViewPlatform)
samer@0 18 must be Node so addable to universe
samer@0 19 renderable:
samer@0 20 view.renderOnce()
samer@0 21 view.startView()
samer@0 22 view.stopView()
samer@0 23 canvas.startRenderer()
samer@0 24 canvas.stopRenderer()
samer@0 25 ... ?
samer@0 26 disposable: cleans up properly
samer@0 27 must have accessible View and Canvas objects
samer@0 28 must manage multiple canvases for stereo
samer@0 29
samer@0 30 */
samer@0 31 package samer.j3d;
samer@0 32
samer@0 33 import samer.core.*;
samer@0 34 import javax.media.j3d.*;
samer@0 35 import javax.vecmath.*;
samer@0 36
samer@0 37
samer@0 38 public class ViewGroup extends BranchGroup
samer@0 39 {
samer@0 40 TransformGroup VT;
samer@0 41 ViewPlatform VP;
samer@0 42 ViewBase V;
samer@0 43
samer@0 44 public void lookFrom(Point3d eye, Vector3d up)
samer@0 45 {
samer@0 46 // view platform placement
samer@0 47 Transform3D t=new Transform3D();
samer@0 48 t.lookAt(eye, new Point3d(0,0,0), up);
samer@0 49 t.invert();
samer@0 50 VT.setTransform(t);
samer@0 51 }
samer@0 52
samer@0 53 public ViewGroup()
samer@0 54 {
samer@0 55 VT=new TransformGroup();
samer@0 56 VP=new ViewPlatform();
samer@0 57 lookFrom(
samer@0 58 new Point3d(X.doubleArray(Shell.getString("lookfrom","(0,1,8)"),3)),
samer@0 59 new Vector3d(0,1,0)
samer@0 60 );
samer@0 61 VT.addChild(VP);
samer@0 62 addChild(VT);
samer@0 63
samer@0 64 // addChild(new FPS(200));
samer@0 65 // setCapability(ALLOW_DETACH);
samer@0 66 // setCapability(ALLOW_CHILDREN_WRITE);
samer@0 67 }
samer@0 68
samer@0 69 public void attachView(View v) { v.attachViewPlatform(VP); }
samer@0 70 }