--- "Brobbey,Isaac (neuron)"
<[EMAIL PROTECTED]> wrote:
> Dear All:
>
> i have a branch Group with three children. All the
> children are also branch
> Groups which also contains 3D graphs like;
>
> BranchGroup createSceneGraph(Vector hix)
>     {
>         BranchGroup objRoot = new BranchGroup();
>
> objRoot.setCapability(BranchGroup.ALLOW_DETACH);
>
>
objRoot.setCapability(BranchGroup.ALLOW_CHILDREN_READ);
>
>
objRoot.setCapability(BranchGroup.ALLOW_CHILDREN_WRITE);
>
>
objRoot.setCapability(BranchGroup.ALLOW_CHILDREN_EXTEND);
>
>         for(int k =0;k<3;k++)
>                 {
>                 System.out.println("k="+k );
>
> objRoot.addChild(makeOneGraph(k,hix));
>                 }
>         return objRoot;
>     }
>
> i need some help with how to read and display the
> second and third children.
>
> this is the method i wrote:
>
> private void showChildren(boolean boon)
> {
>         if(boon != false && isRunning() )
>         {
>
>         //java.util.Enumeration enumChild =
> scene.getAllChildren();
>         //if (enumChild.hasMoreElements())
>         if (scene!=null)
>         {
>                 //System.out.println("enum
> size="+enumKids);
>         BranchGroup brg = (BranchGroup)
> scene.getChild(1);
>                 if (brg instanceof BranchGroup )
>                  {
>                         //brg.detach();
>                          GraphicsConfigTemplate3D
> template = new
> GraphicsConfigTemplate3D();
>         GraphicsEnvironment env =
> GraphicsEnvironment.getLocalGraphicsEnvironment();
>         GraphicsDevice device =
> env.getDefaultScreenDevice();
>         GraphicsConfiguration config =
> device.getBestConfiguration(template);
>
> JPopupMenu.setDefaultLightWeightPopupEnabled(false);
>                 Canvas3D canvax = new
> Canvas3D(config);
>                 canvax.addMouseListener(this);
>                 u2 = new SimpleUniverse(canvax);
>
>                 pickCanvas = new PickCanvas(canvax,
> brg);
>
>
pickCanvas.setMode(PickTool.GEOMETRY_INTERSECT_INFO);
>                 pickCanvas.setTolerance(0.0f);
>                 canvas.setCursor(new
> Cursor(Cursor.HAND_CURSOR));
>
>                 // cannot share cannot share canvas
> with multiple views.
>
>                 // get the view
>                 //view = u.getViewer().getView();
>                 //view.addCanvas3D(canvas);
>
>                 // This will move the ViewPlatform
> back a bit so the
>                 // objects in the scene can be
> viewed.
>                 ViewingPlatform viewingPlatform =
> u.getViewingPlatform();
>
> viewingPlatform.setNominalViewingTransform();
>
>         // add an orbit behavior to move the viewing
> platform
>         OrbitBehavior orbit = new
> OrbitBehavior(canvas,OrbitBehavior.STOP_ZOOM);
>         orbit.setSchedulingBounds(bounds);
>
> viewingPlatform.setViewPlatformBehavior(orbit);
>
>                 u2.addBranchGraph(brg);
>
>         JFrame f = new JFrame("test");
>         f.getContentPane().add(canvax,"Center");
>         f.setBounds(100,100,400,400);
>         f.setVisible(true);
>
> f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
>                 }
>         }
>
>
>         }
> }
>
> and this  is the ERROR:
>
>
> all children=3
> javax.media.j3d.MultipleParentException:
> Locale.addBranchGraph: Branch Group
> already has a parent
>         at
>
javax.media.j3d.Locale.addBranchGraph(Locale.java:158)
>         at
>
com.sun.j3d.utils.universe.SimpleUniverse.addBranchGraph(SimpleUniverse.java
> :356)
>         at
>
GraphicDisplay.showChildren(GraphicDisplay.java:1144)
>
> I am really out of ideas, any help will be reaaly
> Appreciated.
> i am 98& done.
>
> Isaac

My guess would be this code here:
BranchGroup brg = (BranchGroup) scene.getChild(1);
u2.addBranchGraph(brg);
is giving you the error. You would have to use
cloneTree(true) to add it without causing the error,
which you can't do on a live scene. So the only way I
can think of (on a live scene) would be to detach the
BranchGroup, and add a clone of it. You would have to
keep track of it's parent so you could re-add it,
otherwise you would just be moving it.

So something like.
brg.detach();
u2.addBranchGroup(brg.cloneTree(true));
scene.addChild(brg);

Here I'm assuming scene is a BranchGroup and you have
the capabilities set...

=====
See you later,


Brandon
-------------------------------
"Don't take it too seriously it's just life we'll win in the end."  Superchic[k]

__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA3D-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to