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".