void calcNormals() {
	debugOutputLn(TRACE, "calcNormals()");
	debugOutputLn(LINE_TRACE, "coordsLength, facetsizes.len = " +
        coordsArray.length + ", " + facetSizes.length);
	if (facetSizes[0] > 2) {
	    // points and lines don't need normals, polys do
        if (facetIndices != null) {
	        normalIndices = new int[facetIndices.length];
	        normalCoords = new float[facetIndices.length * 3];
        }
        else {
            normalCoords = new float[coordsArray.length];
        }
        debugOutputLn(LINE_TRACE, "normalCoords, incides len = " +
            normalCoords.length + ", " +
            ((facetIndices == null) ? 0 : normalIndices.length));
	    int facetIndex = 0;
	    int tempIndex = -1;
	    for (int i = 0; i < facetSizes.length; i += 1) {
		Vector3f norm;
		int currFacetSize = facetSizes[i];
		//debugOutputLn(LINE_TRACE, "    i, facetIndex, currSize = " +
		//		  i + ", " + facetIndex + ", " + currFacetSize);
		if (currFacetSize < 3) {
            // This shouldn't occur
		    norm = new Vector3f(0f, 0f, 1f);
		}
		else {
            Vector3f v1, v2;
            int index1, index2, index3;
            if (facetIndices != null) {
		        index1 = facetIndices[facetIndex];
		        index2 = facetIndices[facetIndex+1];
		        index3 = facetIndices[facetIndex+2];
				//debugOutputLn(VALUES, "    index123 = " +
				//		  index1 + ", " + index2 + ", " + index3);
            }
            else {
                index1 = facetIndex;
                index2 = facetIndex+1;
                index3 = facetIndex+2;
            }
		    v1 = new
			Vector3f(coordsArray[index2*3] - coordsArray[index1*3],
				 coordsArray[index2*3+1] - coordsArray[index1*3+1],
				 coordsArray[index2*3+2] - coordsArray[index1*3+2]);
		    v2 = new
			Vector3f(coordsArray[index3*3] - coordsArray[index1*3],
				 coordsArray[index3*3+1] - coordsArray[index1*3+1],
				 coordsArray[index3*3+2] - coordsArray[index1*3+2]);
				//debugOutputLn(VALUES, "v1, v2 = " + v1 + v2);
		    norm = new Vector3f();
		    norm.cross(v1, v2);
		    norm.normalize(norm);
		}

		for (int j = 0; j < currFacetSize; ++j) {
		    int normIndex = facetIndex + j;
            normalCoords[normIndex*3] = norm.x;
		    normalCoords[normIndex*3+1] = norm.y;
		    normalCoords[normIndex*3+2] = norm.z;
            if (facetIndices != null)
		        normalIndices[normIndex] = normIndex;
		}
        facetIndex += currFacetSize;
	    }
	}
	debugOutputLn(TRACE, "done with calcNormals()");
    }