I don't see anywhere in your snippet that
you have calculated the normals - could
it be that you are expecting Java3D to do this?
it doesn't - its not like eg., Inventor or Performer -
you have to do it yourself i.e., [v1-v2]x[v2-v3]
will give you the normal for a flat polygon, then
you average adjoining facets by normalizing.


-ba

HAroldo Pereira wrote:
>
> Hi
>
>   I dont understand this solution below.??
>
>   I wait any answwer.
>
>   HAroldo
>
> >From: Mauro Fabozzi <[EMAIL PROTECTED]>
> >Reply-To: Mauro Fabozzi <[EMAIL PROTECTED]>
> >To: [EMAIL PROTECTED]
> >Subject: Re: [JAVA3D] GetNormals problem
> >Date: Mon, 22 May 2000 07:58:34 +0200
> >
> >----- Original Message -----
> >From: <[EMAIL PROTECTED]>
> >To: <[EMAIL PROTECTED]>
> >Sent: Saturday, May 20, 2000 12:23 AM
> >Subject: [JAVA3D] GetNormals problem
> >
> >
> >Hi
> >
> >   How I get the Normal Vector of the tetrahedron create with
> >TriangleArray.
> >
> >   My class tetrahedron is below:
> >
> >import javax.media.j3d.*;
> >import javax.vecmath.*;
> >
> >class Tetrahedron extends Shape3D {
> >
> >   public Tetrahedron(float x, float y, float z, float s) {
> >         super();
> >         float xsizeMin = -s/2.0f + x;
> >         float xsizeMax = s/2.0f + x;
> >         float ysizeMin = -s/2.0f + y;
> >         float ysizeMax = s/2.0f + y;
> >         float zsizeMin = -s/2.0f + z;
> >         float zsizeMax = s/2.0f + z;
> >
> >//      TriangleArray tetra = new TriangleArray(12,
> >GeometryArray.COORDINATES);
> >         TriangleArray tetra = new TriangleArray(12,
> >GeometryArray.COORDINATES |
> >GeometryArray.COLOR_3 | GeometryArray.NORMALS);
> >
> >     Point3f verts[] = new Point3f[4];
> >     verts[0] = new Point3f(xsizeMax, ysizeMax, zsizeMax);
> >     verts[1] = new Point3f(xsizeMax, ysizeMin, zsizeMin);
> >     verts[2] = new Point3f(xsizeMin, ysizeMin, zsizeMax);
> >     verts[3] = new Point3f(xsizeMin, ysizeMax, zsizeMin);
> >
> >     Point3f pnts[] = new Point3f[12];
> >
> >     pnts[0] = verts[2];
> >     pnts[1] = verts[1];
> >     pnts[2] = verts[0];
> >
> >     pnts[3] = verts[3];
> >     pnts[4] = verts[2];
> >     pnts[5] = verts[0];
> >
> >     pnts[6] = verts[1];
> >     pnts[7] = verts[2];
> >     pnts[8] = verts[3];
> >
> >     pnts[9] = verts[1];
> >     pnts[10] = verts[3];
> >     pnts[11] = verts[0];
> >     tetra.setCoordinates(0, pnts);
> >
> >
> >     //
> >     Color3f colors[] = new Color3f[4];
> >     colors[0] = new Color3f(0.0f, 1.0f, 0.0f);
> >     colors[1] = new Color3f(0.0f, 0.0f, 1.0f);
> >     colors[2] = new Color3f(1.0f, 1.0f, 0.0f);
> >     colors[3] = new Color3f(1.0f, 0.0f, 0.0f);
> >
> >     Color3f clrs[] = new Color3f[12];
> >     clrs[0] = colors[0];
> >     clrs[1] = colors[0];
> >     clrs[2] = colors[0];
> >     clrs[3] = colors[1];
> >     clrs[4] = colors[1];
> >     clrs[5] = colors[1];
> >     clrs[6] = colors[2];
> >     clrs[7] = colors[2];
> >     clrs[8] = colors[2];
> >     clrs[9] = colors[3];
> >     clrs[10] = colors[3];
> >     clrs[11] = colors[3];
> >     tetra.setColors(0, clrs);
> >//
> >
> >     this.setGeometry(tetra);
> >     this.setAppearance(new Appearance());
> >   }
> >}
> >
> >
> >   I use the method getNormals:
> >
> >   ...
> >         Geometry geo2 = shape2.getGeometry();
> >         GeometryArray gArray2 = (GeometryArray) geo2;
> >         gArray2.getNormals(0, normals);
> >
> >         for (int j=0; j<4; j++){
> >             System.out.println("normal:" + j + " : (" + normals[j*3] + " ,
> >"
> >+ normals[j*3 + 1] + " , " + normals[j*3 + 2] + ")" );
> >
> >...
> >
> >   The problem is that it print (0.0, 0.0, 0.0);
> >
> >   Where is the error?
> >
> >   I wait the your e-mails.
> >
> >   Haroldo
> >
> >
> >
> >________________________________________________________________________
> >Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.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".
> >
> >===========================================================================
> >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".
>
> ________________________________________________________________________
> Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.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".

--
Dr. A. Ballard Andrews
Senior Research Scientist
Schlumberger Doll Research
Old Quarry Road Ridgefield, CT 06877
tel: 203-431-5522 fax: 5521

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