This class is a specialization of the Base Vertex class, and is used to indicate that one or more of the Base Vertex's components are contained within a "table" found higher in the Aggregate Geometry tree. These components may include the Color, Location, Reference Vector, Texture Coordinate, and Property Table Reference classes. The purpose of this specialization is to make reuse and sharing of these components explicit in the data model.
Component objects are reused by instantiating the object as a component of a table, which itself is instanced as a component an Aggregate Geometry object. A Vertex with Component Indices object is then instanced as a component of a primitive. The values of the fields of this object are indices into the table, or collection of tables, which lie above the Vertex with Component Indices object in the hierarchy. The indices are resolve to the exact objects by traversing up the aggregation tree until a table of the correct class (with respect to the component index being evaluated) is encountered as a component of an Aggregate Geometry object. A test must then be made to determine if the span of the table instance includes the index being evaluated (see the Color Entry Table, Location Table, Reference Vector Table, Texture Coordinate Table, Property Table Reference Table class descriptions for more information).
If the table does span the index being evaluated, then the start index of the table is used to determine which ordered component of the table the index refers. In lieu of a valid index value, an field of this class may be set to the sentinel value SE_COMPONENT_IS_AGGREGATED. This value indicates that the respective component is a formal component of the Vertex with Component Indices object, and is NOT contained in a table. This sentinel value is also used in cases where the Vertex with Component Indices object does not reference a particular type of component, either by index or direct reference.
The color_index, texture_coordinate_index and property_table_reference_index fields differ slightly from the location_index and reference_vector_index fields. The Base Vertex class aggregations of the Color, Texture Coordinate, and Property Table Reference objects each has a cardinality of 0..N. The Location and Reference Vector aggregations each are limited to 0 or 1. To accommodate this cardinality, Color Entry Table, Texture Coordinate Table, and Property Table Reference Table may aggregate a "set" of Color, Texture Coordinate, or Property Table Reference objects respectively. Refer to the definition text of these objects for more information.
A producer of a transmittal wants to reuse the Location objects for Vertices of a group of Polygons. One possible construction is given below.
. . . <Union of Primitive Geometry> <> | +-| { | start_index = 1 | } | | | +- [<LSR Location 3D> A] | +- [<LSR Location 3D> B] | +- [<LSR Location 3D> C] | +- [<LSR Location 3D> D] | +- Polygon ABC | <> | +- <Vertex with Component Indices> | | { | | color_index = SE_COMPONENT_IS_AGGREGATED | | location_index = 1 | | reference_vector_index = SE_COMPONENT_IS_AGGREGATED | | texture_coordinate_index = SE_COMPONENT_IS_AGGREGATED | | property_table_reference_index = SE_COMPONENT_IS_AGGREGATED | | } | +- <Vertex with Component Indices> | | { | | color_index = SE_COMPONENT_IS_AGGREGATED | | location_index = 2 | | reference_vector_index = SE_COMPONENT_IS_AGGREGATED | | texture_coordinate_index = SE_COMPONENT_IS_AGGREGATED | | property_table_reference_index = SE_COMPONENT_IS_AGGREGATED | | } | +- <Vertex with Component Indices> | { | color_index = SE_COMPONENT_IS_AGGREGATED | location_index = 3 | reference_vector_index = SE_COMPONENT_IS_AGGREGATED | texture_coordinate_index = SE_COMPONENT_IS_AGGREGATED | property_table_reference_index = SE_COMPONENT_IS_AGGREGATED | } | +- Polygon BDC <> | +- <Vertex with Component Indices> | { | color_index = SE_COMPONENT_IS_AGGREGATED | location_index = 2 | reference_vector_index = SE_COMPONENT_IS_AGGREGATED | texture_coordinate_index = SE_COMPONENT_IS_AGGREGATED | property_table_reference_index = SE_COMPONENT_IS_AGGREGATED | } +- <Vertex with Component Indices> | { | color_index = SE_COMPONENT_IS_AGGREGATED | location_index = 4 | reference_vector_index = SE_COMPONENT_IS_AGGREGATED | texture_coordinate_index = SE_COMPONENT_IS_AGGREGATED | property_table_reference_index = SE_COMPONENT_IS_AGGREGATED | } +- <Vertex with Component Indices> { color_index = SE_COMPONENT_IS_AGGREGATED location_index = 3 reference_vector_index = SE_COMPONENT_IS_AGGREGATED texture_coordinate_index = SE_COMPONENT_IS_AGGREGATED property_table_reference_index = SE_COMPONENT_IS_AGGREGATED }
| SE_UINT32 | color_index; | |
|---|---|---|
| SE_UINT32 | location_index; | |
| SE_UINT32 | reference_vector_index; | |
| SE_UINT32 | texture_coordinate_index; | |
| SE_UINT32 | property_table_reference_index; |