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

Reply via email to