I did what you said and the result was that
Exception in thread "main" javax.media.j3d.MultipleParentException:
Group.addChi
ld: child already has a parent
at
javax.media.j3d.GroupRetained.checkValidChild(GroupRetained.java:440)
at javax.media.j3d.GroupRetained.addChild(GroupRetained.java:449)
at javax.media.j3d.Group.addChild(Group.java:266)
at CallClass.<init>(CallClass.java:45)
at CallClass.main(CallClass.java:74)
----- Original Message -----
From: Silvano Maneck Malfatti <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Tuesday, June 17, 2003 7:37 PM
Subject: Re: [JAVA3D] Calling a class error
> I suggest you to do a method that return the shape3D ....
>
>
> For example
>
>
> Class Polyhedron
> {
> .
> .
> .
>
> Shape3D getPolyedron()
> {
>
> shape.setGeometry(myPolyhedron);
> return shape;
> }
>
> }
>
>
>
> So, in the second class you must use this:
>
>
> Polyhedron polyhedron=new Polyhedron();
> >
> > BranchGroup group = new BranchGroup();
> >
> > group.addChild(polyhedron.getPolyedron());
> >
> > universe.getViewingPlatform().setNominalViewingTransform();
> >
> > universe.addBranchGraph(group);
>
>
>
>
>
>
> Citando ������� <[EMAIL PROTECTED]>:
>
> > I have a the following class which make a polyhedron
> > -----------------------------------------
> > import com.sun.j3d.utils.geometry.*;
> > import javax.media.j3d.*;
> > import java.awt.*;
> > import javax.vecmath.*;
> > import javax.media.j3d.GeometryArray;
> > import java.applet.Applet;
> > import com.sun.j3d.utils.geometry.GeometryInfo;
> >
> >
> > public class Polyhedron extends Applet
> > {
> >
> > public Polyhedron()
> >
> > { Point3f[] pts=new Point3f[20];
> >
> > pts[0]= new Point3f( 0.0f, 0.0f, 1.1547f);
> > pts[1]= new Point3f( 1.0f, 0.0f, 0.57735f);
> > pts[2]= new Point3f( 0.333333f, 0.942809f, 0.57735f);
> > pts[3]= new Point3f( -1.0f, 0.0f, 0.57735f);
> > pts[4]= new Point3f( -0.333333f, -0.942809f, 0.57735f);
> > pts[5]= new Point3f( 1.0f, 0.0f, -0.57735f);
> > pts[6]= new Point3f( 0.666667f, -0.942809f, 0.0f);
> > pts[7]= new Point3f( -0.666667f, 0.942809f, 0.0f);
> > pts[8]= new Point3f( 0.333333f, 0.942809f, -0.57735f);
> > pts[9]= new Point3f( -1.0f, 0.0f, -0.57735f);
> > pts[10]= new Point3f( -0.333333f, -0.942809f, -0.57735f);
> > pts[11]= new Point3f( 0.0f, 0.0f, -1.1547f);
> >
> >
> > // the faces
> > int[] indices={2, 1, 0,
> > 0, 3, 4,
> > 1, 6, 5,
> > 2,8,7,
> > 3,7,9,
> > 4,10,6,
> > 5,11,8,
> > 9,11,10,
> > 0,2,7,3,
> > 0,4,6,1,
> > 1,5,8,2,
> > 3,9,10,4,
> > 5,6,10,11,
> > 7,8,11,9
> >
> > };
> >
> > // the number of vertices of each face
> > int[] stripCounts={3,3,3,3,3,3,3,3,4,4,4,4,4,4};
> >
> >
> > // I like Geometry Info. It's easier to create shapes ;-)
> > GeometryInfo gi = new GeometryInfo(GeometryInfo.POLYGON_ARRAY);
> > // initialize the geometry info here
> >
> > gi.setCoordinateIndices(indices);
> > gi.setCoordinates(pts);
> > gi.setStripCounts(stripCounts);
> > gi.recomputeIndices();
> >
> >
> > NormalGenerator ng = new NormalGenerator();
> > ng.generateNormals(gi);
> > gi.recomputeIndices();
> > // stripify
> > Stripifier st = new Stripifier();
> > st.stripify(gi);
> > gi.recomputeIndices();
> >
> > GeometryArray myPolyhedron = gi.getGeometryArray();
> >
> > Shape3D shape = new Shape3D();
> >
> > shape.setGeometry(myPolyhedron);
> >
> > Appearance app = new Appearance();
> > Material mat = new Material();
> > PolygonAttributes polyAtt= new
> >
PolygonAttributes(PolygonAttributes.POLYGON_FILL,PolygonAttributes.CULL_BACK
> > , 0.0f);
> >
> > app.setMaterial(mat);
> > app.setPolygonAttributes(polyAtt);
> >
> > shape.setAppearance(app);
> >
> > TransformGroup tg=new TransformGroup();
> > tg.addChild(shape);
> > }
> >
> > }//end class
> >
> > -----------------------------------------
> >
> > I also have another class that calls the previous one as below
> >
> > -------------------------------------------
> > import com.sun.j3d.utils.universe.*;
> > import javax.media.j3d.BranchGroup;
> > import com.sun.j3d.utils.applet.MainFrame;
> > import javax.media.j3d.*;
> > import java.awt.*;
> > import java.awt.BorderLayout;
> > import com.sun.j3d.utils.applet.MainFrame;
> >
> > public class CallClass extends java.applet.Applet{
> >
> >
> > public CallClass () {
> >
> >
> > SimpleUniverse universe = new SimpleUniverse();
> >
> > GraphicsConfiguration config = universe.getPreferredConfiguration();
> >
> >
> > Canvas3D c = new Canvas3D(config);
> >
> > Polyhedron polyhedron=new Polyhedron();
> >
> > BranchGroup group = new BranchGroup();
> >
> > group.addChild(polyhedron);
> >
> > universe.getViewingPlatform().setNominalViewingTransform();
> >
> > universe.addBranchGraph(group);
> >
> >
> > }
> >
> > public static void main(String[] args) {
> >
> >
> > new CallClass();
> >
> >
> >
> > }
> > }//end class CallClass
> > -------------------------------------------
> >
> >
> > The problem is that when i am compiling the second class i recieve the
> > following error
> >
> > D:\java\Java3d Project\tests\Hard tests\CallClass.java:26:
> > addChild(javax.media.j3d.Node) in javax.media.j3d.Group cannot be
applied to
> > (Polyhedron)
> > group.addChild(polyhedron);
> > ^
> > 1 error
> >
> >
> > What is wrong?
> >
> >
> >
> >
>
>
> /*********************************************
> SILVANO MALFATTI
> COMPUTER SCIENCE - URI University
> HOME - http://www.urisan.tche.br/~smalfatti
> ********************************************/
>
>
>
>
> -------------------------------------------------
> URI - Campus de Santo Angelo-RS
> http://www.urisan.tche.br
>
>
===========================================================================
> 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".
===========================================================================
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".