|
How to use the Capability |
|
|
Because of the performance, Once a branch graph is made live or compiled the Java
3D rendering system converts the branch graph to a more efficient internal representation.
At this time, we can't change any content in the branch graph unless the proper
capability is set.
This program illustrates how to set the property capability for modifing
the content of virtual world at runtime.
public class ModifyRuntime extends JFrame {
private BranchGroup scene=new BranchGroup();
private BranchGroup content=new BranchGroup();;
private JButton addBtn=new JButton("Add");
private JButton removeBtn=new JButton("Remove");
public ModifyRuntime() {
GraphicsConfiguration config = SimpleUniverse
.getPreferredConfiguration();
Canvas3D canvas3D = new Canvas3D(config);
content.addChild(new ColorCube(0.4));
// Set the Capabilities that is need by adding and removing
// the Cube
scene.setCapability(BranchGroup.ALLOW_CHILDREN_EXTEND);
scene.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE);
scene.setCapability(BranchGroup.ALLOW_DETACH);
content.setCapability(BranchGroup.ALLOW_DETACH);
// Compile the scene
scene.compile();
SimpleUniverse simpleU = new SimpleUniverse(canvas3D);
simpleU.getViewingPlatform().setNominalViewingTransform();
simpleU.addBranchGraph(scene);
getContentPane().add(canvas3D,BorderLayout.CENTER);
// Initialize GUI
addBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
scene.addChild(content);
addBtn.setEnabled(false);
removeBtn.setEnabled(true);
}
});
removeBtn.setEnabled(false);
removeBtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
scene.removeChild(content);
removeBtn.setEnabled(false);
addBtn.setEnabled(true);
}
});
JPanel panel=new JPanel();
panel.add(addBtn);
panel.add(removeBtn);
getContentPane().add(panel,BorderLayout.SOUTH);
}
public static void main(String[] args){
...
}
}
|
Related Tips
|
Page 1 of 0 ( 0 comments )
You can share your information about this topic using the form below!
Please do not post your questions with this form! Thanks.