use of javax.media.j3d.TransformGroup in project ffx by mjschnie.
the class GraphicsCanvas method initialize.
/**
* Initialization of the GraphisCanvas.
*/
private void initialize() {
setBackground(Color.black);
universe = new SimpleUniverse(this);
SimpleUniverse.setJ3DThreadPriority(Thread.MAX_PRIORITY);
universe.getViewingPlatform().setNominalViewingTransform();
// Create the Scene Root BranchGroup
BranchGroup objRoot = new BranchGroup();
baseTransformGroup = new TransformGroup();
Transform3D t3d = new Transform3D();
t3d.setScale(0.1d);
baseTransformGroup.setTransform(t3d);
baseTransformGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
baseTransformGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
// Set the Background
Color3f bgColor = new Color3f(RendererCache.BLACK);
background = new Background(bgColor);
background.setCapability(Background.ALLOW_COLOR_READ);
background.setCapability(Background.ALLOW_COLOR_WRITE);
bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 2000.0);
background.setApplicationBounds(bounds);
// Create lights
AmbientLight aLgt = new AmbientLight(new Color3f(Color.darkGray));
aLgt.setInfluencingBounds(bounds);
Vector3f dir = new Vector3f(0.0f, -1.0f, -1.0f);
Color3f dLgtColor = new Color3f(Color.lightGray);
DirectionalLight dLgt = new DirectionalLight(dLgtColor, dir);
dLgt.setInfluencingBounds(bounds);
dir = new Vector3f(0.0f, 1.0f, -1.0f);
dLgtColor = new Color3f(0.1f, 0.1f, 0.1f);
DirectionalLight dLgt2 = new DirectionalLight(dLgtColor, dir);
dLgt2.setInfluencingBounds(bounds);
// Create the Base of the Molecular Scene
baseBranchGroup = new BranchGroup();
baseBranchGroup.setCapability(BranchGroup.ALLOW_CHILDREN_EXTEND);
baseBranchGroup.setCapability(BranchGroup.ALLOW_CHILDREN_READ);
baseBranchGroup.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE);
baseBranchGroup.setCapability(BranchGroup.ALLOW_BOUNDS_READ);
// Add children created above to the base TransformGroup
baseTransformGroup.addChild(background);
baseTransformGroup.addChild(baseBranchGroup);
objRoot.addChild(baseTransformGroup);
// Position the view platmform and add lights
View v = universe.getViewer().getView();
v.setProjectionPolicy(View.PARALLEL_PROJECTION);
v.setFrontClipPolicy(View.VIRTUAL_EYE);
v.setFrontClipDistance(1.0);
v.setBackClipPolicy(View.VIRTUAL_EYE);
v.setBackClipDistance(10.0);
v.setTransparencySortingPolicy(View.TRANSPARENCY_SORT_NONE);
Transform3D trans = new Transform3D();
trans.set(new Vector3d(0.0d, 0.0d, 2.0d));
TransformGroup vptg = universe.getViewingPlatform().getViewPlatformTransform();
vptg.setTransform(trans);
BranchGroup viewBranch = new BranchGroup();
viewBranch.addChild(aLgt);
viewBranch.addChild(dLgt);
viewBranch.addChild(dLgt2);
vptg.addChild(viewBranch);
// Initialize Behaviors
graphicsAxis = new GraphicsAxis(universe.getViewingPlatform(), this, bounds);
graphicsEvents = new GraphicsEvents(mainPanel, this, graphicsAxis, universe, bounds, baseBranchGroup, baseTransformGroup);
baseBranchGroup.addChild(graphicsEvents);
rendererPicking = new GraphicsPicking(baseBranchGroup, bounds, this, mainPanel);
baseBranchGroup.addChild(rendererPicking);
renderer = new ffx.potential.Renderer(bounds, mainPanel.getStatusBar());
baseBranchGroup.addChild(renderer);
// Compile the Root BranchGroup and add it to the Universe
objRoot.compile();
universe.addBranchGraph(objRoot);
}
Aggregations