Class SoIndexedShape

  • All Implemented Interfaces:
    SafeDisposable
    Direct Known Subclasses:
    SoIndexedFaceSet, SoIndexedLineSet, SoIndexedPointSet, SoIndexedQuadMesh, SoIndexedTriangleFanSet, SoIndexedTriangleSet, SoIndexedTriangleStripSet

    public abstract class SoIndexedShape
    extends SoVertexShape
    Abstract base class for all indexed vertex-based shapes. This node is the abstract base class for all vertex-based shapes that are constructed from indices, including SoIndexedFaceSet, SoIndexedTriangleStripSet, and SoIndexedLineSet. SoIndexedShape defines fields that are used in all of its subclasses.

    All subclasses of SoNonIndexedShape construct objects by using the coordinates specified by the vertexProperty field (from SoVertexShape), or the current inherited coordinates. The coordIndex field defined by this class contains the indices into the current coordinates of the vertices of the shape. These indices are also used for materials, normals, tangents or texture coordinates when the appropriate binding is PER_VERTEX_INDEXED.

    Material, normal and tangent bindings are interpreted as follows for each subclass:

      <TABLE border=0 cellspacing=0 cellpadding=5>
         <TR><TD valign=_top> OVERALL              <TD valign=_top> One material for the entire shape.
         <TR><TD valign=_top> PER_PART             <TD valign=_top> Specific to the subclass.
         <TR><TD valign=_top> PER_PART_INDEXED     <TD valign=_top> Same as PER_PART, using indices from the #materialIndex,
    
    normalIndex or tangentIndex field.

    PER_FACE

    Specific to the subclass.

    PER_FACE_INDEXED

    Same as PER_FACE, using indices from the materialIndex, normalIndex or tangentIndex field.

    PER_VERTEX

    One material per vertex.

    PER_VERTEX_INDEXED

    One material per vertex, using indices from the materialIndex, normalIndex or tangentIndex field.

    When any _INDEXED binding is used for materials, normals or tangents, the materialIndex, normalIndex or tangentIndex field is used to determine the indices for the materials, normals or tangents. If this field contains a single value of -1 (the default), the coordinate indices from the coordIndex field are used as well for materials, normals or tangents. When the binding is PER_VERTEX_INDEXED, indices in these fields that correspond to negative indices in coordIndex are skipped; for other index bindings all the values in the fields are used, in order.

    Explicit texture coordinates (as defined by SoTextureCoordinate2) may be bound to vertices of an indexed shape consecutively (if the texture coordinate binding is PER_VERTEX) or by using the indices in the textureCoordIndex field (if the binding is PER_VERTEX_INDEXED). As with all vertex-based shapes, if there is a current texture but no texture coordinates are specified, a default texture coordinate mapping is calculated using the bounding box of the shape.

    Be sure that the indices contained in the coordIndex, materialIndex, normalIndex, tangentIndex, and textureCoordIndex fields are valid with respect to the current state, or errors will occur.

    Limitations:

    • Due to limitations of the OpenGL VBO (vertex buffer object) rendering model, in general it is not possible to use VBO rendering (and performance may be lower) if either the normal binding, tangent binding or the material binding is set to either PER_PART(_INDEXED) or PER_FACE(_INDEXED). See individual derived classes for exceptions.

    File format/default:

    This is an abstract class. See the reference page of a derived class for the format and default values.

    SoIndexedFaceSet, SoIndexedLineSet, SoIndexedTriangleStripSet, SoMaterialBinding, SoNonIndexedShape, SoNormalBinding, SoTangentBinding, SoShapeHints, SoTextureCoordinateBinding

    • Field Detail

      • coordIndex

        public final SoMFInt32 coordIndex
        The indices of the coordinates that the shape uses as its vertices. The coordinates connect to form faces, lines, or other shapes. Each subclass defines special negative indices to use to indicate separation between faces, lines, and so on.
      • materialIndex

        public final SoMFInt32 materialIndex
        The indices of the materials that are used for the shape. This field is used only when the material binding is one of the _INDEXED bindings. By default, the value of this field indicates that the coordinate indices should be used for materials as well.
      • normalIndex

        public final SoMFInt32 normalIndex
        The indices of the normals that are used for the shape. This field is used only when the normal binding is one of the _INDEXED bindings. By default, the value of this field indicates that the coordinate indices should be used for normals as well.
      • tangentIndex

        public final SoMFInt32 tangentIndex
        The indices of the tangents that are used for the shape. This field is used only when the tangent binding is one of the _INDEXED bindings. By default, the value of this field indicates that the coordinate indices should be used for tangents as well.
      • textureCoordIndex

        public final SoMFInt32 textureCoordIndex
        The indices of the texture coordinates that are used for the shape. This field is used only when the texture coordinate binding is one of the _INDEXED bindings. By default, the value of this field indicates that the coordinate indices should be used for texture coordinates as well.