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

Reply via email to