Your Name (sic!),

Here is an example (from my book) that works.

Sincerely,

Daniel Selman

[EMAIL PROTECTED]
http://www.tornadolabs.com

======

//generate a surface from 10 vertices and create a hole in the surface by
removing
//a hole defined using 5 vertices. Note that the hole must be entirely
within the
//outer polygon.
private double[]        m_VertexArray = {1,1,0, //0
                                                                0,3,0, //1
                                                                1,5,0, //2
                                                                2,4,0, //3
                                                                4,5,0, //4
                                                                3,3,0, //5
                                                                4,2,0, //6
                                                                4,0,0, //7
                                                                3,0,0, //8
                                                                2,1,0, //9
//these are vertices for the hole
                                                                1,3,0, //10
                                                                2,3,0, //11
                                                                3,2,0, //12
                                                                3,1,0, //13
                                                                2,2,0};//14
//triangulate the polygon
GeometryInfo gi = new GeometryInfo( GeometryInfo.POLYGON_ARRAY );

gi.setCoordinates( m_VertexArray );

//the first 10 points make up the outer edge of the polygon, the next five
make up the hole
int[] stripCountArray = {10,5};
int[] countourCountArray = {stripCountArray.length};

gi.setContourCounts( countourCountArray );
gi.setStripCounts( stripCountArray );

Triangulator triangulator = new Triangulator();
triangulator.triangulate( gi );

//also generate normal vectors so that the surface can be light
NormalGenerator normalGenerator = new NormalGenerator();
normalGenerator.generateNormals( gi );

//create an appearance
Appearance ap = new Appearance();

//render as a wireframe
PolygonAttributes polyAttrbutes = new PolygonAttributes();
polyAttrbutes.setPolygonMode( PolygonAttributes.POLYGON_LINE );
polyAttrbutes.setCullFace( PolygonAttributes.CULL_NONE ) ;
ap.setPolygonAttributes( polyAttrbutes );

//add both a wireframe and a solid version of the triangulated surface
Shape3D shape1 = new Shape3D( gi.getGeometryArray(), ap );
Shape3D shape2 = new Shape3D( gi.getGeometryArray() );

-----Original Message-----
From: Discussion list for Java 3D API
[mailto:[EMAIL PROTECTED]]On Behalf Of Your Name
Sent: 20 October 1999 04:14
To: [EMAIL PROTECTED]
Subject: [JAVA3D] Creating a cube with GeometryInfo


Hi,

I'm sure there is an easy answer to this, but I still can't get it to work.
What I'm trying to do is to display a simple cube within Java3D. Now, I
know, I could use the ColorCube class for this (works fine), but I want to
do it via the GeometryInfo to be able to later on create more complicated
objects. So what I do is to define the 8 vertices of a cube to be
(0,0,0),(0,0,1),... up to (1,1,1), pass this set of coordinates to the
GeometryInfo, triangulate, generate normals, stripify and create a Shape3D
from it. Code is as follows:

GeometryInfo gInfo=new GeometryInfo(GeometryInfo.POLYGON_ARRAY);
gInfo.setCoordinates(mCoords);
int[] ii={mCoords.length/3};
gInfo.setStripCounts( ii);
Triangulator tri=new Triangulator();
tri.triangulate(gInfo);
NormalGenerator normGen=new NormalGenerator();
normGen.generateNormals(gInfo);
Stripifier strip=new Stripifier();
strip.stripify(gInfo);
Shape3D shape=new Shape3D();
shape.setGeometry(gInfo.getGeometryArray());

However, when I display the Shape3D, I get a bunch of triangles and not the
total cube. Now I first thought that some of the faces where backface
culled, so I set the PolgonAttributes correspondingly:

Appearance app=new Appearance();
PolygonAttributes pAtt=new PolygonAttributes();
pAtt.setCullFace(PolygonAttributes.CULL_NONE);
pAtt.setBackFaceNormalFlip(true);
app.setPolygonAttributes(pAtt);
Material mat=new Material();
mat.setAmbientColor(0.4f,0.4f,0.4f);
app.setMaterial(mat);
shape.setAppearance(app);

Still, the same effect, only a few triangles show up, not a full cube.

Probably I did misunderstand the way the Triangulator works, can anybody
shed light on this?

Regards

HEIKO
[EMAIL PROTECTED]

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

Reply via email to