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 }
|