The attribute data model: a vertex attribute and the enums describing it.
Represents an attribute in a mesh. An attribute can be an array of values representing potisions
of vertices, or it can be an array of values representing normals of vertices or corners, or faces.
Note that the struct does not have the static type information, so the attribute value can be a
vector of any type of any dimension, as long as it implements the Vector trait. The information about
the type of the attribute, component type, and the number of components is stored in dynamically.
Numeric primitive for attribute values, and the trait exposing default() on
the encoder configs.
An array of N elements of type T, where T is often a DataValue,
which is a trait that defines the basic mathematical operations
and properties for the elements of the vector. This means that
NdVector can be used to represent vectors in N-dimensional space (or a free module)
over T. The vector operations for this type are implemented on a static basis,
meaning that the operations are defined for a fixed number of dimensions at compile time
without looping over N elements.
The attribute data model: a vertex attribute and the enums describing it.
The domain of the attribute, i.e. whether it is defined on the position or corner.