javax.media.j3d

## Class GeometryArray

- java.lang.Object
- - javax.media.j3d.SceneGraphObject
  - - javax.media.j3d.NodeComponent
    - - javax.media.j3d.Geometry
      - - javax.media.j3d.GeometryArray

- Direct Known Subclasses:
    GeometryStripArray, IndexedGeometryArray, LineArray, PointArray, QuadArray, TriangleArray

      public abstract class GeometryArray
      extends Geometry

  The GeometryArray object contains separate arrays of positional coordinates, colors, normals, texture coordinates, and vertex attributes that describe point, line, or polygon geometry. This class is extended to create the various primitive types (such as lines, triangle strips, etc.). Vertex data may be passed to this geometry array in one of two ways: by copying the data into the array using the existing methods, or by passing a reference to the data.

  - By Copying: The existing methods for setting positional coordinates, colors, normals, texture coordinates, and vertex attributes (such as `setCoordinate`, `setColors`, etc.) copy the data into this GeometryArray. This is appropriate for many applications and offers an application much flexibility in organizing its data. This is the default mode.
  - By Reference: A new set of methods in Java 3D version 1.2 allows data to be accessed by reference, directly from the user's arrays. To use this feature, set the `BY_REFERENCE` bit in the `vertexFormat` field of the constructor for this GeometryArray. In this mode, the various set methods for coordinates, normals, colors, texture coordinates, and vertex attributes are not used. Instead, new methods are used to set a reference to user-supplied coordinate, color, normal, texture coordinate, and vertex attribute arrays (such as `setCoordRefFloat`, `setColorRefFloat`, etc.). Data in any array that is referenced by a live or compiled GeometryArray object may only be modified via the `updateData` method (subject to the `ALLOW_REF_DATA_WRITE` capability bit). Applications must exercise care not to violate this rule. If any referenced geometry data is modified outside of the `updateData` method, the results are undefined.

  All colors used in the geometry array object must be in the range [0.0,1.0]. Values outside this range will cause undefined results. All normals used in the geometry array object must be unit length vectors. That is their geometric length must be 1.0. Normals that are not unit length vectors will cause undefined results.

  Note that the term coordinate, as used in the method names and method descriptions, actually refers to a set of x, y, and z coordinates representing the position of a single vertex. The term coordinates (plural) is used to indicate sets of x, y, and z coordinates for multiple vertices. This is somewhat at odds with the mathematical definition of a coordinate, but is used as a convenient shorthand. Similarly, the term texture coordinate is used to indicate a set of texture coordinates for a single vertex, while the term texture coordinates (plural) is used to indicate sets of texture coordinates for multiple vertices.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `ALLOW_COLOR_READ` Specifies that this GeometryArray allows reading the array of colors.
    `static int` | `ALLOW_COLOR_WRITE` Specifies that this GeometryArray allows writing the array of colors.
    `static int` | `ALLOW_COORDINATE_READ` Specifies that this GeometryArray allows reading the array of coordinates.
    `static int` | `ALLOW_COORDINATE_WRITE` Specifies that this GeometryArray allows writing the array of coordinates.
    `static int` | `ALLOW_COUNT_READ` Specifies that this GeometryArray allows reading the count or initial index information for this object.
    `static int` | `ALLOW_COUNT_WRITE` Specifies that this GeometryArray allows writing the count or initial index information for this object.
    `static int` | `ALLOW_FORMAT_READ` Specifies that this GeometryArray allows reading the vertex format information for this object.
    `static int` | `ALLOW_NORMAL_READ` Specifies that this GeometryArray allows reading the array of normals.
    `static int` | `ALLOW_NORMAL_WRITE` Specifies that this GeometryArray allows writing the array of normals.
    `static int` | `ALLOW_REF_DATA_READ` Specifies that this GeometryArray allows reading the geometry data reference information for this object.
    `static int` | `ALLOW_REF_DATA_WRITE` Specifies that this GeometryArray allows writing the geometry data reference information for this object.
    `static int` | `ALLOW_TEXCOORD_READ` Specifies that this GeometryArray allows reading the array of texture coordinates.
    `static int` | `ALLOW_TEXCOORD_WRITE` Specifies that this GeometryArray allows writing the array of texture coordinates.
    `static int` | `ALLOW_VERTEX_ATTR_READ` Specifies that this GeometryArray allows reading the array of vertex attributes.
    `static int` | `ALLOW_VERTEX_ATTR_WRITE` Specifies that this GeometryArray allows writing the array of vertex attributes.
    `static int` | `BY_REFERENCE` Specifies that the position, color, normal, and texture coordinate data for this GeometryArray are accessed by reference.
    `static int` | `BY_REFERENCE_INDICES` Specifies that the indices in this GeometryArray are accessed by reference.
    `static int` | `COLOR_3` Specifies that this GeometryArray contains an array of colors without alpha.
    `static int` | `COLOR_4` Specifies that this GeometryArray contains an array of colors with alpha.
    `static int` | `COORDINATES` Specifies that this GeometryArray contains an array of coordinates.
    `static int` | `INTERLEAVED` Specifies that the position, color, normal, and texture coordinate data for this GeometryArray are accessed via a single interleaved, floating-point array reference.
    `static int` | `NORMALS` Specifies that this GeometryArray contains an array of normals.
    `static int` | `TEXTURE_COORDINATE_2` Specifies that this GeometryArray contains one or more arrays of 2D texture coordinates.
    `static int` | `TEXTURE_COORDINATE_3` Specifies that this GeometryArray contains one or more arrays of 3D texture coordinates.
    `static int` | `TEXTURE_COORDINATE_4` Specifies that this GeometryArray contains one or more arrays of 4D texture coordinates.
    `static int` | `USE_COORD_INDEX_ONLY` Specifies that only the coordinate indices are used for indexed geometry arrays.
    `static int` | `USE_NIO_BUFFER` Specifies that geometry by-reference data for this GeometryArray, whether interleaved or non-interleaved, is accessed via J3DBuffer objects that wrap NIO Buffer objects, rather than float, double, byte, or TupleXX arrays.
    `static int` | `VERTEX_ATTRIBUTES` Specifies that this GeometryArray contains one or more arrays of vertex attributes.

    - ### Fields inherited from class javax.media.j3d.Geometry

      `ALLOW_INTERSECT`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `GeometryArray(int vertexCount, int vertexFormat)` Constructs an empty GeometryArray object with the specified number of vertices and vertex format.
    `GeometryArray(int vertexCount, int vertexFormat, int texCoordSetCount, int[] texCoordSetMap)` Constructs an empty GeometryArray object with the specified number of vertices, vertex format, number of texture coordinate sets, and texture coordinate mapping array.
    `GeometryArray(int vertexCount, int vertexFormat, int texCoordSetCount, int[] texCoordSetMap, int vertexAttrCount, int[] vertexAttrSizes)` Constructs an empty GeometryArray object with the specified number of vertices, vertex format, number of texture coordinate sets, texture coordinate mapping array, vertex attribute count, and vertex attribute sizes array.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `getColor(int index, byte[] color)` Gets the color associated with the vertex at the specified index for this object.
    `void` | `getColor(int index, Color3b color)` Gets the color associated with the vertex at the specified index for this object.
    `void` | `getColor(int index, Color3f color)` Gets the color associated with the vertex at the specified index for this object.
    `void` | `getColor(int index, Color4b color)` Gets the color associated with the vertex at the specified index for this object.
    `void` | `getColor(int index, Color4f color)` Gets the color associated with the vertex at the specified index for this object.
    `void` | `getColor(int index, float[] color)` Gets the color associated with the vertex at the specified index for this object.
    `Color3b[]` | `getColorRef3b()` Deprecated. As of Java 3D version 1.3, use geometry by-copy for Color3b arrays
    `Color3f[]` | `getColorRef3f()` Deprecated. As of Java 3D version 1.3, use geometry by-copy for Color3f arrays
    `Color4b[]` | `getColorRef4b()` Deprecated. As of Java 3D version 1.3, use geometry by-copy for Color4b arrays
    `Color4f[]` | `getColorRef4f()` Deprecated. As of Java 3D version 1.3, use geometry by-copy for Color4f arrays
    `J3DBuffer` | `getColorRefBuffer()` Gets the color array buffer reference.
    `byte[]` | `getColorRefByte()` Gets the byte color array reference.
    `float[]` | `getColorRefFloat()` Gets the float color array reference.
    `void` | `getColors(int index, byte[] colors)` Gets the colors associated with the vertices starting at the specified index for this object.
    `void` | `getColors(int index, Color3b[] colors)` Gets the colors associated with the vertices starting at the specified index for this object.
    `void` | `getColors(int index, Color3f[] colors)` Gets the colors associated with the vertices starting at the specified index for this object.
    `void` | `getColors(int index, Color4b[] colors)` Gets the colors associated with the vertices starting at the specified index for this object.
    `void` | `getColors(int index, Color4f[] colors)` Gets the colors associated with the vertices starting at the specified index for this object.
    `void` | `getColors(int index, float[] colors)` Gets the colors associated with the vertices starting at the specified index for this object.
    `void` | `getCoordinate(int index, double[] coordinate)` Gets the coordinate associated with the vertex at the specified index for this object.
    `void` | `getCoordinate(int index, float[] coordinate)` Gets the coordinate associated with the vertex at the specified index for this object using data in `texCoords`
    `void` | `getCoordinate(int index, Point3d coordinate)` Gets the coordinate associated with the vertex at the specified index for this object.
    `void` | `getCoordinate(int index, Point3f coordinate)` Gets the coordinate associated with the vertex at the specified index for this object.
    `void` | `getCoordinates(int index, double[] coordinates)` Gets the coordinates associated with the vertices starting at the specified index for this object.
    `void` | `getCoordinates(int index, float[] coordinates)` Gets the coordinates associated with the vertices starting at the specified index for this object.
    `void` | `getCoordinates(int index, Point3d[] coordinates)` Gets the coordinates associated with the vertices starting at the specified index for this object.
    `void` | `getCoordinates(int index, Point3f[] coordinates)` Gets the coordinates associated with the vertices starting at the specified index for this object.
    `Point3d[]` | `getCoordRef3d()` Deprecated. As of Java 3D version 1.3, use geometry by-copy for Point3d arrays
    `Point3f[]` | `getCoordRef3f()` Deprecated. As of Java 3D version 1.3, use geometry by-copy for Point3f arrays
    `J3DBuffer` | `getCoordRefBuffer()` Gets the coordinate array buffer reference.
    `double[]` | `getCoordRefDouble()` Gets the double coordinate array reference.
    `float[]` | `getCoordRefFloat()` Gets the float coordinate array reference.
    `int` | `getInitialColorIndex()` Gets the initial color index for this GeometryArray object.
    `int` | `getInitialCoordIndex()` Gets the initial coordinate index for this GeometryArray object.
    `int` | `getInitialNormalIndex()` Gets the initial normal index for this GeometryArray object.
    `int` | `getInitialTexCoordIndex(int texCoordSet)` Gets the initial texture coordinate index for the specified texture coordinate set for this GeometryArray object.
    `int` | `getInitialVertexAttrIndex(int vertexAttrNum)` Gets the initial vertex attribute index for the specified vertex attribute number for this GeometryArray object.
    `int` | `getInitialVertexIndex()` Gets the initial vertex index for this GeometryArray object.
    `J3DBuffer` | `getInterleavedVertexBuffer()` Gets the interleaved vertex array buffer reference.
    `float[]` | `getInterleavedVertices()` Gets the interleaved vertices array reference.
    `void` | `getNormal(int index, float[] normal)` Gets the normal associated with the vertex at the specified index for this object.
    `void` | `getNormal(int index, Vector3f normal)` Gets the normal associated with the vertex at the specified index for this object.
    `Vector3f[]` | `getNormalRef3f()` Deprecated. As of Java 3D version 1.3, use geometry by-copy for Vector3f arrays
    `J3DBuffer` | `getNormalRefBuffer()` Gets the normal array buffer reference.
    `float[]` | `getNormalRefFloat()` Gets the float normal array reference.
    `void` | `getNormals(int index, float[] normals)` Gets the normals associated with the vertices starting at the specified index for this object.
    `void` | `getNormals(int index, Vector3f[] normals)` Gets the normals associated with the vertices starting at the specified index for this object.
    `TexCoord2f[]` | `getTexCoordRef2f(int texCoordSet)` Deprecated. As of Java 3D version 1.3, use geometry by-copy for TexCoord2f arrays
    `TexCoord3f[]` | `getTexCoordRef3f(int texCoordSet)` Deprecated. As of Java 3D version 1.3, use geometry by-copy for TexCoord3f arrays
    `J3DBuffer` | `getTexCoordRefBuffer(int texCoordSet)` Gets the texture coordinate array buffer reference for the specified texture coordinate set.
    `float[]` | `getTexCoordRefFloat(int texCoordSet)` Gets the float texture coordinate array reference for the specified texture coordinate set.
    `int` | `getTexCoordSetCount()` Retrieves the number of texture coordinate sets in this GeometryArray object.
    `void` | `getTexCoordSetMap(int[] texCoordSetMap)` Retrieves the texture coordinate set mapping array from this GeometryArray object.
    `int` | `getTexCoordSetMapLength()` Retrieves the length of the texture coordinate set mapping array of this GeometryArray object.
    `void` | `getTextureCoordinate(int index, float[] texCoord)` Deprecated. As of Java 3D version 1.2, replaced by `getTextureCoordinate(int texCoordSet, ...)`
    `void` | `getTextureCoordinate(int texCoordSet, int index, float[] texCoord)` Gets the texture coordinate associated with the vertex at the specified index in the specified texture coordinate set for this object.
    `void` | `getTextureCoordinate(int texCoordSet, int index, TexCoord2f texCoord)` Gets the texture coordinate associated with the vertex at the specified index in the specified texture coordinate set for this object.
    `void` | `getTextureCoordinate(int texCoordSet, int index, TexCoord3f texCoord)` Gets the texture coordinate associated with the vertex at the specified index in the specified texture coordinate set for this object.
    `void` | `getTextureCoordinate(int texCoordSet, int index, TexCoord4f texCoord)` Gets the texture coordinate associated with the vertex at the specified index in the specified texture coordinate set for this object.
    `void` | `getTextureCoordinate(int index, Point2f texCoord)` Deprecated. As of Java 3D version 1.2, replaced by `getTextureCoordinate(int texCoordSet, TexCoord2f texCoord)`
    `void` | `getTextureCoordinate(int index, Point3f texCoord)` Deprecated. As of Java 3D version 1.2, replaced by `getTextureCoordinate(int texCoordSet, TexCoord3f texCoord)`
    `void` | `getTextureCoordinates(int index, float[] texCoords)` Deprecated. As of Java 3D version 1.2, replaced by `getTextureCoordinates(int texCoordSet, ...)`
    `void` | `getTextureCoordinates(int texCoordSet, int index, float[] texCoords)` Gets the texture coordinates associated with the vertices starting at the specified index in the specified texture coordinate set for this object.
    `void` | `getTextureCoordinates(int texCoordSet, int index, TexCoord2f[] texCoords)` Gets the texture coordinates associated with the vertices starting at the specified index in the specified texture coordinate set for this object.
    `void` | `getTextureCoordinates(int texCoordSet, int index, TexCoord3f[] texCoords)` Gets the texture coordinates associated with the vertices starting at the specified index in the specified texture coordinate set for this object.
    `void` | `getTextureCoordinates(int texCoordSet, int index, TexCoord4f[] texCoords)` Gets the texture coordinates associated with the vertices starting at the specified index in the specified texture coordinate set for this object.
    `void` | `getTextureCoordinates(int index, Point2f[] texCoords)` Deprecated. As of Java 3D version 1.2, replaced by `getTextureCoordinates(int texCoordSet, TexCoord2f texCoords[])`
    `void` | `getTextureCoordinates(int index, Point3f[] texCoords)` Deprecated. As of Java 3D version 1.2, replaced by `getTextureCoordinates(int texCoordSet, TexCoord3f texCoords[])`
    `int` | `getValidVertexCount()` Gets the valid vertex count for this GeometryArray object.
    `void` | `getVertexAttr(int vertexAttrNum, int index, float[] vertexAttr)` Gets the vertex attribute associated with the vertex at the specified index in the specified vertex attribute number for this object.
    `void` | `getVertexAttr(int vertexAttrNum, int index, Point2f vertexAttr)` Gets the vertex attribute associated with the vertex at the specified index in the specified vertex attribute number for this object.
    `void` | `getVertexAttr(int vertexAttrNum, int index, Point3f vertexAttr)` Gets the vertex attribute associated with the vertex at the specified index in the specified vertex attribute number for this object.
    `void` | `getVertexAttr(int vertexAttrNum, int index, Point4f vertexAttr)` Gets the vertex attribute associated with the vertex at the specified index in the specified vertex attribute number for this object.
    `int` | `getVertexAttrCount()` Retrieves the number of vertex attributes in this GeometryArray object.
    `J3DBuffer` | `getVertexAttrRefBuffer(int vertexAttrNum)` Gets the vertex attribute array buffer reference for the specified vertex attribute number.
    `float[]` | `getVertexAttrRefFloat(int vertexAttrNum)` Gets the float vertex attribute array reference for the specified vertex attribute number.
    `void` | `getVertexAttrs(int vertexAttrNum, int index, float[] vertexAttrs)` Gets the vertex attributes associated with the vertices starting at the specified index in the specified vertex attribute number for this object.
    `void` | `getVertexAttrs(int vertexAttrNum, int index, Point2f[] vertexAttrs)` Gets the vertex attributes associated with the vertices starting at the specified index in the specified vertex attribute number for this object.
    `void` | `getVertexAttrs(int vertexAttrNum, int index, Point3f[] vertexAttrs)` Gets the vertex attributes associated with the vertices starting at the specified index in the specified vertex attribute number for this object.
    `void` | `getVertexAttrs(int vertexAttrNum, int index, Point4f[] vertexAttrs)` Gets the vertex attributes associated with the vertices starting at the specified index in the specified vertex attribute number for this object.
    `void` | `getVertexAttrSizes(int[] vertexAttrSizes)` Retrieves the vertex attribute sizes array from this GeometryArray object.
    `int` | `getVertexCount()` Retrieves the number of vertices in this GeometryArray
    `int` | `getVertexFormat()` Retrieves the vertexFormat of this GeometryArray
    `void` | `setColor(int index, byte[] color)` Sets the color associated with the vertex at the specified index for this object.
    `void` | `setColor(int index, Color3b color)` Sets the color associated with the vertex at the specified index for this object.
    `void` | `setColor(int index, Color3f color)` Sets the color associated with the vertex at the specified index for this object.
    `void` | `setColor(int index, Color4b color)` Sets the color associated with the vertex at the specified index for this object.
    `void` | `setColor(int index, Color4f color)` Sets the color associated with the vertex at the specified index for this object.
    `void` | `setColor(int index, float[] color)` Sets the color associated with the vertex at the specified index for this object.
    `void` | `setColorRef3b(Color3b[] colors)` Deprecated. As of Java 3D version 1.3, use geometry by-copy for Color3b arrays
    `void` | `setColorRef3f(Color3f[] colors)` Deprecated. As of Java 3D version 1.3, use geometry by-copy for Color3f arrays
    `void` | `setColorRef4b(Color4b[] colors)` Deprecated. As of Java 3D version 1.3, use geometry by-copy for Color4b arrays
    `void` | `setColorRef4f(Color4f[] colors)` Deprecated. As of Java 3D version 1.3, use geometry by-copy for Color4f arrays
    `void` | `setColorRefBuffer(J3DBuffer colors)` Sets the color buffer reference to the specified buffer object.
    `void` | `setColorRefByte(byte[] colors)` Sets the byte color array reference to the specified array.
    `void` | `setColorRefFloat(float[] colors)` Sets the float color array reference to the specified array.
    `void` | `setColors(int index, byte[] colors)` Sets the colors associated with the vertices starting at the specified index for this object.
    `void` | `setColors(int index, byte[] colors, int start, int length)` Sets the colors associated with the vertices starting at the specified index for this object using data in `colors` starting at index `start` for `length` colors.
    `void` | `setColors(int index, Color3b[] colors)` Sets the colors associated with the vertices starting at the specified index for this object.
    `void` | `setColors(int index, Color3b[] colors, int start, int length)` Sets the colors associated with the vertices starting at the specified index for this object using data in `colors` starting at index `start` for `length` colors.
    `void` | `setColors(int index, Color3f[] colors)` Sets the colors associated with the vertices starting at the specified index for this object.
    `void` | `setColors(int index, Color3f[] colors, int start, int length)` Sets the colors associated with the vertices starting at the specified index for this object using data in `colors` starting at index `start` for `length` colors.
    `void` | `setColors(int index, Color4b[] colors)` Sets the colors associated with the vertices starting at the specified index for this object.
    `void` | `setColors(int index, Color4b[] colors, int start, int length)` Sets the colors associated with the vertices starting at the specified index for this object using data in `colors` starting at index `start` for `length` colors.
    `void` | `setColors(int index, Color4f[] colors)` Sets the colors associated with the vertices starting at the specified index for this object.
    `void` | `setColors(int index, Color4f[] colors, int start, int length)` Sets the colors associated with the vertices starting at the specified index for this object using data in `colors` starting at index `start` for `length` colors.
    `void` | `setColors(int index, float[] colors)` Sets the colors associated with the vertices starting at the specified index for this object.
    `void` | `setColors(int index, float[] colors, int start, int length)` Sets the colors associated with the vertices starting at the specified index for this object using data in `colors` starting at index `start` for `length` colors.
    `void` | `setCoordinate(int index, double[] coordinate)` Sets the coordinate associated with the vertex at the specified index.
    `void` | `setCoordinate(int index, float[] coordinate)` Sets the coordinate associated with the vertex at the specified index for this object.
    `void` | `setCoordinate(int index, Point3d coordinate)` Sets the coordinate associated with the vertex at the specified index for this object.
    `void` | `setCoordinate(int index, Point3f coordinate)` Sets the coordinate associated with the vertex at the specified index for this object.
    `void` | `setCoordinates(int index, double[] coordinates)` Sets the coordinates associated with the vertices starting at the specified index for this object.
    `void` | `setCoordinates(int index, double[] coordinates, int start, int length)` Sets the coordinates associated with the vertices starting at the specified index for this object using coordinate data starting from vertex index `start` for `length` vertices.
    `void` | `setCoordinates(int index, float[] coordinates)` Sets the coordinates associated with the vertices starting at the specified index for this object.
    `void` | `setCoordinates(int index, float[] coordinates, int start, int length)` Sets the coordinates associated with the vertices starting at the specified index for this object using coordinate data starting from vertex index `start` for `length` vertices.
    `void` | `setCoordinates(int index, Point3d[] coordinates)` Sets the coordinates associated with the vertices starting at the specified index for this object.
    `void` | `setCoordinates(int index, Point3d[] coordinates, int start, int length)` Sets the coordinates associated with the vertices starting at the specified index for this object using coordinate data starting from vertex index `start` for `length` vertices.
    `void` | `setCoordinates(int index, Point3f[] coordinates)` Sets the coordinates associated with the vertices starting at the specified index for this object.
    `void` | `setCoordinates(int index, Point3f[] coordinates, int start, int length)` Sets the coordinates associated with the vertices starting at the specified index for this object using coordinate data starting from vertex index `start` for `length` vertices.
    `void` | `setCoordRef3d(Point3d[] coords)` Deprecated. As of Java 3D version 1.3, use geometry by-copy for Point3d arrays
    `void` | `setCoordRef3f(Point3f[] coords)` Deprecated. As of Java 3D version 1.3, use geometry by-copy for Point3f arrays
    `void` | `setCoordRefBuffer(J3DBuffer coords)` Sets the coordinate buffer reference to the specified buffer object.
    `void` | `setCoordRefDouble(double[] coords)` Sets the double coordinate array reference to the specified array.
    `void` | `setCoordRefFloat(float[] coords)` Sets the float coordinate array reference to the specified array.
    `void` | `setInitialColorIndex(int initialColorIndex)` Sets the initial color index for this GeometryArray object.
    `void` | `setInitialCoordIndex(int initialCoordIndex)` Sets the initial coordinate index for this GeometryArray object.
    `void` | `setInitialNormalIndex(int initialNormalIndex)` Sets the initial normal index for this GeometryArray object.
    `void` | `setInitialTexCoordIndex(int texCoordSet, int initialTexCoordIndex)` Sets the initial texture coordinate index for the specified texture coordinate set for this GeometryArray object.
    `void` | `setInitialVertexAttrIndex(int vertexAttrNum, int initialVertexAttrIndex)` Sets the initial vertex attribute index for the specified vertex attribute number for this GeometryArray object.
    `void` | `setInitialVertexIndex(int initialVertexIndex)` Sets the initial vertex index for this GeometryArray object.
    `void` | `setInterleavedVertexBuffer(J3DBuffer vertexData)` Sets the interleaved vertex buffer reference to the specified buffer object.
    `void` | `setInterleavedVertices(float[] vertexData)` Sets the interleaved vertex array reference to the specified array.
    `void` | `setNormal(int index, float[] normal)` Sets the normal associated with the vertex at the specified index for this object.
    `void` | `setNormal(int index, Vector3f normal)` Sets the normal associated with the vertex at the specified index for this object.
    `void` | `setNormalRef3f(Vector3f[] normals)` Deprecated. As of Java 3D version 1.3, use geometry by-copy for Vector3f arrays
    `void` | `setNormalRefBuffer(J3DBuffer normals)` Sets the normal buffer reference to the specified buffer object.
    `void` | `setNormalRefFloat(float[] normals)` Sets the float normal array reference to the specified array.
    `void` | `setNormals(int index, float[] normals)` Sets the normals associated with the vertices starting at the specified index for this object.
    `void` | `setNormals(int index, float[] normals, int start, int length)` Sets the normals associated with the vertices starting at the specified index for this object using data in `normals` starting at index `start` and ending at index `start+length`.
    `void` | `setNormals(int index, Vector3f[] normals)` Sets the normals associated with the vertices starting at the specified index for this object.
    `void` | `setNormals(int index, Vector3f[] normals, int start, int length)` Sets the normals associated with the vertices starting at the specified index for this object using data in `normals` starting at index `start` and ending at index `start+length`.
    `void` | `setTexCoordRef2f(int texCoordSet, TexCoord2f[] texCoords)` Deprecated. As of Java 3D version 1.3, use geometry by-copy for TexCoord2f arrays
    `void` | `setTexCoordRef3f(int texCoordSet, TexCoord3f[] texCoords)` Deprecated. As of Java 3D version 1.3, use geometry by-copy for TexCoord3f arrays
    `void` | `setTexCoordRefBuffer(int texCoordSet, J3DBuffer texCoords)` Sets the texture coordinate buffer reference for the specified texture coordinate set to the specified buffer object.
    `void` | `setTexCoordRefFloat(int texCoordSet, float[] texCoords)` Sets the float texture coordinate array reference for the specified texture coordinate set to the specified array.
    `void` | `setTextureCoordinate(int index, float[] texCoord)` Deprecated. As of Java 3D version 1.2, replaced by `setTextureCoordinate(int texCoordSet, ...)`
    `void` | `setTextureCoordinate(int texCoordSet, int index, float[] texCoord)` Sets the texture coordinate associated with the vertex at the specified index in the specified texture coordinate set for this object.
    `void` | `setTextureCoordinate(int texCoordSet, int index, TexCoord2f texCoord)` Sets the texture coordinate associated with the vertex at the specified index in the specified texture coordinate set for this object.
    `void` | `setTextureCoordinate(int texCoordSet, int index, TexCoord3f texCoord)` Sets the texture coordinate associated with the vertex at the specified index in the specified texture coordinate set for this object.
    `void` | `setTextureCoordinate(int texCoordSet, int index, TexCoord4f texCoord)` Sets the texture coordinate associated with the vertex at the specified index in the specified texture coordinate set for this object.
    `void` | `setTextureCoordinate(int index, Point2f texCoord)` Deprecated. As of Java 3D version 1.2, replaced by `setTextureCoordinate(int texCoordSet, TexCoord2f texCoord)`
    `void` | `setTextureCoordinate(int index, Point3f texCoord)` Deprecated. As of Java 3D version 1.2, replaced by `setTextureCoordinate(int texCoordSet, TexCoord3f texCoord)`
    `void` | `setTextureCoordinates(int index, float[] texCoords)` Deprecated. As of Java 3D version 1.2, replaced by `setTextureCoordinates(int texCoordSet, ...)`
    `void` | `setTextureCoordinates(int index, float[] texCoords, int start, int length)` Deprecated. As of Java 3D version 1.2, replaced by `setTextureCoordinates(int texCoordSet, ...)`
    `void` | `setTextureCoordinates(int texCoordSet, int index, float[] texCoords)` Sets the texture coordinates associated with the vertices starting at the specified index in the specified texture coordinate set for this object.
    `void` | `setTextureCoordinates(int texCoordSet, int index, float[] texCoords, int start, int length)` Sets the texture coordinates associated with the vertices starting at the specified index in the specified texture coordinate set for this object using data in `texCoords` starting at index `start` and ending at index `start+length`.
    `void` | `setTextureCoordinates(int texCoordSet, int index, TexCoord2f[] texCoords)` Sets the texture coordinates associated with the vertices starting at the specified index in the specified texture coordinate set for this object.
    `void` | `setTextureCoordinates(int texCoordSet, int index, TexCoord2f[] texCoords, int start, int length)` Sets the texture coordinates associated with the vertices starting at the specified index in the specified texture coordinate set for this object using data in `texCoords` starting at index `start` and ending at index `start+length`.
    `void` | `setTextureCoordinates(int texCoordSet, int index, TexCoord3f[] texCoords)` Sets the texture coordinates associated with the vertices starting at the specified index in the specified texture coordinate set for this object.
    `void` | `setTextureCoordinates(int texCoordSet, int index, TexCoord3f[] texCoords, int start, int length)` Sets the texture coordinates associated with the vertices starting at the specified index in the specified texture coordinate set for this object.
    `void` | `setTextureCoordinates(int texCoordSet, int index, TexCoord4f[] texCoords)` Sets the texture coordinates associated with the vertices starting at the specified index in the specified texture coordinate set for this object.
    `void` | `setTextureCoordinates(int texCoordSet, int index, TexCoord4f[] texCoords, int start, int length)` Sets the texture coordinates associated with the vertices starting at the specified index in the specified texture coordinate set for this object.
    `void` | `setTextureCoordinates(int index, Point2f[] texCoords)` Deprecated. As of Java 3D version 1.2, replaced by `setTextureCoordinates(int texCoordSet, TexCoord2f texCoords[])`
    `void` | `setTextureCoordinates(int index, Point2f[] texCoords, int start, int length)` Deprecated. As of Java 3D version 1.2, replaced by `setTextureCoordinates(int texCoordSet, TexCoord2f texCoords[], ...)`
    `void` | `setTextureCoordinates(int index, Point3f[] texCoords)` Deprecated. As of Java 3D version 1.2, replaced by `setTextureCoordinates(int texCoordSet, TexCoord3f texCoords[])`
    `void` | `setTextureCoordinates(int index, Point3f[] texCoords, int start, int length)` Deprecated. As of Java 3D version 1.2, replaced by `setTextureCoordinates(int texCoordSet, TexCoord3f texCoords[], ...)`
    `void` | `setValidVertexCount(int validVertexCount)` Sets the valid vertex count for this GeometryArray object.
    `void` | `setVertexAttr(int vertexAttrNum, int index, float[] vertexAttr)` Sets the vertex attribute associated with the vertex at the specified index in the specified vertex attribute number for this object.
    `void` | `setVertexAttr(int vertexAttrNum, int index, Point2f vertexAttr)` Sets the vertex attribute associated with the vertex at the specified index in the specified vertex attribute number for this object.
    `void` | `setVertexAttr(int vertexAttrNum, int index, Point3f vertexAttr)` Sets the vertex attribute associated with the vertex at the specified index in the specified vertex attribute number for this object.
    `void` | `setVertexAttr(int vertexAttrNum, int index, Point4f vertexAttr)` Sets the vertex attribute associated with the vertex at the specified index in the specified vertex attribute number for this object.
    `void` | `setVertexAttrRefBuffer(int vertexAttrNum, J3DBuffer vertexAttrs)` Sets the vertex attribute buffer reference for the specified vertex attribute number to the specified buffer object.
    `void` | `setVertexAttrRefFloat(int vertexAttrNum, float[] vertexAttrs)` Sets the float vertex attribute array reference for the specified vertex attribute number to the specified array.
    `void` | `setVertexAttrs(int vertexAttrNum, int index, float[] vertexAttrs)` Sets the vertex attributes associated with the vertices starting at the specified index in the specified vertex attribute number for this object.
    `void` | `setVertexAttrs(int vertexAttrNum, int index, float[] vertexAttrs, int start, int length)` Sets the vertex attributes associated with the vertices starting at the specified index in the specified vertex attribute number for this object using data in `vertexAttrs` starting at index `start` and ending at index `start+length`.
    `void` | `setVertexAttrs(int vertexAttrNum, int index, Point2f[] vertexAttrs)` Sets the vertex attributes associated with the vertices starting at the specified index in the specified vertex attribute number for this object.
    `void` | `setVertexAttrs(int vertexAttrNum, int index, Point2f[] vertexAttrs, int start, int length)` Sets the vertex attributes associated with the vertices starting at the specified index in the specified vertex attribute number for this object using data in `vertexAttrs` starting at index `start` and ending at index `start+length`.
    `void` | `setVertexAttrs(int vertexAttrNum, int index, Point3f[] vertexAttrs)` Sets the vertex attributes associated with the vertices starting at the specified index in the specified vertex attribute number for this object.
    `void` | `setVertexAttrs(int vertexAttrNum, int index, Point3f[] vertexAttrs, int start, int length)` Sets the vertex attributes associated with the vertices starting at the specified index in the specified vertex attribute number for this object using data in `vertexAttrs` starting at index `start` and ending at index `start+length`.
    `void` | `setVertexAttrs(int vertexAttrNum, int index, Point4f[] vertexAttrs)` Sets the vertex attributes associated with the vertices starting at the specified index in the specified vertex attribute number for this object.
    `void` | `setVertexAttrs(int vertexAttrNum, int index, Point4f[] vertexAttrs, int start, int length)` Sets the vertex attributes associated with the vertices starting at the specified index in the specified vertex attribute number for this object using data in `vertexAttrs` starting at index `start` and ending at index `start+length`.
    `void` | `updateData(GeometryUpdater updater)` Updates geometry array data that is accessed by reference.

    - ### Methods inherited from class javax.media.j3d.NodeComponent

      `cloneNodeComponent, cloneNodeComponent, duplicateNodeComponent, duplicateNodeComponent, getDuplicateOnCloneTree, setDuplicateOnCloneTree`

    - ### Methods inherited from class javax.media.j3d.SceneGraphObject

      `clearCapability, clearCapabilityIsFrequent, duplicateSceneGraphObject, getCapability, getCapabilityIsFrequent, getName, getUserData, isCompiled, isLive, setCapability, setCapabilityIsFrequent, setName, setUserData, toString, updateNodeReferences`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### ALLOW_COORDINATE_READ

          public static final int ALLOW_COORDINATE_READ

      Specifies that this GeometryArray allows reading the array of coordinates.
      See Also:
        Constant Field Values

    - #### ALLOW_COORDINATE_WRITE

          public static final int ALLOW_COORDINATE_WRITE

      Specifies that this GeometryArray allows writing the array of coordinates.
      See Also:
        Constant Field Values

    - #### ALLOW_COLOR_READ

          public static final int ALLOW_COLOR_READ

      Specifies that this GeometryArray allows reading the array of colors.
      See Also:
        Constant Field Values

    - #### ALLOW_COLOR_WRITE

          public static final int ALLOW_COLOR_WRITE

      Specifies that this GeometryArray allows writing the array of colors.
      See Also:
        Constant Field Values

    - #### ALLOW_NORMAL_READ

          public static final int ALLOW_NORMAL_READ

      Specifies that this GeometryArray allows reading the array of normals.
      See Also:
        Constant Field Values

    - #### ALLOW_NORMAL_WRITE

          public static final int ALLOW_NORMAL_WRITE

      Specifies that this GeometryArray allows writing the array of normals.
      See Also:
        Constant Field Values

    - #### ALLOW_TEXCOORD_READ

          public static final int ALLOW_TEXCOORD_READ

      Specifies that this GeometryArray allows reading the array of texture coordinates.
      See Also:
        Constant Field Values

    - #### ALLOW_TEXCOORD_WRITE

          public static final int ALLOW_TEXCOORD_WRITE

      Specifies that this GeometryArray allows writing the array of texture coordinates.
      See Also:
        Constant Field Values

    - #### ALLOW_VERTEX_ATTR_READ

          public static final int ALLOW_VERTEX_ATTR_READ

      Specifies that this GeometryArray allows reading the array of vertex attributes.
      Since:
        Java 3D 1.4
      See Also:
        Constant Field Values

    - #### ALLOW_VERTEX_ATTR_WRITE

          public static final int ALLOW_VERTEX_ATTR_WRITE

      Specifies that this GeometryArray allows writing the array of vertex attributes.
      Since:
        Java 3D 1.4
      See Also:
        Constant Field Values

    - #### ALLOW_COUNT_READ

          public static final int ALLOW_COUNT_READ

      Specifies that this GeometryArray allows reading the count or initial index information for this object.
      See Also:
        Constant Field Values

    - #### ALLOW_COUNT_WRITE

          public static final int ALLOW_COUNT_WRITE

      Specifies that this GeometryArray allows writing the count or initial index information for this object.
      Since:
        Java 3D 1.2
      See Also:
        Constant Field Values

    - #### ALLOW_FORMAT_READ

          public static final int ALLOW_FORMAT_READ

      Specifies that this GeometryArray allows reading the vertex format information for this object.
      See Also:
        Constant Field Values

    - #### ALLOW_REF_DATA_READ

          public static final int ALLOW_REF_DATA_READ

      Specifies that this GeometryArray allows reading the geometry data reference information for this object. This is only used in by-reference geometry mode.
      Since:
        Java 3D 1.2
      See Also:
        Constant Field Values

    - #### ALLOW_REF_DATA_WRITE

          public static final int ALLOW_REF_DATA_WRITE

      Specifies that this GeometryArray allows writing the geometry data reference information for this object. It also enables writing the referenced data itself, via the GeometryUpdater interface. This is only used in by-reference geometry mode.
      Since:
        Java 3D 1.2
      See Also:
        Constant Field Values

    - #### COORDINATES

          public static final int COORDINATES

      Specifies that this GeometryArray contains an array of coordinates. This bit must be set.
      See Also:
        Constant Field Values

    - #### NORMALS

          public static final int NORMALS

      Specifies that this GeometryArray contains an array of normals.
      See Also:
        Constant Field Values

    - #### COLOR_3

          public static final int COLOR_3

      Specifies that this GeometryArray contains an array of colors without alpha.
      See Also:
        Constant Field Values

    - #### COLOR_4

          public static final int COLOR_4

      Specifies that this GeometryArray contains an array of colors with alpha. This takes precedence over COLOR_3.
      See Also:
        Constant Field Values

    - #### TEXTURE_COORDINATE_2

          public static final int TEXTURE_COORDINATE_2

      Specifies that this GeometryArray contains one or more arrays of 2D texture coordinates.
      See Also:
        Constant Field Values

    - #### TEXTURE_COORDINATE_3

          public static final int TEXTURE_COORDINATE_3

      Specifies that this GeometryArray contains one or more arrays of 3D texture coordinates. This takes precedence over TEXTURE_COORDINATE_2.
      See Also:
        Constant Field Values

    - #### TEXTURE_COORDINATE_4

          public static final int TEXTURE_COORDINATE_4

      Specifies that this GeometryArray contains one or more arrays of 4D texture coordinates. This takes precedence over TEXTURE_COORDINATE_2 and TEXTURE_COORDINATE_3.
      Since:
        Java 3D 1.3
      See Also:
        Constant Field Values

    - #### BY_REFERENCE

          public static final int BY_REFERENCE

      Specifies that the position, color, normal, and texture coordinate data for this GeometryArray are accessed by reference.
      Since:
        Java 3D 1.2
      See Also:
        Constant Field Values

    - #### INTERLEAVED

          public static final int INTERLEAVED

      Specifies that the position, color, normal, and texture coordinate data for this GeometryArray are accessed via a single interleaved, floating-point array reference. All of the data values for each vertex are stored in consecutive memory locations. This flag is only valid in conjunction with the `BY_REFERENCE` flag.
      Since:
        Java 3D 1.2
      See Also:
        Constant Field Values

    - #### USE_NIO_BUFFER

          public static final int USE_NIO_BUFFER

      Specifies that geometry by-reference data for this GeometryArray, whether interleaved or non-interleaved, is accessed via J3DBuffer objects that wrap NIO Buffer objects, rather than float, double, byte, or TupleXX arrays. This flag is only valid in conjunction with the `BY_REFERENCE` flag.
      Since:
        Java 3D 1.3
      See Also:
        `J3DBuffer`, `setCoordRefBuffer(J3DBuffer)`, `setColorRefBuffer(J3DBuffer)`, `setNormalRefBuffer(J3DBuffer)`, `setTexCoordRefBuffer(int,J3DBuffer)`, `setVertexAttrRefBuffer(int,J3DBuffer)`, `setInterleavedVertexBuffer(J3DBuffer)`, Constant Field Values

    - #### USE_COORD_INDEX_ONLY

          public static final int USE_COORD_INDEX_ONLY

      Specifies that only the coordinate indices are used for indexed geometry arrays. In this mode, the values from the coordinate index array are used as a single set of index values to access the vertex data for all five vertex components (coord, color, normal, texCoord, and vertexAttr). The color, normal, texCoord, and vertexAttr index arrays are neither allocated nor used. Any attempt to access the color, normal, texCoord, or vertexAttr index arrays will result in a NullPointerException. This flag is only valid for indexed geometry arrays (subclasses of IndexedGeometryArray).
      Since:
        Java 3D 1.3
      See Also:
        Constant Field Values

    - #### VERTEX_ATTRIBUTES

          public static final int VERTEX_ATTRIBUTES

      Specifies that this GeometryArray contains one or more arrays of vertex attributes. These attributes are used in programmable shading.
      Since:
        Java 3D 1.4
      See Also:
        Constant Field Values

    - #### BY_REFERENCE_INDICES

          public static final int BY_REFERENCE_INDICES

      Specifies that the indices in this GeometryArray are accessed by reference. This flag is only valid for indexed geometry arrays (subclasses of IndexedGeometryArray) and only when used in conjunction with the `BY_REFERENCE` and `USE_COORD_INDEX_ONLY` flags.
      Since:
        Java 3D 1.5
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### GeometryArray

          public GeometryArray(int vertexCount,
                       int vertexFormat)

      Constructs an empty GeometryArray object with the specified number of vertices and vertex format. Defaults are used for all other parameters. The default values are as follows:
      texCoordSetCount : 1
      texCoordSetMap : { 0 }
      vertexAttrCount : 0
      vertexAttrSizes : null
      validVertexCount : vertexCount
      initialVertexIndex : 0
      initialCoordIndex : 0
      initialColorIndex : 0
      initialNormalIndex : 0
      initialTexCoordIndex : 0
      initialVertexAttrIndex : 0
      all data array values : 0.0
      all data array references : null
      Parameters:
        `vertexCount` - the number of vertex elements in this GeometryArray
        `vertexFormat` - a mask indicating which components are present in each vertex. This is specified as one or more individual flags that are bitwise "OR"ed together to describe the per-vertex data. The flags include: `COORDINATES`, to signal the inclusion of vertex positions--always present; `NORMALS`, to signal the inclusion of per vertex normals; one of `COLOR_3` or `COLOR_4`, to signal the inclusion of per vertex colors (without or with alpha information); one of `TEXTURE_COORDINATE_2`, `TEXTURE_COORDINATE_3` or `TEXTURE_COORDINATE_4`, to signal the inclusion of per-vertex texture coordinates (2D, 3D or 4D); `BY_REFERENCE`, to indicate that the data is passed by reference rather than by copying; `INTERLEAVED`, to indicate that the referenced data is interleaved in a single array; `USE_NIO_BUFFER`, to indicate that the referenced data is accessed via a J3DBuffer object that wraps an NIO buffer; `USE_COORD_INDEX_ONLY`, to indicate that only the coordinate indices are used for indexed geometry arrays; `BY_REFERENCE_INDICES`, to indicate that the indices are accessed by reference in indexed geometry arrays.

      Throws:
        `java.lang.IllegalArgumentException` - if vertexCount < 0
        `java.lang.IllegalArgumentException` - if vertexFormat does not include `COORDINATES`
        `java.lang.IllegalArgumentException` - if the `USE_COORD_INDEX_ONLY` bit or the `BY_REFERENCE_INDICES` bit is set for non-indexed geometry arrays (that is, GeometryArray objects that are not a subclass of IndexedGeometryArray)
        `java.lang.IllegalArgumentException` - if the `INTERLEAVED` bit is set without the `BY_REFERENCE` bit being set
        `java.lang.IllegalArgumentException` - if the `USE_NIO_BUFFER` bit is set without the `BY_REFERENCE` bit being set
        `java.lang.IllegalArgumentException` - if the `INTERLEAVED` bit and the `VERTEX_ATTRIBUTES` bit are both set
        `java.lang.IllegalArgumentException` - if the `BY_REFERENCE_INDICES` bit is set without the `BY_REFERENCE` and `USE_COORD_INDEX_ONLY` bits being set

    - #### GeometryArray

          public GeometryArray(int vertexCount,
                       int vertexFormat,
                       int texCoordSetCount,
                       int[] texCoordSetMap)

      Constructs an empty GeometryArray object with the specified number of vertices, vertex format, number of texture coordinate sets, and texture coordinate mapping array. Defaults are used for all other parameters.
      Parameters:
        `vertexCount` - the number of vertex elements in this GeometryArray

        `vertexFormat` - a mask indicating which components are present in each vertex. This is specified as one or more individual flags that are bitwise "OR"ed together to describe the per-vertex data. The flags include: `COORDINATES`, to signal the inclusion of vertex positions--always present; `NORMALS`, to signal the inclusion of per vertex normals; one of `COLOR_3` or `COLOR_4`, to signal the inclusion of per vertex colors (without or with alpha information); one of `TEXTURE_COORDINATE_2` or `TEXTURE_COORDINATE_3` or `TEXTURE_COORDINATE_4`, to signal the inclusion of per-vertex texture coordinates (2D , 3D or 4D); `BY_REFERENCE`, to indicate that the data is passed by reference rather than by copying; `INTERLEAVED`, to indicate that the referenced data is interleaved in a single array; `USE_NIO_BUFFER`, to indicate that the referenced data is accessed via a J3DBuffer object that wraps an NIO buffer; `USE_COORD_INDEX_ONLY`, to indicate that only the coordinate indices are used for indexed geometry arrays; `BY_REFERENCE_INDICES`, to indicate that the indices are accessed by reference in indexed geometry arrays.

        `texCoordSetCount` - the number of texture coordinate sets in this GeometryArray object. If `vertexFormat` does not include one of `TEXTURE_COORDINATE_2` or `TEXTURE_COORDINATE_3`, the `texCoordSetCount` parameter is not used.

        `texCoordSetMap` - an array that maps texture coordinate sets to texture units. The array is indexed by texture unit number for each texture unit in the associated Appearance object. The values in the array specify the texture coordinate set within this GeometryArray object that maps to the corresponding texture unit. All elements within the array must be less than `texCoordSetCount`. A negative value specifies that no texture coordinate set maps to the texture unit corresponding to the index. If there are more texture units in any associated Appearance object than elements in the mapping array, the extra elements are assumed to be -1. The same texture coordinate set may be used for more than one texture unit. Each texture unit in every associated Appearance must have a valid source of texture coordinates: either a non-negative texture coordinate set must be specified in the mapping array or texture coordinate generation must be enabled. Texture coordinate generation will take precedence for those texture units for which a texture coordinate set is specified and texture coordinate generation is enabled. If `vertexFormat` does not include one of `TEXTURE_COORDINATE_2` or `TEXTURE_COORDINATE_3` or `TEXTURE_COORDINATE_4`, the `texCoordSetMap` array is not used. The following example illustrates the use of the `texCoordSetMap` array.

        Index | Element | Description
        0 | 1 | Use tex coord set 1 for tex unit 0
        1 | -1 | Use no tex coord set for tex unit 1
        2 | 0 | Use tex coord set 0 for tex unit 2
        3 | 1 | Reuse tex coord set 1 for tex unit 3

      Throws:
        `java.lang.IllegalArgumentException` - if vertexCount < 0
        `java.lang.IllegalArgumentException` - if vertexFormat does not include `COORDINATES`
        `java.lang.IllegalArgumentException` - if the `USE_COORD_INDEX_ONLY` bit or the `BY_REFERENCE_INDICES` bit is set for non-indexed geometry arrays (that is, GeometryArray objects that are not a subclass of IndexedGeometryArray)
        `java.lang.IllegalArgumentException` - if the `INTERLEAVED` bit is set without the `BY_REFERENCE` bit being set
        `java.lang.IllegalArgumentException` - if the `USE_NIO_BUFFER` bit is set without the `BY_REFERENCE` bit being set
        `java.lang.IllegalArgumentException` - if the `INTERLEAVED` bit and the `VERTEX_ATTRIBUTES` bit are both set
        `java.lang.IllegalArgumentException` - if the `BY_REFERENCE_INDICES` bit is set without the `BY_REFERENCE` and `USE_COORD_INDEX_ONLY` bits being set
        `java.lang.IllegalArgumentException` - if `texCoordSetCount < 0`
        `java.lang.IllegalArgumentException` - if any element in `texCoordSetMap[] >= texCoordSetCount`.
      Since:
        Java 3D 1.2

    - #### GeometryArray

          public GeometryArray(int vertexCount,
                       int vertexFormat,
                       int texCoordSetCount,
                       int[] texCoordSetMap,
                       int vertexAttrCount,
                       int[] vertexAttrSizes)

      Constructs an empty GeometryArray object with the specified number of vertices, vertex format, number of texture coordinate sets, texture coordinate mapping array, vertex attribute count, and vertex attribute sizes array.
      Parameters:
        `vertexCount` - the number of vertex elements in this GeometryArray

        `vertexFormat` - a mask indicating which components are present in each vertex. This is specified as one or more individual flags that are bitwise "OR"ed together to describe the per-vertex data. The flags include: `COORDINATES`, to signal the inclusion of vertex positions--always present; `NORMALS`, to signal the inclusion of per vertex normals; one of `COLOR_3` or `COLOR_4`, to signal the inclusion of per vertex colors (without or with alpha information); one of `TEXTURE_COORDINATE_2` or `TEXTURE_COORDINATE_3` or `TEXTURE_COORDINATE_4`, to signal the inclusion of per-vertex texture coordinates (2D , 3D or 4D); `VERTEX_ATTRIBUTES`, to signal the inclusion of one or more arrays of vertex attributes; `BY_REFERENCE`, to indicate that the data is passed by reference rather than by copying; `INTERLEAVED`, to indicate that the referenced data is interleaved in a single array; `USE_NIO_BUFFER`, to indicate that the referenced data is accessed via a J3DBuffer object that wraps an NIO buffer; `USE_COORD_INDEX_ONLY`, to indicate that only the coordinate indices are used for indexed geometry arrays; `BY_REFERENCE_INDICES`, to indicate that the indices are accessed by reference in indexed geometry arrays.

        `texCoordSetCount` - the number of texture coordinate sets in this GeometryArray object. If `vertexFormat` does not include one of `TEXTURE_COORDINATE_2` or `TEXTURE_COORDINATE_3`, the `texCoordSetCount` parameter is not used.

        `texCoordSetMap` - an array that maps texture coordinate sets to texture units. The array is indexed by texture unit number for each texture unit in the associated Appearance object. The values in the array specify the texture coordinate set within this GeometryArray object that maps to the corresponding texture unit. All elements within the array must be less than `texCoordSetCount`. A negative value specifies that no texture coordinate set maps to the texture unit corresponding to the index. If there are more texture units in any associated Appearance object than elements in the mapping array, the extra elements are assumed to be -1. The same texture coordinate set may be used for more than one texture unit. Each texture unit in every associated Appearance must have a valid source of texture coordinates: either a non-negative texture coordinate set must be specified in the mapping array or texture coordinate generation must be enabled. Texture coordinate generation will take precedence for those texture units for which a texture coordinate set is specified and texture coordinate generation is enabled. If `vertexFormat` does not include one of `TEXTURE_COORDINATE_2` or `TEXTURE_COORDINATE_3` or `TEXTURE_COORDINATE_4`, the `texCoordSetMap` array is not used. The following example illustrates the use of the `texCoordSetMap` array.

        Index | Element | Description
        0 | 1 | Use tex coord set 1 for tex unit 0
        1 | -1 | Use no tex coord set for tex unit 1
        2 | 0 | Use tex coord set 0 for tex unit 2
        3 | 1 | Reuse tex coord set 1 for tex unit 3

        `vertexAttrCount` - the number of vertex attributes in this GeometryArray object. If `vertexFormat` does not include `VERTEX_ATTRIBUTES`, the `vertexAttrCount` parameter must be 0.

        `vertexAttrSizes` - is an array that specifes the size of each vertex attribute. Each element in the array specifies the number of components in the attribute, from 1 to 4. The length of the array must be equal to `vertexAttrCount`.

      Throws:
        `java.lang.IllegalArgumentException` - if vertexCount < 0
        `java.lang.IllegalArgumentException` - if vertexFormat does not include `COORDINATES`
        `java.lang.IllegalArgumentException` - if the `USE_COORD_INDEX_ONLY` bit or the `BY_REFERENCE_INDICES` bit is set for non-indexed geometry arrays (that is, GeometryArray objects that are not a subclass of IndexedGeometryArray)
        `java.lang.IllegalArgumentException` - if the `INTERLEAVED` bit is set without the `BY_REFERENCE` bit being set
        `java.lang.IllegalArgumentException` - if the `USE_NIO_BUFFER` bit is set without the `BY_REFERENCE` bit being set
        `java.lang.IllegalArgumentException` - if the `INTERLEAVED` bit and the `VERTEX_ATTRIBUTES` bit are both set
        `java.lang.IllegalArgumentException` - if the `BY_REFERENCE_INDICES` bit is set without the `BY_REFERENCE` and `USE_COORD_INDEX_ONLY` bits being set
        `java.lang.IllegalArgumentException` - if `texCoordSetCount < 0`
        `java.lang.IllegalArgumentException` - if any element in `texCoordSetMap[] >= texCoordSetCount`.
        `java.lang.IllegalArgumentException` - if `vertexAttrCount > 0` and the `VERTEX_ATTRIBUTES` bit is not set
        `java.lang.IllegalArgumentException` - if `vertexAttrCount < 0`
        `java.lang.IllegalArgumentException` - if `vertexAttrSizes.length != vertexAttrCount`
        `java.lang.IllegalArgumentException` - if any element in `vertexAttrSizes[]` is `< 1` or `> 4`.
      Since:
        Java 3D 1.4

  - ### Method Detail

    - #### getVertexCount

          public int getVertexCount()

      Retrieves the number of vertices in this GeometryArray
      Returns:
        number of vertices in this GeometryArray
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph

    - #### getVertexFormat

          public int getVertexFormat()

      Retrieves the vertexFormat of this GeometryArray
      Returns:
        format of vertices in this GeometryArray
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph

    - #### getTexCoordSetCount

          public int getTexCoordSetCount()

      Retrieves the number of texture coordinate sets in this GeometryArray object.
      Returns:
        the number of texture coordinate sets in this GeometryArray object
      Since:
        Java 3D 1.2

    - #### getTexCoordSetMapLength

          public int getTexCoordSetMapLength()

      Retrieves the length of the texture coordinate set mapping array of this GeometryArray object.
      Returns:
        the length of the texture coordinate set mapping array of this GeometryArray object
      Since:
        Java 3D 1.2

    - #### getTexCoordSetMap

          public void getTexCoordSetMap(int[] texCoordSetMap)

      Retrieves the texture coordinate set mapping array from this GeometryArray object.
      Parameters:
        `texCoordSetMap` - an array that will receive a copy of the texture coordinate set mapping array. The array must be large enough to hold all entries of the texture coordinate set mapping array.
      Since:
        Java 3D 1.2

    - #### getVertexAttrCount

          public int getVertexAttrCount()

      Retrieves the number of vertex attributes in this GeometryArray object.
      Returns:
        the number of vertex attributes in this GeometryArray object
      Since:
        Java 3D 1.4

    - #### getVertexAttrSizes

          public void getVertexAttrSizes(int[] vertexAttrSizes)

      Retrieves the vertex attribute sizes array from this GeometryArray object.
      Parameters:
        `vertexAttrSizes` - an array that will receive a copy of the vertex attribute sizes array. The array must hold at least `vertexAttrCount` elements.
      Since:
        Java 3D 1.4

    - #### updateData

          public void updateData(GeometryUpdater updater)

      Updates geometry array data that is accessed by reference. This method calls the updateData method of the specified GeometryUpdater object to synchronize updates to vertex data that is referenced by this GeometryArray object. Applications that wish to modify such data must perform all updates via this method.

      This method may also be used to atomically set multiple references (for example, to coordinate and color arrays) or to atomically change multiple data values through the geometry data copying methods.

      Parameters:
        `updater` - object whose updateData callback method will be called to update the data referenced by this GeometryArray.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set, the vertex data mode is `BY_REFERENCE`, and this object is part of a live or compiled scene graph
      Since:
        Java 3D 1.2

    - #### setValidVertexCount

          public void setValidVertexCount(int validVertexCount)

      Sets the valid vertex count for this GeometryArray object. This count specifies the number of vertices actually used in rendering or other operations such as picking and collision. This attribute is initialized to `vertexCount`.
      Parameters:
        `validVertexCount` - the new valid vertex count.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph

        `java.lang.IllegalArgumentException` - if any of the following are true:
        `validVertexCount < 0`,
        `initialVertexIndex + validVertexCount > vertexCount`,
        `initialCoordIndex + validVertexCount > vertexCount`,
        `initialColorIndex + validVertexCount > vertexCount`,
        `initialNormalIndex + validVertexCount > vertexCount`,
        `initialTexCoordIndex + validVertexCount > vertexCount`,
        `initialVertexAttrIndex + validVertexCount > vertexCount`

        `java.lang.ArrayIndexOutOfBoundsException` - if the geometry data format is `BY_REFERENCE` and any the following are true for non-null array references:
        `CoordRef.length` < num_words * (`initialCoordIndex + validVertexCount`),
        `ColorRef.length` < num_words * (`initialColorIndex + validVertexCount`),
        `NormalRef.length` < num_words * (`initialNormalIndex + validVertexCount`),
        `TexCoordRef.length` < num_words * (`initialTexCoordIndex + validVertexCount`),
        `VertexAttrRef.length` < num_words * (`initialVertexAttrIndex + validVertexCount`),
        `InterleavedVertices.length` < words_per_vertex * (`initialVertexIndex + validVertexCount`)
        where num_words depends on which variant of `set` Array `Ref` is used, and words_per_vertex depends on which vertex formats are enabled for interleaved arrays.
      Since:
        Java 3D 1.2

    - #### getValidVertexCount

          public int getValidVertexCount()

      Gets the valid vertex count for this GeometryArray object. For geometry strip primitives (subclasses of GeometryStripArray), the valid vertex count is defined to be the sum of the stripVertexCounts array.
      Returns:
        the current valid vertex count
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
      Since:
        Java 3D 1.2

    - #### setInitialVertexIndex

          public void setInitialVertexIndex(int initialVertexIndex)

      Sets the initial vertex index for this GeometryArray object. This index specifies the first vertex within this geometry array that is actually used in rendering or other operations such as picking and collision. This attribute is initialized to 0. This attribute is only used when the data mode for this geometry array object is not `BY_REFERENCE` or when the data mode is `INTERLEAVED`.
      Parameters:
        `initialVertexIndex` - the new initial vertex index.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalArgumentException` - if either of the following are true:
        `initialVertexIndex < 0` or
        `initialVertexIndex + validVertexCount > vertexCount`
        `java.lang.ArrayIndexOutOfBoundsException` - if the geometry data format is `INTERLEAVED`, the InterleavedVertices array is non-null, and:
        `InterleavedVertices.length` < num_words * (`initialVertexIndex + validVertexCount`)
        where num_words depends on which vertex formats are enabled.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE` and is not `INTERLEAVED`.
      Since:
        Java 3D 1.2

    - #### getInitialVertexIndex

          public int getInitialVertexIndex()

      Gets the initial vertex index for this GeometryArray object. This attribute is only used when the data mode for this geometry array object is not `BY_REFERENCE` or when the data mode is `INTERLEAVED`.
      Returns:
        the current initial vertex index for this GeometryArray object.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
      Since:
        Java 3D 1.2

    - #### setCoordinate

          public void setCoordinate(int index,
                           float[] coordinate)

      Sets the coordinate associated with the vertex at the specified index for this object.
      Parameters:
        `index` - destination vertex index in this geometry array
        `coordinate` - source array of 3 values containing the new coordinate
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### setCoordinate

          public void setCoordinate(int index,
                           double[] coordinate)

      Sets the coordinate associated with the vertex at the specified index.
      Parameters:
        `index` - destination vertex index in this geometry array
        `coordinate` - source array of 3 values containing the new coordinate
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### setCoordinate

          public void setCoordinate(int index,
                           Point3f coordinate)

      Sets the coordinate associated with the vertex at the specified index for this object.
      Parameters:
        `index` - destination vertex index in this geometry array
        `coordinate` - a point containing the new coordinate
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### setCoordinate

          public void setCoordinate(int index,
                           Point3d coordinate)

      Sets the coordinate associated with the vertex at the specified index for this object.
      Parameters:
        `index` - destination vertex index in this geometry array
        `coordinate` - a point containing the new coordinate
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### setCoordinates

          public void setCoordinates(int index,
                            float[] coordinates)

      Sets the coordinates associated with the vertices starting at the specified index for this object. The entire source array is copied to this geometry array.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `coordinates` - source array of 3*n values containing n new coordinates
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### setCoordinates

          public void setCoordinates(int index,
                            double[] coordinates)

      Sets the coordinates associated with the vertices starting at the specified index for this object. The entire source array is copied to this geometry array.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `coordinates` - source array of 3*n values containing n new coordinates
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### setCoordinates

          public void setCoordinates(int index,
                            Point3f[] coordinates)

      Sets the coordinates associated with the vertices starting at the specified index for this object. The entire source array is copied to this geometry array.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `coordinates` - source array of points containing new coordinates
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### setCoordinates

          public void setCoordinates(int index,
                            Point3d[] coordinates)

      Sets the coordinates associated with the vertices starting at the specified index for this object. The entire source array is copied to this geometry array.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `coordinates` - source array of points containing new coordinates
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### setCoordinates

          public void setCoordinates(int index,
                            float[] coordinates,
                            int start,
                            int length)

      Sets the coordinates associated with the vertices starting at the specified index for this object using coordinate data starting from vertex index `start` for `length` vertices.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `coordinates` - source array of 3*n values containing n new coordinates
        `start` - starting source vertex index in `coordinates` array.
        `length` - number of vertices to be copied.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### setCoordinates

          public void setCoordinates(int index,
                            double[] coordinates,
                            int start,
                            int length)

      Sets the coordinates associated with the vertices starting at the specified index for this object using coordinate data starting from vertex index `start` for `length` vertices.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `coordinates` - source array of 3*n values containing n new coordinates
        `start` - starting source vertex index in `coordinates` array.
        `length` - number of vertices to be copied.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### setCoordinates

          public void setCoordinates(int index,
                            Point3f[] coordinates,
                            int start,
                            int length)

      Sets the coordinates associated with the vertices starting at the specified index for this object using coordinate data starting from vertex index `start` for `length` vertices.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `coordinates` - source array of points containing new coordinates
        `start` - starting source vertex index in `coordinates` array.
        `length` - number of vertices to be copied.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### setCoordinates

          public void setCoordinates(int index,
                            Point3d[] coordinates,
                            int start,
                            int length)

      Sets the coordinates associated with the vertices starting at the specified index for this object using coordinate data starting from vertex index `start` for `length` vertices.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `coordinates` - source array of points containing new coordinates
        `start` - starting source vertex index in `coordinates` array.
        `length` - number of vertices to be copied.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### setColor

          public void setColor(int index,
                      float[] color)

      Sets the color associated with the vertex at the specified index for this object.
      Parameters:
        `index` - destination vertex index in this geometry array
        `color` - source array of 3 or 4 values containing the new color
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if COLOR bit NOT set in constructor `vertexFormat` or array index for element is out of bounds.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### setColor

          public void setColor(int index,
                      byte[] color)

      Sets the color associated with the vertex at the specified index for this object.
      Parameters:
        `index` - destination vertex index in this geometry array
        `color` - source array of 3 or 4 values containing the new color
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if COLOR bit NOT set in constructor `vertexFormat` or array index for element is out of bounds.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### setColor

          public void setColor(int index,
                      Color3f color)

      Sets the color associated with the vertex at the specified index for this object.
      Parameters:
        `index` - destination vertex index in this geometry array
        `color` - a Color3f containing the new color
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if COLOR bit NOT set in constructor `vertexFormat` or array index for element is out of bounds.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if COLOR_4 is specified in the vertex format

    - #### setColor

          public void setColor(int index,
                      Color4f color)

      Sets the color associated with the vertex at the specified index for this object.
      Parameters:
        `index` - destination vertex index in this geometry array
        `color` - a Color4f containing the new color
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if COLOR bit NOT set in constructor `vertexFormat` or array index for element is out of bounds.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if COLOR_3 is specified in the vertex format

    - #### setColor

          public void setColor(int index,
                      Color3b color)

      Sets the color associated with the vertex at the specified index for this object.
      Parameters:
        `index` - destination vertex index in this geometry array
        `color` - a Color3b containing the new color
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if COLOR bit NOT set in constructor `vertexFormat` or array index for element is out of bounds.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if COLOR_4 is specified in the vertex format

    - #### setColor

          public void setColor(int index,
                      Color4b color)

      Sets the color associated with the vertex at the specified index for this object.
      Parameters:
        `index` - destination vertex index in this geometry array
        `color` - a Color4b containing the new color
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if COLOR bit NOT set in constructor `vertexFormat` or array index for element is out of bounds.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if COLOR_3 is specified in the vertex format

    - #### setColors

          public void setColors(int index,
                       float[] colors)

      Sets the colors associated with the vertices starting at the specified index for this object. The entire source array is copied to this geometry array.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `colors` - source array of 3*n or 4*n values containing n new colors
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if COLOR bit NOT set in constructor `vertexFormat` or array index for element is out of bounds.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### setColors

          public void setColors(int index,
                       byte[] colors)

      Sets the colors associated with the vertices starting at the specified index for this object. The entire source array is copied to this geometry array.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `colors` - source array of 3*n or 4*n values containing n new colors
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if COLOR bit NOT set in constructor `vertexFormat` or array index for element is out of bounds.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### setColors

          public void setColors(int index,
                       Color3f[] colors)

      Sets the colors associated with the vertices starting at the specified index for this object. The entire source array is copied to this geometry array.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `colors` - source array of Color3f objects containing new colors
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if COLOR bit NOT set in constructor `vertexFormat` or array index for element is out of bounds.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if COLOR_4 is specified in vertex format

    - #### setColors

          public void setColors(int index,
                       Color4f[] colors)

      Sets the colors associated with the vertices starting at the specified index for this object. The entire source array is copied to this geometry array.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `colors` - source array of Color4f objects containing new colors
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if COLOR bit NOT set in constructor `vertexFormat` or array index for element is out of bounds.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if COLOR_3 is specified in vertex format

    - #### setColors

          public void setColors(int index,
                       Color3b[] colors)

      Sets the colors associated with the vertices starting at the specified index for this object. The entire source array is copied to this geometry array.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `colors` - source array of Color3b objects containing new colors
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if COLOR bit NOT set in constructor `vertexFormat` or array index for element is out of bounds.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if COLOR_4 is specified in vertex format

    - #### setColors

          public void setColors(int index,
                       Color4b[] colors)

      Sets the colors associated with the vertices starting at the specified index for this object. The entire source array is copied to this geometry array.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `colors` - source array of Color4b objects containing new colors
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if COLOR bit NOT set in constructor `vertexFormat` or array index for element is out of bounds.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if COLOR_3 is specified in vertex format

    - #### setColors

          public void setColors(int index,
                       float[] colors,
                       int start,
                       int length)

      Sets the colors associated with the vertices starting at the specified index for this object using data in `colors` starting at index `start` for `length` colors.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `colors` - source array of 3*n or 4*n values containing n new colors
        `start` - starting source vertex index in `colors` array.
        `length` - number of colors to be copied.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if COLOR bit NOT set in constructor `vertexFormat` or array index for element is out of bounds.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### setColors

          public void setColors(int index,
                       byte[] colors,
                       int start,
                       int length)

      Sets the colors associated with the vertices starting at the specified index for this object using data in `colors` starting at index `start` for `length` colors.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `colors` - source array of 3*n or 4*n values containing n new colors
        `start` - starting source vertex index in `colors` array.
        `length` - number of colors to be copied.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if COLOR bit NOT set in constructor `vertexFormat` or array index for element is out of bounds.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### setColors

          public void setColors(int index,
                       Color3f[] colors,
                       int start,
                       int length)

      Sets the colors associated with the vertices starting at the specified index for this object using data in `colors` starting at index `start` for `length` colors.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `colors` - source array of Color3f objects containing new colors
        `start` - starting source vertex index in `colors` array.
        `length` - number of colors to be copied.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if COLOR bit NOT set in constructor `vertexFormat` or array index for element is out of bounds.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if COLOR_4 is specified in vertex format

    - #### setColors

          public void setColors(int index,
                       Color4f[] colors,
                       int start,
                       int length)

      Sets the colors associated with the vertices starting at the specified index for this object using data in `colors` starting at index `start` for `length` colors.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `colors` - source array of Color4f objects containing new colors
        `start` - starting source vertex index in `colors` array.
        `length` - number of colors to be copied.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if COLOR bit NOT set in constructor `vertexFormat` or array index for element is out of bounds.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if COLOR_3 is specified in vertex format

    - #### setColors

          public void setColors(int index,
                       Color3b[] colors,
                       int start,
                       int length)

      Sets the colors associated with the vertices starting at the specified index for this object using data in `colors` starting at index `start` for `length` colors.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `colors` - source array of Color3b objects containing new colors
        `start` - starting source vertex index in `colors` array.
        `length` - number of colors to be copied.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if COLOR bit NOT set in constructor `vertexFormat` or array index for element is out of bounds.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if COLOR_4 is specified in vertex format

    - #### setColors

          public void setColors(int index,
                       Color4b[] colors,
                       int start,
                       int length)

      Sets the colors associated with the vertices starting at the specified index for this object using data in `colors` starting at index `start` for `length` colors.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `colors` - source array of Color4b objects containing new colors
        `start` - starting source vertex index in `colors` array.
        `length` - number of colors to be copied.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if COLOR bit NOT set in constructor `vertexFormat` or array index for element is out of bounds.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if COLOR_3 is specified in vertex format

    - #### setNormal

          public void setNormal(int index,
                       float[] normal)

      Sets the normal associated with the vertex at the specified index for this object.
      Parameters:
        `index` - destination vertex index in this geometry array
        `normal` - source array of 3 values containing the new normal
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if NORMALS bit NOT set in constructor `vertexFormat` or array index for element is out of bounds.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### setNormal

          public void setNormal(int index,
                       Vector3f normal)

      Sets the normal associated with the vertex at the specified index for this object.
      Parameters:
        `index` - destination vertex index in this geometry array
        `normal` - the vector containing the new normal
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if NORMALS bit NOT set in constructor `vertexFormat` or array index for element is out of bounds.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### setNormals

          public void setNormals(int index,
                        float[] normals)

      Sets the normals associated with the vertices starting at the specified index for this object. The entire source array is copied to this geometry array.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `normals` - source array of 3*n values containing n new normals
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if NORMALS bit NOT set in constructor `vertexFormat` or array index for element is out of bounds.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### setNormals

          public void setNormals(int index,
                        Vector3f[] normals)

      Sets the normals associated with the vertices starting at the specified index for this object. The entire source array is copied to this geometry array.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `normals` - source array of vectors containing new normals
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if NORMALS bit NOT set in constructor `vertexFormat` or array index for element is out of bounds.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### setNormals

          public void setNormals(int index,
                        float[] normals,
                        int start,
                        int length)

      Sets the normals associated with the vertices starting at the specified index for this object using data in `normals` starting at index `start` and ending at index `start+length`.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `normals` - source array of 3*n values containing n new normals
        `start` - starting source vertex index in `normals` array.
        `length` - number of normals to be copied.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if NORMALS bit NOT set in constructor `vertexFormat` or array index for element is out of bounds.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### setNormals

          public void setNormals(int index,
                        Vector3f[] normals,
                        int start,
                        int length)

      Sets the normals associated with the vertices starting at the specified index for this object using data in `normals` starting at index `start` and ending at index `start+length`.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `normals` - source array of vectors containing new normals
        `start` - starting source vertex index in `normals` array.
        `length` - number of normals to be copied.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if NORMALS bit NOT set in constructor `vertexFormat` or array index for element is out of bounds.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### setTextureCoordinate

          public void setTextureCoordinate(int index,
                                  float[] texCoord)

      Deprecated. As of Java 3D version 1.2, replaced by `setTextureCoordinate(int texCoordSet, ...)`

    - #### setTextureCoordinate

          public void setTextureCoordinate(int texCoordSet,
                                  int index,
                                  float[] texCoord)

      Sets the texture coordinate associated with the vertex at the specified index in the specified texture coordinate set for this object.
      Parameters:
        `texCoordSet` - texture coordinate set in this geometry array
        `index` - destination vertex index in this geometry array
        `texCoord` - source array of 2, 3 or 4 values containing the new texture coordinate
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat` or if the index or texCoordSet is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
      Since:
        Java 3D 1.2

    - #### setTextureCoordinate

          public void setTextureCoordinate(int index,
                                  Point2f texCoord)

      Deprecated. As of Java 3D version 1.2, replaced by `setTextureCoordinate(int texCoordSet, TexCoord2f texCoord)`

    - #### setTextureCoordinate

          public void setTextureCoordinate(int texCoordSet,
                                  int index,
                                  TexCoord2f texCoord)

      Sets the texture coordinate associated with the vertex at the specified index in the specified texture coordinate set for this object.
      Parameters:
        `texCoordSet` - texture coordinate set in this geometry array
        `index` - destination vertex index in this geometry array
        `texCoord` - the TexCoord2f containing the new texture coordinate
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat` or if the index or texCoordSet is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if TEXTURE_COORDINATE_3 or TEXTURE_COORDINATE_4 is specified in vertex format
      Since:
        Java 3D 1.2

    - #### setTextureCoordinate

          public void setTextureCoordinate(int index,
                                  Point3f texCoord)

      Deprecated. As of Java 3D version 1.2, replaced by `setTextureCoordinate(int texCoordSet, TexCoord3f texCoord)`

    - #### setTextureCoordinate

          public void setTextureCoordinate(int texCoordSet,
                                  int index,
                                  TexCoord3f texCoord)

      Sets the texture coordinate associated with the vertex at the specified index in the specified texture coordinate set for this object.
      Parameters:
        `texCoordSet` - texture coordinate set in this geometry array
        `index` - destination vertex index in this geometry array
        `texCoord` - the TexCoord3f containing the new texture coordinate
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat` or if the index or texCoordSet is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if TEXTURE_COORDINATE_2 or TEXTURE_COORDINATE_4 is specified in vertex format
      Since:
        Java 3D 1.2

    - #### setTextureCoordinate

          public void setTextureCoordinate(int texCoordSet,
                                  int index,
                                  TexCoord4f texCoord)

      Sets the texture coordinate associated with the vertex at the specified index in the specified texture coordinate set for this object.
      Parameters:
        `texCoordSet` - texture coordinate set in this geometry array
        `index` - destination vertex index in this geometry array
        `texCoord` - the TexCoord4f containing the new texture coordinate
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat` or if the index or texCoordSet is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if TEXTURE_COORDINATE_2 or TEXTURE_COORDINATE_3 is specified in vertex format
      Since:
        Java 3D 1.3

    - #### setTextureCoordinates

          public void setTextureCoordinates(int index,
                                   float[] texCoords)

      Deprecated. As of Java 3D version 1.2, replaced by `setTextureCoordinates(int texCoordSet, ...)`

    - #### setTextureCoordinates

          public void setTextureCoordinates(int texCoordSet,
                                   int index,
                                   float[] texCoords)

      Sets the texture coordinates associated with the vertices starting at the specified index in the specified texture coordinate set for this object. The entire source array is copied to this geometry array.
      Parameters:
        `texCoordSet` - texture coordinate set in this geometry array
        `index` - starting destination vertex index in this geometry array
        `texCoords` - source array of 2*n, 3*n or 4*n values containing n new texture coordinates
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat` or if the index or texCoordSet is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
      Since:
        Java 3D 1.2

    - #### setTextureCoordinates

          public void setTextureCoordinates(int index,
                                   Point2f[] texCoords)

      Deprecated. As of Java 3D version 1.2, replaced by `setTextureCoordinates(int texCoordSet, TexCoord2f texCoords[])`

    - #### setTextureCoordinates

          public void setTextureCoordinates(int texCoordSet,
                                   int index,
                                   TexCoord2f[] texCoords)

      Sets the texture coordinates associated with the vertices starting at the specified index in the specified texture coordinate set for this object. The entire source array is copied to this geometry array.
      Parameters:
        `texCoordSet` - texture coordinate set in this geometry array
        `index` - starting destination vertex index in this geometry array
        `texCoords` - source array of TexCoord2f objects containing new texture coordinates
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat` or if the index or texCoordSet is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if TEXTURE_COORDINATE_3 or TEXTURE_COORDINATE_4 is specified in vertex format
      Since:
        Java 3D 1.2

    - #### setTextureCoordinates

          public void setTextureCoordinates(int index,
                                   Point3f[] texCoords)

      Deprecated. As of Java 3D version 1.2, replaced by `setTextureCoordinates(int texCoordSet, TexCoord3f texCoords[])`

    - #### setTextureCoordinates

          public void setTextureCoordinates(int texCoordSet,
                                   int index,
                                   TexCoord3f[] texCoords)

      Sets the texture coordinates associated with the vertices starting at the specified index in the specified texture coordinate set for this object. The entire source array is copied to this geometry array.
      Parameters:
        `texCoordSet` - texture coordinate set in this geometry array
        `index` - starting destination vertex index in this geometry array
        `texCoords` - source array of TexCoord3f objects containing new texture coordinates
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat` or if the index or texCoordSet is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if TEXTURE_COORDINATE_2 or TEXTURE_COORDINATE_4 is specified in vertex format
      Since:
        Java 3D 1.2

    - #### setTextureCoordinates

          public void setTextureCoordinates(int texCoordSet,
                                   int index,
                                   TexCoord4f[] texCoords)

      Sets the texture coordinates associated with the vertices starting at the specified index in the specified texture coordinate set for this object. The entire source array is copied to this geometry array.
      Parameters:
        `texCoordSet` - texture coordinate set in this geometry array
        `index` - starting destination vertex index in this geometry array
        `texCoords` - source array of TexCoord4f objects containing new texture coordinates
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat` or if the index or texCoordSet is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if TEXTURE_COORDINATE_2 or TEXTURE_COORDINATE_3 is specified in vertex format
      Since:
        Java 3D 1.3

    - #### setTextureCoordinates

          public void setTextureCoordinates(int index,
                                   float[] texCoords,
                                   int start,
                                   int length)

      Deprecated. As of Java 3D version 1.2, replaced by `setTextureCoordinates(int texCoordSet, ...)`

    - #### setTextureCoordinates

          public void setTextureCoordinates(int texCoordSet,
                                   int index,
                                   float[] texCoords,
                                   int start,
                                   int length)

      Sets the texture coordinates associated with the vertices starting at the specified index in the specified texture coordinate set for this object using data in `texCoords` starting at index `start` and ending at index `start+length`.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `texCoords` - source array of 2*n , 3*n or 4*n values containing n new texture coordinates
        `start` - starting source vertex index in `texCoords` array.
        `length` - number of texture Coordinates to be copied.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat` or if the index or texCoordSet is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
      Since:
        Java 3D 1.2

    - #### setTextureCoordinates

          public void setTextureCoordinates(int index,
                                   Point2f[] texCoords,
                                   int start,
                                   int length)

      Deprecated. As of Java 3D version 1.2, replaced by `setTextureCoordinates(int texCoordSet, TexCoord2f texCoords[], ...)`

    - #### setTextureCoordinates

          public void setTextureCoordinates(int texCoordSet,
                                   int index,
                                   TexCoord2f[] texCoords,
                                   int start,
                                   int length)

      Sets the texture coordinates associated with the vertices starting at the specified index in the specified texture coordinate set for this object using data in `texCoords` starting at index `start` and ending at index `start+length`.
      Parameters:
        `texCoordSet` - texture coordinate set in this geometry array
        `index` - starting destination vertex index in this geometry array
        `texCoords` - source array of TexCoord2f objects containing new texture coordinates
        `start` - starting source vertex index in `texCoords` array.
        `length` - number of texture Coordinates to be copied.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat` or if the index or texCoordSet is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if TEXTURE_COORDINATE_3 or TEXTURE_COORDINATE_4 is specified in vertex format
      Since:
        Java 3D 1.2

    - #### setTextureCoordinates

          public void setTextureCoordinates(int index,
                                   Point3f[] texCoords,
                                   int start,
                                   int length)

      Deprecated. As of Java 3D version 1.2, replaced by `setTextureCoordinates(int texCoordSet, TexCoord3f texCoords[], ...)`

    - #### setTextureCoordinates

          public void setTextureCoordinates(int texCoordSet,
                                   int index,
                                   TexCoord3f[] texCoords,
                                   int start,
                                   int length)

      Sets the texture coordinates associated with the vertices starting at the specified index in the specified texture coordinate set for this object. starting at index `start` and ending at index `start+length`.
      Parameters:
        `texCoordSet` - texture coordinate set in this geometry array
        `index` - starting destination vertex index in this geometry array
        `texCoords` - source array of TexCoord3f objects containing new texture coordinates
        `start` - starting source vertex index in `texCoords` array.
        `length` - number of texture Coordinates to be copied.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat` or if the index or texCoordSet is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if TEXTURE_COORDINATE_2 or TEXTURE_COORDINATE_4 is specified in vertex format
      Since:
        Java 3D 1.2

    - #### setTextureCoordinates

          public void setTextureCoordinates(int texCoordSet,
                                   int index,
                                   TexCoord4f[] texCoords,
                                   int start,
                                   int length)

      Sets the texture coordinates associated with the vertices starting at the specified index in the specified texture coordinate set for this object. starting at index `start` and ending at index `start+length`.
      Parameters:
        `texCoordSet` - texture coordinate set in this geometry array
        `index` - starting destination vertex index in this geometry array
        `texCoords` - source array of TexCoord4f objects containing new texture coordinates
        `start` - starting source vertex index in `texCoords` array.
        `length` - number of texture Coordinates to be copied.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat` or if the index or texCoordSet is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if TEXTURE_COORDINATE_2 or TEXTURE_COORDINATE_3 is specified in vertex format
      Since:
        Java 3D 1.3

    - #### setVertexAttr

          public void setVertexAttr(int vertexAttrNum,
                           int index,
                           float[] vertexAttr)

      Sets the vertex attribute associated with the vertex at the specified index in the specified vertex attribute number for this object.
      Parameters:
        `vertexAttrNum` - vertex attribute number in this geometry array
        `index` - destination vertex index in this geometry array
        `vertexAttr` - source array of 1, 2, 3 or 4 values containing the new vertex attribute
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if the index or vertexAttrNum is out of range, or if the vertexAttr array is too small.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
      Since:
        Java 3D 1.4

    - #### setVertexAttr

          public void setVertexAttr(int vertexAttrNum,
                           int index,
                           Point2f vertexAttr)

      Sets the vertex attribute associated with the vertex at the specified index in the specified vertex attribute number for this object.
      Parameters:
        `vertexAttrNum` - vertex attribute number in this geometry array
        `index` - destination vertex index in this geometry array
        `vertexAttr` - the Point2f containing the new vertex attribute
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if the index or vertexAttrNum is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if the size of the specified vertex attribute number is not 2.
      Since:
        Java 3D 1.4

    - #### setVertexAttr

          public void setVertexAttr(int vertexAttrNum,
                           int index,
                           Point3f vertexAttr)

      Sets the vertex attribute associated with the vertex at the specified index in the specified vertex attribute number for this object.
      Parameters:
        `vertexAttrNum` - vertex attribute number in this geometry array
        `index` - destination vertex index in this geometry array
        `vertexAttr` - the Point3f containing the new vertex attribute
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if the index or vertexAttrNum is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if the size of the specified vertex attribute number is not 3.
      Since:
        Java 3D 1.4

    - #### setVertexAttr

          public void setVertexAttr(int vertexAttrNum,
                           int index,
                           Point4f vertexAttr)

      Sets the vertex attribute associated with the vertex at the specified index in the specified vertex attribute number for this object.
      Parameters:
        `vertexAttrNum` - vertex attribute number in this geometry array
        `index` - destination vertex index in this geometry array
        `vertexAttr` - the Point4f containing the new vertex attribute
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if the index or vertexAttrNum is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if the size of the specified vertex attribute number is not 4.
      Since:
        Java 3D 1.4

    - #### setVertexAttrs

          public void setVertexAttrs(int vertexAttrNum,
                            int index,
                            float[] vertexAttrs)

      Sets the vertex attributes associated with the vertices starting at the specified index in the specified vertex attribute number for this object. The entire source array is copied to this geometry array.
      Parameters:
        `vertexAttrNum` - vertex attribute number in this geometry array
        `index` - starting destination vertex index in this geometry array
        `vertexAttrs` - source array of 1*n, 2*n, 3*n, or 4*n values containing n new vertex attributes
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if the index or vertexAttrNum is out of range, or if the vertexAttr array is too large.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
      Since:
        Java 3D 1.4

    - #### setVertexAttrs

          public void setVertexAttrs(int vertexAttrNum,
                            int index,
                            Point2f[] vertexAttrs)

      Sets the vertex attributes associated with the vertices starting at the specified index in the specified vertex attribute number for this object. The entire source array is copied to this geometry array.
      Parameters:
        `vertexAttrNum` - vertex attribute number in this geometry array
        `index` - starting destination vertex index in this geometry array
        `vertexAttrs` - source array of Point2f objects containing new vertex attributes
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if the index or vertexAttrNum is out of range, or if the vertexAttr array is too large.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if the size of the specified vertex attribute number is not 2.
      Since:
        Java 3D 1.4

    - #### setVertexAttrs

          public void setVertexAttrs(int vertexAttrNum,
                            int index,
                            Point3f[] vertexAttrs)

      Sets the vertex attributes associated with the vertices starting at the specified index in the specified vertex attribute number for this object. The entire source array is copied to this geometry array.
      Parameters:
        `vertexAttrNum` - vertex attribute number in this geometry array
        `index` - starting destination vertex index in this geometry array
        `vertexAttrs` - source array of Point3f objects containing new vertex attributes
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if the index or vertexAttrNum is out of range, or if the vertexAttr array is too large.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if the size of the specified vertex attribute number is not 3.
      Since:
        Java 3D 1.4

    - #### setVertexAttrs

          public void setVertexAttrs(int vertexAttrNum,
                            int index,
                            Point4f[] vertexAttrs)

      Sets the vertex attributes associated with the vertices starting at the specified index in the specified vertex attribute number for this object. The entire source array is copied to this geometry array.
      Parameters:
        `vertexAttrNum` - vertex attribute number in this geometry array
        `index` - starting destination vertex index in this geometry array
        `vertexAttrs` - source array of Point4f objects containing new vertex attributes
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if the index or vertexAttrNum is out of range, or if the vertexAttr array is too large.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if the size of the specified vertex attribute number is not 4.
      Since:
        Java 3D 1.4

    - #### setVertexAttrs

          public void setVertexAttrs(int vertexAttrNum,
                            int index,
                            float[] vertexAttrs,
                            int start,
                            int length)

      Sets the vertex attributes associated with the vertices starting at the specified index in the specified vertex attribute number for this object using data in `vertexAttrs` starting at index `start` and ending at index `start+length`.
      Parameters:
        `index` - starting destination vertex index in this geometry array
        `vertexAttrs` - source array of 1*n, 2*n, 3*n, or 4*n values containing n new vertex attributes
        `start` - starting source vertex index in `vertexAttrs` array.
        `length` - number of vertex attributes to be copied.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if any of index, (index+length), or vertexAttrNum are out of range, or if vertexAttrs is too small.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
      Since:
        Java 3D 1.4

    - #### setVertexAttrs

          public void setVertexAttrs(int vertexAttrNum,
                            int index,
                            Point2f[] vertexAttrs,
                            int start,
                            int length)

      Sets the vertex attributes associated with the vertices starting at the specified index in the specified vertex attribute number for this object using data in `vertexAttrs` starting at index `start` and ending at index `start+length`.
      Parameters:
        `vertexAttrNum` - vertex attribute number in this geometry array
        `index` - starting destination vertex index in this geometry array
        `vertexAttrs` - source array of Point2f objects containing new vertex attributes
        `start` - starting source vertex index in `vertexAttrs` array.
        `length` - number of vertex attributes to be copied.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if any of index, (index+length), or vertexAttrNum are out of range, or if vertexAttrs is too small.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if the size of the specified vertex attribute number is not 2.
      Since:
        Java 3D 1.4

    - #### setVertexAttrs

          public void setVertexAttrs(int vertexAttrNum,
                            int index,
                            Point3f[] vertexAttrs,
                            int start,
                            int length)

      Sets the vertex attributes associated with the vertices starting at the specified index in the specified vertex attribute number for this object using data in `vertexAttrs` starting at index `start` and ending at index `start+length`.
      Parameters:
        `vertexAttrNum` - vertex attribute number in this geometry array
        `index` - starting destination vertex index in this geometry array
        `vertexAttrs` - source array of Point3f objects containing new vertex attributes
        `start` - starting source vertex index in `vertexAttrs` array.
        `length` - number of vertex attributes to be copied.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if any of index, (index+length), or vertexAttrNum are out of range, or if vertexAttrs is too small.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if the size of the specified vertex attribute number is not 3.
      Since:
        Java 3D 1.4

    - #### setVertexAttrs

          public void setVertexAttrs(int vertexAttrNum,
                            int index,
                            Point4f[] vertexAttrs,
                            int start,
                            int length)

      Sets the vertex attributes associated with the vertices starting at the specified index in the specified vertex attribute number for this object using data in `vertexAttrs` starting at index `start` and ending at index `start+length`.
      Parameters:
        `vertexAttrNum` - vertex attribute number in this geometry array
        `index` - starting destination vertex index in this geometry array
        `vertexAttrs` - source array of Point4f objects containing new vertex attributes
        `start` - starting source vertex index in `vertexAttrs` array.
        `length` - number of vertex attributes to be copied.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if any of index, (index+length), or vertexAttrNum are out of range, or if vertexAttrs is too small.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if the size of the specified vertex attribute number is not 4.
      Since:
        Java 3D 1.4

    - #### getCoordinate

          public void getCoordinate(int index,
                           float[] coordinate)

      Gets the coordinate associated with the vertex at the specified index for this object using data in `texCoords`
      Parameters:
        `index` - source vertex index in this geometry array
        `coordinate` - destination array of 3 values that will receive the coordinate
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### getCoordinate

          public void getCoordinate(int index,
                           double[] coordinate)

      Gets the coordinate associated with the vertex at the specified index for this object.
      Parameters:
        `index` - source vertex index in this geometry array
        `coordinate` - destination array of 3 values that will receive the coordinate
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### getCoordinate

          public void getCoordinate(int index,
                           Point3f coordinate)

      Gets the coordinate associated with the vertex at the specified index for this object.
      Parameters:
        `index` - source vertex index in this geometry array
        `coordinate` - a vector that will receive the coordinate
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### getCoordinate

          public void getCoordinate(int index,
                           Point3d coordinate)

      Gets the coordinate associated with the vertex at the specified index for this object.
      Parameters:
        `index` - source vertex index in this geometry array
        `coordinate` - a vector that will receive the coordinate
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### getCoordinates

          public void getCoordinates(int index,
                            float[] coordinates)

      Gets the coordinates associated with the vertices starting at the specified index for this object. The length of the destination array determines the number of vertices copied. A maximum of `vertexCount-index` coordinates are copied. If the destination array is larger than is needed to hold the coordinates, the excess locations in the array are not modified. If the destination array is smaller than is needed to hold the coordinates, only as many coordinates as the array will hold are copied.
      Parameters:
        `index` - starting source vertex index in this geometry array
        `coordinates` - destination array of 3*n values that will receive new coordinates
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### getCoordinates

          public void getCoordinates(int index,
                            double[] coordinates)

      Gets the coordinates associated with the vertices starting at the specified index for this object. The length of the destination array determines the number of vertices copied. A maximum of `vertexCount-index` coordinates are copied. If the destination array is larger than is needed to hold the coordinates, the excess locations in the array are not modified. If the destination array is smaller than is needed to hold the coordinates, only as many coordinates as the array will hold are copied.
      Parameters:
        `index` - starting source vertex index in this geometry array
        `coordinates` - destination array of 3*n values that will receive new coordinates
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### getCoordinates

          public void getCoordinates(int index,
                            Point3f[] coordinates)

      Gets the coordinates associated with the vertices starting at the specified index for this object. The length of the destination array determines the number of vertices copied. A maximum of `vertexCount-index` coordinates are copied. If the destination array is larger than is needed to hold the coordinates, the excess locations in the array are not modified. If the destination array is smaller than is needed to hold the coordinates, only as many coordinates as the array will hold are copied.
      Parameters:
        `index` - starting source vertex index in this geometry array
        `coordinates` - destination array of points that will receive new coordinates
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### getCoordinates

          public void getCoordinates(int index,
                            Point3d[] coordinates)

      Gets the coordinates associated with the vertices starting at the specified index for this object. The length of the destination array determines the number of vertices copied. A maximum of `vertexCount-index` coordinates are copied. If the destination array is larger than is needed to hold the coordinates, the excess locations in the array are not modified. If the destination array is smaller than is needed to hold the coordinates, only as many coordinates as the array will hold are copied.
      Parameters:
        `index` - starting source vertex index in this geometry array
        `coordinates` - destination array of points that will receive new coordinates
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### getColor

          public void getColor(int index,
                      float[] color)

      Gets the color associated with the vertex at the specified index for this object. The color is copied into the specified array. The array must be large enough to hold all of the colors.
      Parameters:
        `index` - source vertex index in this geometry array
        `color` - destination array of 3 or 4 values that will receive the color
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### getColor

          public void getColor(int index,
                      byte[] color)

      Gets the color associated with the vertex at the specified index for this object. The color is copied into the specified array. The array must be large enough to hold all of the colors.
      Parameters:
        `index` - source vertex index in this geometry array
        `color` - destination array of 3 or 4 values that will receive the color
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### getColor

          public void getColor(int index,
                      Color3f color)

      Gets the color associated with the vertex at the specified index for this object.
      Parameters:
        `index` - source vertex index in this geometry array
        `color` - a vector that will receive the color
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if COLOR_4 is specified in the vertex format

    - #### getColor

          public void getColor(int index,
                      Color4f color)

      Gets the color associated with the vertex at the specified index for this object.
      Parameters:
        `index` - source vertex index in this geometry array
        `color` - a vector that will receive the color
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if COLOR_3 is specified in the vertex format

    - #### getColor

          public void getColor(int index,
                      Color3b color)

      Gets the color associated with the vertex at the specified index for this object.
      Parameters:
        `index` - source vertex index in this geometry array
        `color` - a vector that will receive the color
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if COLOR_4 is specified in the vertex format

    - #### getColor

          public void getColor(int index,
                      Color4b color)

      Gets the color associated with the vertex at the specified index for this object.
      Parameters:
        `index` - source vertex index in this geometry array
        `color` - a vector that will receive the color
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if COLOR_3 is specified in the vertex format

    - #### getColors

          public void getColors(int index,
                       float[] colors)

      Gets the colors associated with the vertices starting at the specified index for this object. The color is copied into the specified array. The length of the destination array determines the number of colors copied. A maximum of `vertexCount-index` colors are copied. If the destination array is larger than is needed to hold the colors, the excess locations in the array are not modified. If the destination array is smaller than is needed to hold the colors, only as many colors as the array will hold are copied.
      Parameters:
        `index` - starting source vertex index in this geometry array
        `colors` - destination array of 3*n or 4*n values that will receive n new colors
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### getColors

          public void getColors(int index,
                       byte[] colors)

      Gets the colors associated with the vertices starting at the specified index for this object. The color is copied into the specified array. The length of the destination array determines the number of colors copied. A maximum of `vertexCount-index` colors are copied. If the destination array is larger than is needed to hold the colors, the excess locations in the array are not modified. If the destination array is smaller than is needed to hold the colors, only as many colors as the array will hold are copied.
      Parameters:
        `index` - starting source vertex index in this geometry array
        `colors` - destination array of 3*n or 4*n values that will receive new colors
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### getColors

          public void getColors(int index,
                       Color3f[] colors)

      Gets the colors associated with the vertices starting at the specified index for this object. The color is copied into the specified array. The length of the destination array determines the number of colors copied. A maximum of `vertexCount-index` colors are copied. If the destination array is larger than is needed to hold the colors, the excess locations in the array are not modified. If the destination array is smaller than is needed to hold the colors, only as many colors as the array will hold are copied.
      Parameters:
        `index` - starting source vertex index in this geometry array
        `colors` - destination array of Color3f objects that will receive new colors
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if COLOR_4 is specified in the vertex format

    - #### getColors

          public void getColors(int index,
                       Color4f[] colors)

      Gets the colors associated with the vertices starting at the specified index for this object. The color is copied into the specified array. The length of the destination array determines the number of colors copied. A maximum of `vertexCount-index` colors are copied. If the destination array is larger than is needed to hold the colors, the excess locations in the array are not modified. If the destination array is smaller than is needed to hold the colors, only as many colors as the array will hold are copied.
      Parameters:
        `index` - starting source vertex index in this geometry array
        `colors` - destination array of Color4f objects that will receive new colors
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if COLOR_3 is specified in the vertex format

    - #### getColors

          public void getColors(int index,
                       Color3b[] colors)

      Gets the colors associated with the vertices starting at the specified index for this object. The color is copied into the specified array. The length of the destination array determines the number of colors copied. A maximum of `vertexCount-index` colors are copied. If the destination array is larger than is needed to hold the colors, the excess locations in the array are not modified. If the destination array is smaller than is needed to hold the colors, only as many colors as the array will hold are copied.
      Parameters:
        `index` - starting source vertex index in this geometry array
        `colors` - destination array of Color3b objects that will receive new colors
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if COLOR_4 is specified in the vertex format

    - #### getColors

          public void getColors(int index,
                       Color4b[] colors)

      Gets the colors associated with the vertices starting at the specified index for this object. The color is copied into the specified array. The length of the destination array determines the number of colors copied. A maximum of `vertexCount-index` colors are copied. If the destination array is larger than is needed to hold the colors, the excess locations in the array are not modified. If the destination array is smaller than is needed to hold the colors, only as many colors as the array will hold are copied.
      Parameters:
        `index` - starting source vertex index in this geometry array
        `colors` - destination array of Color4b objects that will receive new colors
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if COLOR_3 is specified in the vertex format

    - #### getNormal

          public void getNormal(int index,
                       float[] normal)

      Gets the normal associated with the vertex at the specified index for this object. The normal is copied into the specified array.
      Parameters:
        `index` - source vertex index in this geometry array
        `normal` - destination array of 3 values that will receive the normal
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### getNormal

          public void getNormal(int index,
                       Vector3f normal)

      Gets the normal associated with the vertex at the specified index for this object.
      Parameters:
        `index` - source vertex index in this geometry array
        `normal` - the vector that will receive the normal
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### getNormals

          public void getNormals(int index,
                        float[] normals)

      Gets the normals associated with the vertices starting at the specified index for this object. The length of the destination array determines the number of normals copied. A maximum of `vertexCount-index` normals are copied. If the destination array is larger than is needed to hold the normals, the excess locations in the array are not modified. If the destination array is smaller than is needed to hold the normals, only as many normals as the array will hold are copied.
      Parameters:
        `index` - starting source vertex index in this geometry array
        `normals` - destination array of 3*n values that will receive the normal
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### getNormals

          public void getNormals(int index,
                        Vector3f[] normals)

      Gets the normals associated with the vertices starting at the specified index for this object. The length of the destination array determines the number of normals copied. A maximum of `vertexCount-index` normals are copied. If the destination array is larger than is needed to hold the normals, the excess locations in the array are not modified. If the destination array is smaller than is needed to hold the normals, only as many normals as the array will hold are copied.
      Parameters:
        `index` - starting source vertex index in this geometry array
        `normals` - destination array of vectors that will receive the normals
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.

    - #### getTextureCoordinate

          public void getTextureCoordinate(int index,
                                  float[] texCoord)

      Deprecated. As of Java 3D version 1.2, replaced by `getTextureCoordinate(int texCoordSet, ...)`

    - #### getTextureCoordinate

          public void getTextureCoordinate(int texCoordSet,
                                  int index,
                                  float[] texCoord)

      Gets the texture coordinate associated with the vertex at the specified index in the specified texture coordinate set for this object.
      Parameters:
        `texCoordSet` - texture coordinate set in this geometry array
        `index` - source vertex index in this geometry array
        `texCoord` - array of 2, 3 or 4 values that will receive the texture coordinate
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat` or if the index or texCoordSet is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
      Since:
        Java 3D 1.2

    - #### getTextureCoordinate

          public void getTextureCoordinate(int index,
                                  Point2f texCoord)

      Deprecated. As of Java 3D version 1.2, replaced by `getTextureCoordinate(int texCoordSet, TexCoord2f texCoord)`

    - #### getTextureCoordinate

          public void getTextureCoordinate(int texCoordSet,
                                  int index,
                                  TexCoord2f texCoord)

      Gets the texture coordinate associated with the vertex at the specified index in the specified texture coordinate set for this object.
      Parameters:
        `texCoordSet` - texture coordinate set in this geometry array
        `index` - source vertex index in this geometry array
        `texCoord` - the vector that will receive the texture coordinates
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat` or if the index or texCoordSet is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if TEXTURE_COORDINATE_3 or TEXTURE_COORDINATE_4 is specified in vertex format
      Since:
        Java 3D 1.2

    - #### getTextureCoordinate

          public void getTextureCoordinate(int index,
                                  Point3f texCoord)

      Deprecated. As of Java 3D version 1.2, replaced by `getTextureCoordinate(int texCoordSet, TexCoord3f texCoord)`

    - #### getTextureCoordinate

          public void getTextureCoordinate(int texCoordSet,
                                  int index,
                                  TexCoord3f texCoord)

      Gets the texture coordinate associated with the vertex at the specified index in the specified texture coordinate set for this object.
      Parameters:
        `texCoordSet` - texture coordinate set in this geometry array
        `index` - source vertex index in this geometry array
        `texCoord` - the vector that will receive the texture coordinates
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat` or if the index or texCoordSet is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if TEXTURE_COORDINATE_2 or TEXTURE_COORDINATE_4 is specified in vertex format
      Since:
        Java 3D 1.2

    - #### getTextureCoordinate

          public void getTextureCoordinate(int texCoordSet,
                                  int index,
                                  TexCoord4f texCoord)

      Gets the texture coordinate associated with the vertex at the specified index in the specified texture coordinate set for this object.
      Parameters:
        `texCoordSet` - texture coordinate set in this geometry array
        `index` - source vertex index in this geometry array
        `texCoord` - the vector that will receive the texture coordinates
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat` or if the index or texCoordSet is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if TEXTURE_COORDINATE_2 or TEXTURE_COORDINATE_3 is specified in vertex format
      Since:
        Java 3D 1.3

    - #### getTextureCoordinates

          public void getTextureCoordinates(int index,
                                   float[] texCoords)

      Deprecated. As of Java 3D version 1.2, replaced by `getTextureCoordinates(int texCoordSet, ...)`

    - #### getTextureCoordinates

          public void getTextureCoordinates(int texCoordSet,
                                   int index,
                                   float[] texCoords)

      Gets the texture coordinates associated with the vertices starting at the specified index in the specified texture coordinate set for this object. The length of the destination array determines the number of texture coordinates copied. A maximum of `vertexCount-index` texture coordinates are copied. If the destination array is larger than is needed to hold the texture coordinates, the excess locations in the array are not modified. If the destination array is smaller than is needed to hold the texture coordinates, only as many texture coordinates as the array will hold are copied.
      Parameters:
        `texCoordSet` - texture coordinate set in this geometry array
        `index` - starting source vertex index in this geometry array
        `texCoords` - destination array of 2*n , 3*n or 4*n values that will receive n new texture coordinates
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat` or if the index or texCoordSet is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
      Since:
        Java 3D 1.2

    - #### getTextureCoordinates

          public void getTextureCoordinates(int index,
                                   Point2f[] texCoords)

      Deprecated. As of Java 3D version 1.2, replaced by `getTextureCoordinates(int texCoordSet, TexCoord2f texCoords[])`

    - #### getTextureCoordinates

          public void getTextureCoordinates(int texCoordSet,
                                   int index,
                                   TexCoord2f[] texCoords)

      Gets the texture coordinates associated with the vertices starting at the specified index in the specified texture coordinate set for this object. The length of the destination array determines the number of texture coordinates copied. A maximum of `vertexCount-index` texture coordinates are copied. If the destination array is larger than is needed to hold the texture coordinates, the excess locations in the array are not modified. If the destination array is smaller than is needed to hold the texture coordinates, only as many texture coordinates as the array will hold are copied.
      Parameters:
        `texCoordSet` - texture coordinate set in this geometry array
        `index` - starting source vertex index in this geometry array
        `texCoords` - destination array of TexCoord2f objects that will receive the texture coordinates
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat` or if the index or texCoordSet is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if TEXTURE_COORDINATE_3 or TEXTURE_COORDINATE_4 is specified in vertex format
      Since:
        Java 3D 1.2

    - #### getTextureCoordinates

          public void getTextureCoordinates(int index,
                                   Point3f[] texCoords)

      Deprecated. As of Java 3D version 1.2, replaced by `getTextureCoordinates(int texCoordSet, TexCoord3f texCoords[])`

    - #### getTextureCoordinates

          public void getTextureCoordinates(int texCoordSet,
                                   int index,
                                   TexCoord3f[] texCoords)

      Gets the texture coordinates associated with the vertices starting at the specified index in the specified texture coordinate set for this object. The length of the destination array determines the number of texture coordinates copied. A maximum of `vertexCount-index` texture coordinates are copied. If the destination array is larger than is needed to hold the texture coordinates, the excess locations in the array are not modified. If the destination array is smaller than is needed to hold the texture coordinates, only as many texture coordinates as the array will hold are copied.
      Parameters:
        `texCoordSet` - texture coordinate set in this geometry array
        `index` - starting source vertex index in this geometry array
        `texCoords` - destination array of TexCoord3f objects that will receive the texture coordinates
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat` or if the index or texCoordSet is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if TEXTURE_COORDINATE_2 or TEXTURE_COORDINATE_4 is specified in vertex format
      Since:
        Java 3D 1.2

    - #### getTextureCoordinates

          public void getTextureCoordinates(int texCoordSet,
                                   int index,
                                   TexCoord4f[] texCoords)

      Gets the texture coordinates associated with the vertices starting at the specified index in the specified texture coordinate set for this object. The length of the destination array determines the number of texture coordinates copied. A maximum of `vertexCount-index` texture coordinates are copied. If the destination array is larger than is needed to hold the texture coordinates, the excess locations in the array are not modified. If the destination array is smaller than is needed to hold the texture coordinates, only as many texture coordinates as the array will hold are copied.
      Parameters:
        `texCoordSet` - texture coordinate set in this geometry array
        `index` - starting source vertex index in this geometry array
        `texCoords` - destination array of TexCoord4f objects that will receive the texture coordinates
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat` or if the index or texCoordSet is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if TEXTURE_COORDINATE_2 or TEXTURE_COORDINATE_3 is specified in vertex format
      Since:
        Java 3D 1.3

    - #### getVertexAttr

          public void getVertexAttr(int vertexAttrNum,
                           int index,
                           float[] vertexAttr)

      Gets the vertex attribute associated with the vertex at the specified index in the specified vertex attribute number for this object.
      Parameters:
        `vertexAttrNum` - vertex attribute number in this geometry array
        `index` - source vertex index in this geometry array
        `vertexAttr` - array of 1, 2, 3 or 4 values that will receive the vertex attribute
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if the index or vertexAttrNum is out of range, or if the vertexAttr array is too small.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
      Since:
        Java 3D 1.4

    - #### getVertexAttr

          public void getVertexAttr(int vertexAttrNum,
                           int index,
                           Point2f vertexAttr)

      Gets the vertex attribute associated with the vertex at the specified index in the specified vertex attribute number for this object.
      Parameters:
        `vertexAttrNum` - vertex attribute number in this geometry array
        `index` - source vertex index in this geometry array
        `vertexAttr` - the vector that will receive the vertex attributes
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if the index or vertexAttrNum is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if the size of the specified vertex attribute number is not 2.
      Since:
        Java 3D 1.4

    - #### getVertexAttr

          public void getVertexAttr(int vertexAttrNum,
                           int index,
                           Point3f vertexAttr)

      Gets the vertex attribute associated with the vertex at the specified index in the specified vertex attribute number for this object.
      Parameters:
        `vertexAttrNum` - vertex attribute number in this geometry array
        `index` - source vertex index in this geometry array
        `vertexAttr` - the vector that will receive the vertex attributes
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if the index or vertexAttrNum is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if the size of the specified vertex attribute number is not 3.
      Since:
        Java 3D 1.4

    - #### getVertexAttr

          public void getVertexAttr(int vertexAttrNum,
                           int index,
                           Point4f vertexAttr)

      Gets the vertex attribute associated with the vertex at the specified index in the specified vertex attribute number for this object.
      Parameters:
        `vertexAttrNum` - vertex attribute number in this geometry array
        `index` - source vertex index in this geometry array
        `vertexAttr` - the vector that will receive the vertex attributes
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if the index or vertexAttrNum is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if the size of the specified vertex attribute number is not 4.
      Since:
        Java 3D 1.4

    - #### getVertexAttrs

          public void getVertexAttrs(int vertexAttrNum,
                            int index,
                            float[] vertexAttrs)

      Gets the vertex attributes associated with the vertices starting at the specified index in the specified vertex attribute number for this object. The length of the destination array determines the number of vertex attributes copied. A maximum of `vertexCount-index` vertex attributes are copied. If the destination array is larger than is needed to hold the vertex attributes, the excess locations in the array are not modified. If the destination array is smaller than is needed to hold the vertex attributes, only as many vertex attributes as the array will hold are copied.
      Parameters:
        `vertexAttrNum` - vertex attribute number in this geometry array
        `index` - starting source vertex index in this geometry array
        `vertexAttrs` - destination array of 1*n, 2*n, 3*n, or 4*n values that will receive n new vertex attributes
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if the index or vertexAttrNum is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
      Since:
        Java 3D 1.4

    - #### getVertexAttrs

          public void getVertexAttrs(int vertexAttrNum,
                            int index,
                            Point2f[] vertexAttrs)

      Gets the vertex attributes associated with the vertices starting at the specified index in the specified vertex attribute number for this object. The length of the destination array determines the number of vertex attributes copied. A maximum of `vertexCount-index` vertex attributes are copied. If the destination array is larger than is needed to hold the vertex attributes, the excess locations in the array are not modified. If the destination array is smaller than is needed to hold the vertex attributes, only as many vertex attributes as the array will hold are copied.
      Parameters:
        `vertexAttrNum` - vertex attribute number in this geometry array
        `index` - starting source vertex index in this geometry array
        `vertexAttrs` - destination array of Point2f objects that will receive the vertex attributes
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if the index or vertexAttrNum is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if the size of the specified vertex attribute number is not 2.
      Since:
        Java 3D 1.4

    - #### getVertexAttrs

          public void getVertexAttrs(int vertexAttrNum,
                            int index,
                            Point3f[] vertexAttrs)

      Gets the vertex attributes associated with the vertices starting at the specified index in the specified vertex attribute number for this object. The length of the destination array determines the number of vertex attributes copied. A maximum of `vertexCount-index` vertex attributes are copied. If the destination array is larger than is needed to hold the vertex attributes, the excess locations in the array are not modified. If the destination array is smaller than is needed to hold the vertex attributes, only as many vertex attributes as the array will hold are copied.
      Parameters:
        `vertexAttrNum` - vertex attribute number in this geometry array
        `index` - starting source vertex index in this geometry array
        `vertexAttrs` - destination array of Point3f objects that will receive the vertex attributes
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if the index or vertexAttrNum is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if the size of the specified vertex attribute number is not 3.
      Since:
        Java 3D 1.4

    - #### getVertexAttrs

          public void getVertexAttrs(int vertexAttrNum,
                            int index,
                            Point4f[] vertexAttrs)

      Gets the vertex attributes associated with the vertices starting at the specified index in the specified vertex attribute number for this object. The length of the destination array determines the number of vertex attributes copied. A maximum of `vertexCount-index` vertex attributes are copied. If the destination array is larger than is needed to hold the vertex attributes, the excess locations in the array are not modified. If the destination array is smaller than is needed to hold the vertex attributes, only as many vertex attributes as the array will hold are copied.
      Parameters:
        `vertexAttrNum` - vertex attribute number in this geometry array
        `index` - starting source vertex index in this geometry array
        `vertexAttrs` - destination array of Point4f objects that will receive the vertex attributes
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.ArrayIndexOutOfBoundsException` - if the index or vertexAttrNum is out of range.
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is `BY_REFERENCE`.
        `java.lang.IllegalStateException` - if the size of the specified vertex attribute number is not 4.
      Since:
        Java 3D 1.4

    - #### setInitialCoordIndex

          public void setInitialCoordIndex(int initialCoordIndex)

      Sets the initial coordinate index for this GeometryArray object. This index specifies the first coordinate within the array of coordinates referenced by this geometry array that is actually used in rendering or other operations such as picking and collision. This attribute is initialized to 0. This attribute is only used when the data mode for this geometry array object is `BY_REFERENCE` and is not INTERLEAVED.
      Parameters:
        `initialCoordIndex` - the new initial coordinate index.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph

        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE` or if the data mode is `INTERLEAVED`.

        `java.lang.IllegalArgumentException` - if either of the following are true:
        `initialCoordIndex < 0` or
        `initialCoordIndex + validVertexCount > vertexCount`

        `java.lang.ArrayIndexOutOfBoundsException` - if the CoordRef array is non-null and:
        `CoordRef.length` < num_words * (`initialCoordIndex + validVertexCount`)
        where num_words depends on which variant of `setCoordRef` is used.
      Since:
        Java 3D 1.2

    - #### getInitialCoordIndex

          public int getInitialCoordIndex()

      Gets the initial coordinate index for this GeometryArray object. This attribute is only used when the data mode for this geometry array object is `BY_REFERENCE` and is not INTERLEAVED.
      Returns:
        the current initial coordinate index for this GeometryArray object.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
      Since:
        Java 3D 1.2

    - #### setInitialColorIndex

          public void setInitialColorIndex(int initialColorIndex)

      Sets the initial color index for this GeometryArray object. This index specifies the first color within the array of colors referenced by this geometry array that is actually used in rendering or other operations such as picking and collision. This attribute is initialized to 0. This attribute is only used when the data mode for this geometry array object is `BY_REFERENCE` and is not INTERLEAVED.
      Parameters:
        `initialColorIndex` - the new initial color index.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph

        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE` or if the data mode is `INTERLEAVED`.

        `java.lang.IllegalArgumentException` - if either of the following are true:
        `initialColorIndex < 0` or
        `initialColorIndex + validVertexCount > vertexCount`

        `java.lang.ArrayIndexOutOfBoundsException` - if the ColorRef array is non-null and:
        `ColorRef.length` < num_words * (`initialColorIndex + validVertexCount`)
        where num_words depends on which variant of `setColorRef` is used.
      Since:
        Java 3D 1.2

    - #### getInitialColorIndex

          public int getInitialColorIndex()

      Gets the initial color index for this GeometryArray object. This attribute is only used when the data mode for this geometry array object is `BY_REFERENCE` and is not INTERLEAVED.
      Returns:
        the current initial color index for this GeometryArray object.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
      Since:
        Java 3D 1.2

    - #### setInitialNormalIndex

          public void setInitialNormalIndex(int initialNormalIndex)

      Sets the initial normal index for this GeometryArray object. This index specifies the first normal within the array of normals referenced by this geometry array that is actually used in rendering or other operations such as picking and collision. This attribute is initialized to 0. This attribute is only used when the data mode for this geometry array object is `BY_REFERENCE` and is not INTERLEAVED.
      Parameters:
        `initialNormalIndex` - the new initial normal index.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph

        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE` or if the data mode is `INTERLEAVED`.

        `java.lang.IllegalArgumentException` - if either of the following are true:
        `initialNormalIndex < 0` or
        `initialNormalIndex + validVertexCount > vertexCount`

        `java.lang.ArrayIndexOutOfBoundsException` - if normals the NormalRef array is non-null and:
        `NormalRef.length` < num_words * (`initialNormalIndex + validVertexCount`)
        where num_words depends on which variant of `setNormalRef` is used.
      Since:
        Java 3D 1.2

    - #### getInitialNormalIndex

          public int getInitialNormalIndex()

      Gets the initial normal index for this GeometryArray object. This attribute is only used when the data mode for this geometry array object is `BY_REFERENCE` and is not INTERLEAVED.
      Returns:
        the current initial normal index for this GeometryArray object.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
      Since:
        Java 3D 1.2

    - #### setInitialTexCoordIndex

          public void setInitialTexCoordIndex(int texCoordSet,
                                     int initialTexCoordIndex)

      Sets the initial texture coordinate index for the specified texture coordinate set for this GeometryArray object. This index specifies the first texture coordinate within the array of texture coordinates referenced by this geometry array that is actually used in rendering or other operations such as picking and collision. This attribute is initialized to 0. This attribute is only used when the data mode for this geometry array object is `BY_REFERENCE` and is not INTERLEAVED.
      Parameters:
        `texCoordSet` - texture coordinate set in this geometry array
        `initialTexCoordIndex` - the new initial texture coordinate index.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph

        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE` or if the data mode is `INTERLEAVED`.

        `java.lang.IllegalArgumentException` - if either of the following are true:
        `initialTexCoordIndex < 0` or
        `initialTexCoordIndex + validVertexCount > vertexCount`

        `java.lang.ArrayIndexOutOfBoundsException` - if the TexCoordRef array is non-null and:
        `TexCoordRef.length` < num_words * (`initialTexCoordIndex + validVertexCount`)
        where num_words depends on which variant of `setTexCoordRef` is used.

        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat` or if texCoordSet is out of range.
      Since:
        Java 3D 1.2

    - #### getInitialTexCoordIndex

          public int getInitialTexCoordIndex(int texCoordSet)

      Gets the initial texture coordinate index for the specified texture coordinate set for this GeometryArray object. This attribute is only used when the data mode for this geometry array object is `BY_REFERENCE` and is not INTERLEAVED.
      Parameters:
        `texCoordSet` - texture coordinate set in this geometry array
      Returns:
        the current initial texture coordinate index for the specified texture coordinate set
      Throws:
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat` or if texCoordSet is out of range.
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
      Since:
        Java 3D 1.2

    - #### setInitialVertexAttrIndex

          public void setInitialVertexAttrIndex(int vertexAttrNum,
                                       int initialVertexAttrIndex)

      Sets the initial vertex attribute index for the specified vertex attribute number for this GeometryArray object. This index specifies the first vertex attribute within the array of vertex attributes referenced by this geometry array that is actually used in rendering or other operations such as picking and collision. This attribute is initialized to 0. This attribute is only used when the data mode for this geometry array object is `BY_REFERENCE` and is not INTERLEAVED.
      Parameters:
        `vertexAttrNum` - vertex attribute number in this geometry array
        `initialVertexAttrIndex` - the new initial vertex attribute index.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph

        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE` or if the data mode is `INTERLEAVED`.

        `java.lang.IllegalArgumentException` - if either of the following are true:
        `initialVertexAttrIndex < 0` or
        `initialVertexAttrIndex + validVertexCount > vertexCount`

        `java.lang.ArrayIndexOutOfBoundsException` - if the VertexAttrRef array is non-null and:
        `VertexAttrRef.length` < num_words * (`initialVertexAttrIndex + validVertexCount`)
        where num_words is the size of the specified vertexAttrNum (1, 2, 3, or 4).

        `java.lang.ArrayIndexOutOfBoundsException` - if vertexAttrNum is out of range.
      Since:
        Java 3D 1.4

    - #### getInitialVertexAttrIndex

          public int getInitialVertexAttrIndex(int vertexAttrNum)

      Gets the initial vertex attribute index for the specified vertex attribute number for this GeometryArray object. This attribute is only used when the data mode for this geometry array object is `BY_REFERENCE` and is not INTERLEAVED.
      Parameters:
        `vertexAttrNum` - vertex attribute number in this geometry array
      Returns:
        the current initial vertex attribute index for the specified vertex attribute number
      Throws:
        `java.lang.ArrayIndexOutOfBoundsException` - if vertexAttrNum is out of range.
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
      Since:
        Java 3D 1.4

    - #### setCoordRefBuffer

          public void setCoordRefBuffer(J3DBuffer coords)

      Sets the coordinate buffer reference to the specified buffer object. The buffer contains either a java.nio.FloatBuffer or java.nio.DoubleBuffer object containing single or double precision floating-point x, y, and z values for each vertex (for a total of 3*n values, where n is the number of vertices). If the coordinate buffer reference is null, the entire geometry array object is treated as if it were null--any Shape3D or Morph node that uses this geometry array will not be drawn.
      Parameters:
        `coords` - a J3DBuffer object to which a reference will be set. The buffer contains an NIO buffer of 3*n float or double values.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE`, is not `USE_NIO_BUFFER`, or is `INTERLEAVED`.
        `java.lang.IllegalArgumentException` - if the java.nio.Buffer contained in the specified J3DBuffer is not a java.nio.FloatBuffer or a java.nio.DoubleBuffer object.
        `java.lang.ArrayIndexOutOfBoundsException` - if `coords.getBuffer().limit() < 3 * (initialCoordIndex + validVertexCount)`.
        `java.lang.ArrayIndexOutOfBoundsException` - if this GeometryArray object is a subclass of IndexedGeometryArray, and any element in the range `[initialIndexIndex, initialIndexIndex+validIndexCount-1]` in the coordinate index array is greater than or equal to the number of vertices defined by the coords object, `coords.getBuffer().limit() / 3`.
      Since:
        Java 3D 1.3

    - #### getCoordRefBuffer

          public J3DBuffer getCoordRefBuffer()

      Gets the coordinate array buffer reference.
      Returns:
        the current coordinate array buffer reference.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE`, is not `USE_NIO_BUFFER`, or is `INTERLEAVED`.
      Since:
        Java 3D 1.3

    - #### setCoordRefFloat

          public void setCoordRefFloat(float[] coords)

      Sets the float coordinate array reference to the specified array. The array contains floating-point x, y, and z values for each vertex (for a total of 3*n values, where n is the number of vertices). Only one of `coordRefFloat`, `coordRefDouble`, `coordRef3f`, or `coordRef3d` may be non-null (or they may all be null). An attempt to set more than one of these attributes to a non-null reference will result in an exception being thrown. If all coordinate array references are null, the entire geometry array object is treated as if it were null--any Shape3D or Morph node that uses this geometry array will not be drawn.
      Parameters:
        `coords` - an array of 3*n values to which a reference will be set.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE`, is `USE_NIO_BUFFER`, or is `INTERLEAVED`.
        `java.lang.IllegalArgumentException` - if the specified array is non-null and any other coordinate reference is also non-null.
        `java.lang.ArrayIndexOutOfBoundsException` - if `coords.length < 3 * (initialCoordIndex + validVertexCount)`.
        `java.lang.ArrayIndexOutOfBoundsException` - if this GeometryArray object is a subclass of IndexedGeometryArray, and any element in the range `[initialIndexIndex, initialIndexIndex+validIndexCount-1]` in the coordinate index array is greater than or equal to the number of vertices defined by the coords array, `coords.length / 3`.
      Since:
        Java 3D 1.2

    - #### getCoordRefFloat

          public float[] getCoordRefFloat()

      Gets the float coordinate array reference.
      Returns:
        the current float coordinate array reference.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE`, is `USE_NIO_BUFFER`, or is `INTERLEAVED`.
      Since:
        Java 3D 1.2

    - #### setCoordRefDouble

          public void setCoordRefDouble(double[] coords)

      Sets the double coordinate array reference to the specified array. The array contains double-precision floating-point x, y, and z values for each vertex (for a total of 3*n values, where n is the number of vertices). Only one of `coordRefFloat`, `coordRefDouble`, `coordRef3f`, or `coordRef3d` may be non-null (or they may all be null). An attempt to set more than one of these attributes to a non-null reference will result in an exception being thrown. If all coordinate array references are null, the entire geometry array object is treated as if it were null--any Shape3D or Morph node that uses this geometry array will not be drawn.
      Parameters:
        `coords` - an array of 3*n values to which a reference will be set.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE`, is `USE_NIO_BUFFER`, or is `INTERLEAVED`.
        `java.lang.IllegalArgumentException` - if the specified array is non-null and any other coordinate reference is also non-null.
        `java.lang.ArrayIndexOutOfBoundsException` - if `coords.length < 3 * (initialCoordIndex + validVertexCount)`.
        `java.lang.ArrayIndexOutOfBoundsException` - if this GeometryArray object is a subclass of IndexedGeometryArray, and any element in the range `[initialIndexIndex, initialIndexIndex+validIndexCount-1]` in the coordinate index array is greater than or equal to the number of vertices defined by the coords array, `coords.length / 3`.
      Since:
        Java 3D 1.2

    - #### getCoordRefDouble

          public double[] getCoordRefDouble()

      Gets the double coordinate array reference.
      Returns:
        the current double coordinate array reference.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE`, is `USE_NIO_BUFFER`, or is `INTERLEAVED`.
      Since:
        Java 3D 1.2

    - #### setCoordRef3f

          public void setCoordRef3f(Point3f[] coords)

      Deprecated. As of Java 3D version 1.3, use geometry by-copy for Point3f arrays
      Since:
        Java 3D 1.2

    - #### getCoordRef3f

          public Point3f[] getCoordRef3f()

      Deprecated. As of Java 3D version 1.3, use geometry by-copy for Point3f arrays
      Since:
        Java 3D 1.2

    - #### setCoordRef3d

          public void setCoordRef3d(Point3d[] coords)

      Deprecated. As of Java 3D version 1.3, use geometry by-copy for Point3d arrays
      Since:
        Java 3D 1.2

    - #### getCoordRef3d

          public Point3d[] getCoordRef3d()

      Deprecated. As of Java 3D version 1.3, use geometry by-copy for Point3d arrays
      Since:
        Java 3D 1.2

    - #### setColorRefBuffer

          public void setColorRefBuffer(J3DBuffer colors)

      Sets the color buffer reference to the specified buffer object. The buffer contains either a java.nio.FloatBuffer or java.nio.ByteBuffer object containing floating-point or byte red, green, blue, and, optionally, alpha values for each vertex (for a total of 3*n or 4*n values, where n is the number of vertices). If the color buffer reference is null and colors are enabled (that is, the vertexFormat includes either `COLOR_3` or `COLOR_4`), the entire geometry array object is treated as if it were null--any Shape3D or Morph node that uses this geometry array will not be drawn.
      Parameters:
        `colors` - a J3DBuffer object to which a reference will be set. The buffer contains an NIO buffer of 3*n or 4*n float or byte values.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE`, is not `USE_NIO_BUFFER`, or is `INTERLEAVED`.
        `java.lang.IllegalArgumentException` - if the java.nio.Buffer contained in the specified J3DBuffer is not a java.nio.FloatBuffer or a java.nio.ByteBuffer object.
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `COLOR` bits are set in the `vertexFormat`, or if `colors.getBuffer().limit() <` num_words `* (initialColorIndex + validVertexCount)`, where num_words is 3 or 4 depending on the vertex color format.
        `java.lang.ArrayIndexOutOfBoundsException` - if this GeometryArray object is a subclass of IndexedGeometryArray, and any element in the range `[initialIndexIndex, initialIndexIndex+validIndexCount-1]` in the color index array is greater than or equal to the number of vertices defined by the colors object, `colors.getBuffer().limit() /` num_words.
      Since:
        Java 3D 1.3

    - #### getColorRefBuffer

          public J3DBuffer getColorRefBuffer()

      Gets the color array buffer reference.
      Returns:
        the current color array buffer reference.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE`, is not `USE_NIO_BUFFER`, or is `INTERLEAVED`.
      Since:
        Java 3D 1.3

    - #### setColorRefFloat

          public void setColorRefFloat(float[] colors)

      Sets the float color array reference to the specified array. The array contains floating-point red, green, blue, and, optionally, alpha values for each vertex (for a total of 3*n or 4*n values, where n is the number of vertices). Only one of `colorRefFloat`, `colorRefByte`, `colorRef3f`, `colorRef4f`, `colorRef3b`, or `colorRef4b` may be non-null (or they may all be null). An attempt to set more than one of these attributes to a non-null reference will result in an exception being thrown. If all color array references are null and colors are enabled (that is, the vertexFormat includes either `COLOR_3` or `COLOR_4`), the entire geometry array object is treated as if it were null--any Shape3D or Morph node that uses this geometry array will not be drawn.
      Parameters:
        `colors` - an array of 3*n or 4*n values to which a reference will be set.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE`, is `USE_NIO_BUFFER`, or is `INTERLEAVED`.
        `java.lang.IllegalArgumentException` - if the specified array is non-null and any other color reference is also non-null.
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `COLOR` bits are set in the `vertexFormat`, or if `colors.length <` num_words `* (initialColorIndex + validVertexCount)`, where num_words is 3 or 4 depending on the vertex color format.
        `java.lang.ArrayIndexOutOfBoundsException` - if this GeometryArray object is a subclass of IndexedGeometryArray, and any element in the range `[initialIndexIndex, initialIndexIndex+validIndexCount-1]` in the color index array is greater than or equal to the number of vertices defined by the colors array, `colors.length /` num_words.
      Since:
        Java 3D 1.2

    - #### getColorRefFloat

          public float[] getColorRefFloat()

      Gets the float color array reference.
      Returns:
        the current float color array reference.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE`, is `USE_NIO_BUFFER`, or is `INTERLEAVED`.
      Since:
        Java 3D 1.2

    - #### setColorRefByte

          public void setColorRefByte(byte[] colors)

      Sets the byte color array reference to the specified array. The array contains red, green, blue, and, optionally, alpha values for each vertex (for a total of 3*n or 4*n values, where n is the number of vertices). Only one of `colorRefFloat`, `colorRefByte`, `colorRef3f`, `colorRef4f`, `colorRef3b`, or `colorRef4b` may be non-null (or they may all be null). An attempt to set more than one of these attributes to a non-null reference will result in an exception being thrown. If all color array references are null and colors are enabled (that is, the vertexFormat includes either `COLOR_3` or `COLOR_4`), the entire geometry array object is treated as if it were null--any Shape3D or Morph node that uses this geometry array will not be drawn.
      Parameters:
        `colors` - an array of 3*n or 4*n values to which a reference will be set.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE`, is `USE_NIO_BUFFER`, or is `INTERLEAVED`.
        `java.lang.IllegalArgumentException` - if the specified array is non-null and any other color reference is also non-null.
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `COLOR` bits are set in the `vertexFormat`, or if `colors.length <` num_words `* (initialColorIndex + validVertexCount)`, where num_words is 3 or 4 depending on the vertex color format.
        `java.lang.ArrayIndexOutOfBoundsException` - if this GeometryArray object is a subclass of IndexedGeometryArray, and any element in the range `[initialIndexIndex, initialIndexIndex+validIndexCount-1]` in the color index array is greater than or equal to the number of vertices defined by the colors array, `colors.length /` num_words.
      Since:
        Java 3D 1.2

    - #### getColorRefByte

          public byte[] getColorRefByte()

      Gets the byte color array reference.
      Returns:
        the current byte color array reference.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE`, is `USE_NIO_BUFFER`, or is `INTERLEAVED`.
      Since:
        Java 3D 1.2

    - #### setColorRef3f

          public void setColorRef3f(Color3f[] colors)

      Deprecated. As of Java 3D version 1.3, use geometry by-copy for Color3f arrays
      Since:
        Java 3D 1.2

    - #### getColorRef3f

          public Color3f[] getColorRef3f()

      Deprecated. As of Java 3D version 1.3, use geometry by-copy for Color3f arrays
      Since:
        Java 3D 1.2

    - #### setColorRef4f

          public void setColorRef4f(Color4f[] colors)

      Deprecated. As of Java 3D version 1.3, use geometry by-copy for Color4f arrays
      Since:
        Java 3D 1.2

    - #### getColorRef4f

          public Color4f[] getColorRef4f()

      Deprecated. As of Java 3D version 1.3, use geometry by-copy for Color4f arrays
      Since:
        Java 3D 1.2

    - #### setColorRef3b

          public void setColorRef3b(Color3b[] colors)

      Deprecated. As of Java 3D version 1.3, use geometry by-copy for Color3b arrays
      Since:
        Java 3D 1.2

    - #### getColorRef3b

          public Color3b[] getColorRef3b()

      Deprecated. As of Java 3D version 1.3, use geometry by-copy for Color3b arrays
      Since:
        Java 3D 1.2

    - #### setColorRef4b

          public void setColorRef4b(Color4b[] colors)

      Deprecated. As of Java 3D version 1.3, use geometry by-copy for Color4b arrays
      Since:
        Java 3D 1.2

    - #### getColorRef4b

          public Color4b[] getColorRef4b()

      Deprecated. As of Java 3D version 1.3, use geometry by-copy for Color4b arrays
      Since:
        Java 3D 1.2

    - #### setNormalRefBuffer

          public void setNormalRefBuffer(J3DBuffer normals)

      Sets the normal buffer reference to the specified buffer object. The buffer contains a java.nio.FloatBuffer object containing nx, ny, and nz values for each vertex (for a total of 3*n values, where n is the number of vertices). If the normal buffer reference is null and normals are enabled (that is, the vertexFormat includes `NORMAL`), the entire geometry array object is treated as if it were null--any Shape3D or Morph node that uses this geometry array will not be drawn.
      Parameters:
        `normals` - a J3DBuffer object to which a reference will be set. The buffer contains an NIO buffer of 3*n float values.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE`, is not `USE_NIO_BUFFER`, or is `INTERLEAVED`.
        `java.lang.IllegalArgumentException` - if the java.nio.Buffer contained in the specified J3DBuffer is not a java.nio.FloatBuffer object.
        `java.lang.ArrayIndexOutOfBoundsException` - if `NORMALS` bit is not set in the `vertexFormat`, or if `normals.getBuffer().limit() < 3 * (initialNormalIndex + validVertexCount)`.
        `java.lang.ArrayIndexOutOfBoundsException` - if this GeometryArray object is a subclass of IndexedGeometryArray, and any element in the range `[initialIndexIndex, initialIndexIndex+validIndexCount-1]` in the normal index array is greater than or equal to the number of vertices defined by the normals object, `normals.getBuffer().limit() / 3`.
      Since:
        Java 3D 1.3

    - #### getNormalRefBuffer

          public J3DBuffer getNormalRefBuffer()

      Gets the normal array buffer reference.
      Returns:
        the current normal array buffer reference.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE`, is not `USE_NIO_BUFFER`, or is `INTERLEAVED`.
      Since:
        Java 3D 1.3

    - #### setNormalRefFloat

          public void setNormalRefFloat(float[] normals)

      Sets the float normal array reference to the specified array. The array contains floating-point nx, ny, and nz values for each vertex (for a total of 3*n values, where n is the number of vertices). Only one of `normalRefFloat` or `normalRef3f` may be non-null (or they may all be null). An attempt to set more than one of these attributes to a non-null reference will result in an exception being thrown. If all normal array references are null and normals are enabled (that is, the vertexFormat includes `NORMAL`), the entire geometry array object is treated as if it were null--any Shape3D or Morph node that uses this geometry array will not be drawn.
      Parameters:
        `normals` - an array of 3*n values to which a reference will be set.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE`, is `USE_NIO_BUFFER`, or is `INTERLEAVED`.
        `java.lang.IllegalArgumentException` - if the specified array is non-null and any other normal reference is also non-null.
        `java.lang.ArrayIndexOutOfBoundsException` - if `NORMALS` bit is not set in the `vertexFormat`, or if `normals.length < 3 * (initialNormalIndex + validVertexCount)`.
        `java.lang.ArrayIndexOutOfBoundsException` - if this GeometryArray object is a subclass of IndexedGeometryArray, and any element in the range `[initialIndexIndex, initialIndexIndex+validIndexCount-1]` in the normal index array is greater than or equal to the number of vertices defined by the normals array, `normals.length / 3`.
      Since:
        Java 3D 1.2

    - #### getNormalRefFloat

          public float[] getNormalRefFloat()

      Gets the float normal array reference.
      Returns:
        the current float normal array reference.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE`, is `USE_NIO_BUFFER`, or is `INTERLEAVED`.
      Since:
        Java 3D 1.2

    - #### setNormalRef3f

          public void setNormalRef3f(Vector3f[] normals)

      Deprecated. As of Java 3D version 1.3, use geometry by-copy for Vector3f arrays
      Since:
        Java 3D 1.2

    - #### getNormalRef3f

          public Vector3f[] getNormalRef3f()

      Deprecated. As of Java 3D version 1.3, use geometry by-copy for Vector3f arrays
      Since:
        Java 3D 1.2

    - #### setTexCoordRefBuffer

          public void setTexCoordRefBuffer(int texCoordSet,
                                  J3DBuffer texCoords)

      Sets the texture coordinate buffer reference for the specified texture coordinate set to the specified buffer object. The buffer contains a java.nio.FloatBuffer object containing s, t, and, optionally, r and q values for each vertex (for a total of 2*n , 3*n or 4*n values, where n is the number of vertices). If the texCoord buffer reference is null and texture coordinates are enabled (that is, the vertexFormat includes `TEXTURE_COORDINATE_2`, `TEXTURE_COORDINATE_3`, or `TEXTURE_COORDINATE_4`), the entire geometry array object is treated as if it were null--any Shape3D or Morph node that uses this geometry array will not be drawn.
      Parameters:
        `texCoordSet` - texture coordinate set in this geometry array
        `texCoords` - a J3DBuffer object to which a reference will be set. The buffer contains an NIO buffer of 2*n, 3*n or 4*n float values.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE`, is not `USE_NIO_BUFFER`, or is `INTERLEAVED`.
        `java.lang.IllegalArgumentException` - if the java.nio.Buffer contained in the specified J3DBuffer is not a java.nio.FloatBuffer object.
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat`, or if texCoordSet is out of range, or if `texCoords.getBuffer().limit() <` num_words `* (initialTexCoordIndex + validVertexCount)`, where num_words is 2, 3, or 4 depending on the vertex texture coordinate format.
        `java.lang.ArrayIndexOutOfBoundsException` - if this GeometryArray object is a subclass of IndexedGeometryArray, and any element in the range `[initialIndexIndex, initialIndexIndex+validIndexCount-1]` in the texture coordinate index array is greater than or equal to the number of vertices defined by the texCoords object, `texCoords.getBuffer().limit() /` num_words.
      Since:
        Java 3D 1.3

    - #### getTexCoordRefBuffer

          public J3DBuffer getTexCoordRefBuffer(int texCoordSet)

      Gets the texture coordinate array buffer reference for the specified texture coordinate set.
      Parameters:
        `texCoordSet` - texture coordinate set in this geometry array
      Returns:
        the current texture coordinate array buffer reference for the specified texture coordinate set
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE`, is not `USE_NIO_BUFFER`, or is `INTERLEAVED`.
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat` or texCoordSet is out of range.
      Since:
        Java 3D 1.3

    - #### setTexCoordRefFloat

          public void setTexCoordRefFloat(int texCoordSet,
                                 float[] texCoords)

      Sets the float texture coordinate array reference for the specified texture coordinate set to the specified array. The array contains floating-point s, t, and, optionally, r and q values for each vertex (for a total of 2*n , 3*n or 4*n values, where n is the number of vertices). Only one of `texCoordRefFloat`, `texCoordRef2f`, or `texCoordRef3f` may be non-null (or they may all be null). An attempt to set more than one of these attributes to a non-null reference will result in an exception being thrown. If all texCoord array references are null and texture coordinates are enabled (that is, the vertexFormat includes `TEXTURE_COORDINATE_2`, `TEXTURE_COORDINATE_3`, or `TEXTURE_COORDINATE_4`), the entire geometry array object is treated as if it were null--any Shape3D or Morph node that uses this geometry array will not be drawn.
      Parameters:
        `texCoordSet` - texture coordinate set in this geometry array
        `texCoords` - an array of 2*n, 3*n or 4*n values to which a reference will be set.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE`, is `USE_NIO_BUFFER`, or is `INTERLEAVED`.
        `java.lang.IllegalArgumentException` - if the specified array is non-null and any other texCoord reference is also non-null.
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat`, or if texCoordSet is out of range, or if `texCoords.length <` num_words `* (initialTexCoordIndex + validVertexCount)`, where num_words is 2, 3, or 4 depending on the vertex texture coordinate format.
        `java.lang.ArrayIndexOutOfBoundsException` - if this GeometryArray object is a subclass of IndexedGeometryArray, and any element in the range `[initialIndexIndex, initialIndexIndex+validIndexCount-1]` in the texture coordinate index array is greater than or equal to the number of vertices defined by the texCoords array, `texCoords.length /` num_words.
      Since:
        Java 3D 1.2

    - #### getTexCoordRefFloat

          public float[] getTexCoordRefFloat(int texCoordSet)

      Gets the float texture coordinate array reference for the specified texture coordinate set.
      Parameters:
        `texCoordSet` - texture coordinate set in this geometry array
      Returns:
        the current float texture coordinate array reference for the specified texture coordinate set
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE`, is `USE_NIO_BUFFER`, or is `INTERLEAVED`.
        `java.lang.ArrayIndexOutOfBoundsException` - if none of the `TEXTURE_COORDINATE` bits are set in the `vertexFormat` or texCoordSet is out of range.
      Since:
        Java 3D 1.2

    - #### setTexCoordRef2f

          public void setTexCoordRef2f(int texCoordSet,
                              TexCoord2f[] texCoords)

      Deprecated. As of Java 3D version 1.3, use geometry by-copy for TexCoord2f arrays
      Since:
        Java 3D 1.2

    - #### getTexCoordRef2f

          public TexCoord2f[] getTexCoordRef2f(int texCoordSet)

      Deprecated. As of Java 3D version 1.3, use geometry by-copy for TexCoord2f arrays
      Since:
        Java 3D 1.2

    - #### setTexCoordRef3f

          public void setTexCoordRef3f(int texCoordSet,
                              TexCoord3f[] texCoords)

      Deprecated. As of Java 3D version 1.3, use geometry by-copy for TexCoord3f arrays
      Since:
        Java 3D 1.2

    - #### getTexCoordRef3f

          public TexCoord3f[] getTexCoordRef3f(int texCoordSet)

      Deprecated. As of Java 3D version 1.3, use geometry by-copy for TexCoord3f arrays
      Since:
        Java 3D 1.2

    - #### setVertexAttrRefBuffer

          public void setVertexAttrRefBuffer(int vertexAttrNum,
                                    J3DBuffer vertexAttrs)

      Sets the vertex attribute buffer reference for the specified vertex attribute number to the specified buffer object. The buffer contains a java.nio.FloatBuffer object containing 1, 2, 3, or 4 values for each vertex (for a total of 1*n, 2*n, 3*n, or 4*n values, where n is the number of vertices). If the vertexAttr buffer reference is null and vertex attributes are enabled (that is, the vertexFormat includes `VERTEX_ATTRIBUTES`), the entire geometry array object is treated as if it were null--any Shape3D node that uses this geometry array will not be drawn.
      Parameters:
        `vertexAttrNum` - vertex attribute number in this geometry array
        `vertexAttrs` - a J3DBuffer object to which a reference will be set. The buffer contains an NIO buffer of 1*n, 2*n, 3*n, or 4*n float values.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE`, is not `USE_NIO_BUFFER`, or is `INTERLEAVED`.
        `java.lang.IllegalArgumentException` - if the java.nio.Buffer contained in the specified J3DBuffer is not a java.nio.FloatBuffer object.
        `java.lang.ArrayIndexOutOfBoundsException` - if vertexAttrNum is out of range, or if `vertexAttrs.getBuffer().limit() <` num_words `* (initialVertexAttrIndex + validVertexCount)`, where num_words is the size of the specified vertexAttrNum (1, 2, 3, or 4).
        `java.lang.ArrayIndexOutOfBoundsException` - if this GeometryArray object is a subclass of IndexedGeometryArray, and any element in the range `[initialIndexIndex, initialIndexIndex+validIndexCount-1]` in the vertex attribute index array is greater than or equal to the number of vertices defined by the vertexAttrs object, `vertexAttrs.getBuffer().limit() /` num_words.
      Since:
        Java 3D 1.4

    - #### getVertexAttrRefBuffer

          public J3DBuffer getVertexAttrRefBuffer(int vertexAttrNum)

      Gets the vertex attribute array buffer reference for the specified vertex attribute number.
      Parameters:
        `vertexAttrNum` - vertex attribute number in this geometry array
      Returns:
        the current vertex attribute array buffer reference for the specified vertex attribute number
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE`, is not `USE_NIO_BUFFER`, or is `INTERLEAVED`.
        `java.lang.ArrayIndexOutOfBoundsException` - if vertexAttrNum is out of range.
      Since:
        Java 3D 1.4

    - #### setVertexAttrRefFloat

          public void setVertexAttrRefFloat(int vertexAttrNum,
                                   float[] vertexAttrs)

      Sets the float vertex attribute array reference for the specified vertex attribute number to the specified array. The array contains 1, 2, 3, or 4 floating-point values for each vertex (for a total of 1*n, 2*n, 3*n, or 4*n values, where n is the number of vertices). If the vertexAttr array reference is null and vertex attributes are enabled (that is, the vertexFormat includes `VERTEX_ATTRIBUTES`), the entire geometry array object is treated as if it were null--any Shape3D node that uses this geometry array will not be drawn.
      Parameters:
        `vertexAttrNum` - vertex attribute number in this geometry array
        `vertexAttrs` - an array of 1*n, 2*n, 3*n, or 4*n values to which a reference will be set.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE`, is `USE_NIO_BUFFER`, or is `INTERLEAVED`.
        `java.lang.ArrayIndexOutOfBoundsException` - if vertexAttrNum is out of range, or if `vertexAttrs.length <` num_words `* (initialVertexAttrIndex + validVertexCount)`, where num_words is the size of the specified vertexAttrNum (1, 2, 3, or 4).
        `java.lang.ArrayIndexOutOfBoundsException` - if this GeometryArray object is a subclass of IndexedGeometryArray, and any element in the range `[initialIndexIndex, initialIndexIndex+validIndexCount-1]` in the vertex attribute index array is greater than or equal to the number of vertices defined by the vertexAttrs array, `vertexAttrs.length /` num_words.
      Since:
        Java 3D 1.4

    - #### getVertexAttrRefFloat

          public float[] getVertexAttrRefFloat(int vertexAttrNum)

      Gets the float vertex attribute array reference for the specified vertex attribute number.
      Parameters:
        `vertexAttrNum` - vertex attribute number in this geometry array
      Returns:
        the current float vertex attribute array reference for the specified vertex attribute number
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `BY_REFERENCE`, is `USE_NIO_BUFFER`, or is `INTERLEAVED`.
        `java.lang.ArrayIndexOutOfBoundsException` - if vertexAttrNum is out of range.
      Since:
        Java 3D 1.4

    - #### setInterleavedVertices

          public void setInterleavedVertices(float[] vertexData)

      Sets the interleaved vertex array reference to the specified array. The vertex components must be stored in a predetermined order in the array. The order is: texture coordinates, colors, normals, and positional coordinates. Vertex attributes are not supported in interleaved mode. In the case of texture coordinates, the values for each texture coordinate set are stored in order from 0 through texCoordSetCount-1. Only those components that are enabled appear in the vertex. The number of words per vertex depends on which vertex components are enabled. Texture coordinates, if enabled, use 2 words per texture coordinate set per vertex for `TEXTURE_COORDINATE_2`, 3 words per texture coordinate set per vertex for `TEXTURE_COORDINATE_3` or 4 words per texture coordinate set per vertex for `TEXTURE_COORDINATE_4`. Colors, if enabled, use 3 words per vertex for `COLOR_3` or 4 words per vertex for `COLOR_4`. Normals, if enabled, use 3 words per vertex. Positional coordinates, which are always enabled, use 3 words per vertex. For example, the format of interleaved data for a GeometryArray object whose vertexFormat includes `COORDINATES`, `COLOR_3`, and `NORMALS` would be: red, green, blue, Nx, Ny, Nz, x, y, z. All components of a vertex are stored in adjacent memory locations. The first component of vertex 0 is stored beginning at index 0 in the array. The first component of vertex 1 is stored beginning at index words_per_vertex in the array. The total number of words needed to store n vertices is words_per_vertex*n.
      Parameters:
        `vertexData` - an array of vertex values to which a reference will be set.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `INTERLEAVED` or is `USE_NIO_BUFFER`.
        `java.lang.ArrayIndexOutOfBoundsException` - if `vertexData.length` < words_per_vertex * (`initialVertexIndex + validVertexCount`), where words_per_vertex depends on which formats are enabled.
        `java.lang.ArrayIndexOutOfBoundsException` - if this GeometryArray object is a subclass of IndexedGeometryArray, and any element in the range `[initialIndexIndex, initialIndexIndex+validIndexCount-1]` in the index array associated with any of the enabled vertex components (coord, color, normal, texcoord) is greater than or equal to the number of vertices defined by the vertexData array, `vertexData.length /` words_per_vertex.
      Since:
        Java 3D 1.2

    - #### getInterleavedVertices

          public float[] getInterleavedVertices()

      Gets the interleaved vertices array reference.
      Returns:
        the current interleaved vertices array reference.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `INTERLEAVED` or is `USE_NIO_BUFFER`.
      Since:
        Java 3D 1.2

    - #### setInterleavedVertexBuffer

          public void setInterleavedVertexBuffer(J3DBuffer vertexData)

      Sets the interleaved vertex buffer reference to the specified buffer object. The buffer must contain a java.nio.FloatBuffer object. The vertex components must be stored in a predetermined order in the buffer. The order is: texture coordinates, colors, normals, and positional coordinates. Vertex attributes are not supported in interleaved mode. In the case of texture coordinates, the values for each texture coordinate set are stored in order from 0 through texCoordSetCount-1. Only those components that are enabled appear in the vertex. The number of words per vertex depends on which vertex components are enabled. Texture coordinates, if enabled, use 2 words per texture coordinate set per vertex for `TEXTURE_COORDINATE_2`, 3 words per texture coordinate set per vertex for `TEXTURE_COORDINATE_3` or 4 words per texture coordinate set per vertex for `TEXTURE_COORDINATE_4`. Colors, if enabled, use 3 words per vertex for `COLOR_3` or 4 words per vertex for `COLOR_4`. Normals, if enabled, use 3 words per vertex. Positional coordinates, which are always enabled, use 3 words per vertex. For example, the format of interleaved data for a GeometryArray object whose vertexFormat includes `COORDINATES`, `COLOR_3`, and `NORMALS` would be: red, green, blue, Nx, Ny, Nz, x, y, z. All components of a vertex are stored in adjacent memory locations. The first component of vertex 0 is stored beginning at index 0 in the buffer. The first component of vertex 1 is stored beginning at index words_per_vertex in the buffer. The total number of words needed to store n vertices is words_per_vertex*n.
      Parameters:
        `vertexData` - a J3DBuffer object to which a reference will be set. The buffer contains an NIO float buffer of words_per_vertex*n values.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `INTERLEAVED` or is not `USE_NIO_BUFFER`.
        `java.lang.IllegalArgumentException` - if the java.nio.Buffer contained in the specified J3DBuffer is not a java.nio.FloatBuffer object.
        `java.lang.ArrayIndexOutOfBoundsException` - if `vertexData.getBuffer().limit()` < words_per_vertex * (`initialVertexIndex + validVertexCount`), where words_per_vertex depends on which formats are enabled.
        `java.lang.ArrayIndexOutOfBoundsException` - if this GeometryArray object is a subclass of IndexedGeometryArray, and any element in the range `[initialIndexIndex, initialIndexIndex+validIndexCount-1]` in the index array associated with any of the enabled vertex components (coord, color, normal, texcoord) is greater than or equal to the number of vertices defined by the vertexData object, `vertexData.getBuffer().limit() /` words_per_vertex.
      Since:
        Java 3D 1.3

    - #### getInterleavedVertexBuffer

          public J3DBuffer getInterleavedVertexBuffer()

      Gets the interleaved vertex array buffer reference.
      Returns:
        the current interleaved vertex array buffer reference.
      Throws:
        `CapabilityNotSetException` - if the appropriate capability is not set and this object is part of a live or compiled scene graph
        `java.lang.IllegalStateException` - if the data mode for this geometry array object is not `INTERLEAVED` or is not `USE_NIO_BUFFER`.
      Since:
        Java 3D 1.3

Copyright 1996-2008 Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms.