This property node may be used to efficiently specify coordinates, normals, texture coordinates, colors, transparency values, material binding and normal binding for vertex-based shapes, i.e., shapes
of class
SoVertexShape. An
SoVertexProperty node can be used as a child of a group node in a scene graph, in which case the properties it specifies are inherited by subsequent shape nodes in the graph. It can also be directly
referenced as the
VertexProperty SoSFField of a vertex-based shape, bypassing scene graph inheritance.
When directly referenced by a
VertexProperty SoSFField of a vertex-based shape, the
SoVertexProperty node is the most efficient way of specifying vertex-based
shapes. Use of the directly referenced
SoVertexProperty node results in significantly faster scene rendering than scene graph inheritance of vertex properties, provided all required vertex properties are specified in
the
SoVertexProperty node.
Because the class
SoVertexProperty is derived from
SoNode, a vertex property node can be inserted as a child node in a scene graph. When inserted as a node in a scene graph, the
SoVertexProperty node is traversed as any other property
node and the properties it specifies are inherited by subsequent shape nodes in the scene graph. It specifies the current material and normal bindings, and can be used to specify the current 3D coordinates,
the current normals, the current texture coordinates, the current diffuse colors, and the current transparencies.
All multiple-valued fields in the
SoVertexProperty node are optional. If a field is not present (i.e.
if it has 0 values), then shapes that require the missing information are required to obtain it from the current traversal state. However, users are cautioned that, for optimal performance, the vertex
property node should be referenced as the
VertexProperty field of an
SoVertexShape, and should specify in its fields all values required to render that shape.
The various fields in a vertex property node can be used in place of
corresponding fields in other property nodes, as follows: The
vertex field contains 3D coordinates, as in the
point field of an
SoCoordinate3 node. The
normal field contains normal vectors, as in the
vector field of the
SoNormal node. The
orderedRGBA field
contains packed colors in the hexadecimal format
0xrrggbbaa, where
rr is the red value (between 00 and 0xFF hex)
gg is the green value (between 00 and 0xFF hex)
bb is the blue value (between 00 and 0xFF hex)
aa is
the alpha value (between 00 = transparent and 0xFF = opaque). The packed colors are equivalent to an
SoPackedColor node, and provide values for both diffuse color and transparency. The
texCoord field replaces the
point field
of the
SoTextureCoordinate2 node.
If the transparency type is
SoGLRenderAction::SCREEN_DOOR, only the first transparency value will be used. With other transparency types, multiple transparencies will be used.
The
materialBinding field replaces the
value field of the
SoMaterialBinding
node. The
materialBinding field in a directly referenced
SoVertexProperty node has no effect unless there is a nonempty
orderedRGBA field, in which case the material binding specifies the assignment of diffuse colors and alpha values to the shape.
The
materialBinding field can take as value any of the material bindings supported by Inventor.
The
normalBinding field replaces the
value field of the
SoNormalBinding node. The
normalBinding field of a directly referenced
SoVertexProperty node has no effect unless there
is a nonempty
normal field, in which case the normal binding specifies the assignment of normal vectors to the shape. The value of the
normalBinding field can be any of the normal bindings supported by Inventor.