I may not be able to shed any light on your problem. I didn't use a
StripCount Array at all, in fact, I don't really know what they are yet.
All I did was construct QuadArray objects:
QuadArray topQuadArray = new QuadArray((int)length,
QuadArray.COORDINATES|QuadArray.NORMALS|QuadArray.COLOR_3);
Then I passed my Point3f[], Vector3f[], and Color3f[] arrays into the
QuadArray:
topQuadArray.setCoordinates(0, topPoints);
topQuadArray.setNormals(0, topNormals);
topQuadArray.setColors(0, topColors);
Then made my Shape3D object:
Shape3D topShape = new Shape3D(topQuadArray, appearance);
And added it it the TransformGroup:
transformGroup.addChild(topShape);
I hope this helps.
-----Original Message-----
From: Desiree Hilbring [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, September 28, 1999 10:51 AM
To: [EMAIL PROTECTED]
Subject: Re: [JAVA3D] Shading
Hi Don!
How did you set your stripCount Array for the
GemetryInfo(GeometryInfo.QUAD_ARRAY) Object.
I'll keep getting a
StripCounts inconsistent with primitive Exception
Thanks Desiree
On Mon, 27 Sep 1999, Casteel, Don wrote:
> I have the same problem with QuadArray, although I did not get the
> "POLYGON_ARRAY" exception.
>
> I posted the following message, but haven't gotten an answer:
>
>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ~
> I've built a QuadArray with per-vertex colors, however I can't figure out
> how to get it to do shading.
> The Quad array is a colection of boxes (the primitive Box() wasn't working
> for the application) each box is made a different color by setting the
> vertex colors.
>
> I've applied an appearance object to the QuadArray, but what I get is a
> single material layed over the box color.
>
> Is there any way to set up the material so it goes to the geometry and
picks
> the ambient color from the surface which I can then scale and apply to
> diffuse and specular colors?
>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ~
>
> -----Original Message-----
> From: Desiree Hilbring [mailto:[EMAIL PROTECTED]]
> Sent: Monday, September 27, 1999 9:34 AM
> To: [EMAIL PROTECTED]
> Subject: [JAVA3D] Shading
>
>
> Hi Everybody!
>
> First I created Geometry with QuadArray, which worked fine, but now I want
> to shade it, and tried to use GeometryInfo with the NormalGenerator,
> I did set
> ginfo[l] = new GeometryInfo(GeometryInfo.QUAD_ARRAY);
> ginfo[l].recomputeIndices();
> ginfo[l].setStripCounts(strip[l]);
> norm.setCreaseAngle(0); (I want to see my edges)
>
> In running my application I'll get:
>
> GeometryInfo must have primitve type POLYGON_ARRAY
>
> when I use POLYGON_ARRAY I'll get my shape3d but without shading!
>
> Any ideas?
>
> Thanks for any help!
>
> Desiree
>
> Here is a part of my sourcecode:
>
> float[] x, y;
> QuadArray[] quad;
> int[][] strip;
> GeometryInfo[] ginfo;
>
> // Quad stores geometry of side
> // I have got several objects to create in the same way
> quad = new QuadArray[sp.getNrOfBoundaries()];
> // Coordseite stores coordinates in the way quad needs them
> coordseite = new Point3f[sp.getNrOfBoundaries()][];
> strip = new int[sp.getNrOfBoundaries()][];
> ginfo = new GeometryInfo[sp.getNrOfBoundaries()];
> shape = new Shape3D[sp.getNrOfBoundaries()];
> for(int l=0;l<sp.getNrOfBoundaries();l++) {
>
> quad[l]=new
>
> QuadArray(baseArea.getCoordinates()[l].length*4*2,QuadArray.COORDINATES);
> coordseite[l] = new
> Point3f[(baseArea.getCoordinates()[l].length)*4*2];
> Vector3f[(baseArea.getCoordinates()[l].length)*4*2];
> strip[l] = new int[baseArea.getCoordinates()[l].length*2];
> for(int m=0;m<baseArea.getCoordinates()[l].length*2;m++)
> strip[l][m]=4;
> float k=0;
>
> for(inti=0;i<=((baseArea.getCoordinates()[l].length)*4*2)-1;i=i+4) {
> k=k+0.5f;
> if (((int)k)>=baseArea.getCoordinates()[l].length) {
> k=baseArea.getCoordinates()[l].length-2;
> }
> if ((((int)k)+1)>=baseArea.getCoordinates()[l].length) {
> k=baseArea.getCoordinates()[l].length-2;
> }
> if((i)<=coordseite[l].length-1) {
> coordseite[l][i]= new
> Point3f(baseAreaunten.getCoordinates()[l][(int)k]);
> }
> if((i+1)<=coordseite[l].length-1) {
> coordseite[l][i+1]= new
> Point3f(baseAreaunten.getCoordinates()[l][((int)k)+1]);
> }
> if((i+2)<=coordseite[l].length-1) {
> coordseite[l][i+2]= new
> Point3f(baseArea.getCoordinates()[l][((int)k)+1]);
> }
> if((i+3)<=coordseite[l].length-1) {
> coordseite[l][i+3]= new
> Point3f(baseArea.getCoordinates()[l][(int)k]);
> }
> }
> quad[l].setCoordinates(0,coordseite[l]);
>
> // GeometryInfo
>
> ginfo[l] = new GeometryInfo(GeometryInfo.POLYGON_ARRAY);
>
> // exception with
> //ginfo[l] = new GeometryInfo(GeometryInfo.QUAD_ARRAY);
>
> ginfo[l].setCoordinates(coordseite[l]);
> ginfo[l].setStripCounts(strip[l]);
> ginfo[l].recomputeIndices();
> // Triangulator devides the polygon in triangles
> Triangulator tr = new Triangulator();
> tr.triangulate(ginfo[l]);
>
> NormalGenerator norm = new NormalGenerator();
> norm.generateNormals(ginfo[l]);
> norm.setCreaseAngle(0);
>
> Stripifier st = new Stripifier();
> st.stripify(ginfo[l]);
>
>
>
> // Set Appearance
> // Colors are from 2D objects
> GraphicsContext gc = sp.getGraphicsContext();
> Color c = gc.getForegroundColor();
> float red = (float)c.getRed()/255f;
> float green = (float)c.getGreen()/255f;
> float blue = (float)c.getBlue()/255f;
> Color3f fc = new Color3f(red,green,blue);
> Appearance app = new Appearance();
>
> //LIGHT
> Material material = new Material(fc,black,black,black,20f);
> material.setCapability(Material.ALLOW_COMPONENT_READ);
> material.setCapability(Material.ALLOW_COMPONENT_WRITE);
> app.setMaterial(material);
> app.setCapability(Appearance.ALLOW_MATERIAL_WRITE);
> app.setCapability(Appearance.ALLOW_MATERIAL_READ);
>
> app.setCapability(Appearance.ALLOW_COLORING_ATTRIBUTES_READ);
> app.setCapability(Appearance.ALLOW_COLORING_ATTRIBUTES_WRITE);
> PolygonAttributes polyattr = new PolygonAttributes();
> polyattr.setCullFace(PolygonAttributes.CULL_NONE);
> ColoringAttributes colatt = new
> ColoringAttributes(fc,ColoringAttributes.SHADE_GOURAUD);
> colatt.setCapability(ColoringAttributes.ALLOW_COLOR_READ);
> colatt.setCapability(ColoringAttributes.ALLOW_COLOR_WRITE);
> app.setColoringAttributes(colatt);
> app.setPolygonAttributes(polyattr);
>
> // Create Shape3D
> shape[l] = new Shape3D();
> shape[l].setCapability(Shape3D.ALLOW_APPEARANCE_READ);
> shape[l].setCapability(Shape3D.ALLOW_APPEARANCE_WRITE);
> shape[l].setAppearance(app);
> shape[l].setGeometry(ginfo[l].getGeometryArray());
> }
> }
>
>
===========================================================================
> 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".
>
===========================================================================
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".