In order to save memory, quantization is used on sampled values to reduce their footprint. To do so, a number of formats are supported.
Simple full precision format. Each component [X, Y, Z]
is stored with full floating point precision using float32
.
The compression algorithm will search for the optimal bit rate among 19 possible values. An algorithm will select which bit rate to use for each track while keeping the memory footprint and error as low as possible. This format requires range reduction to be enabled.
Internally, rotation formats reuse the vector formats with some tweaks.
A full precision quaternion format. Each component [X, Y, Z, W]
is stored with full precision using float32
.
Every rotation can be represented by two distinct and opposite quaternions: a quaternion and its negated opposite. This is possible because quaternions represent a hypersphere. As such, a component can be dropped and trivially reconstructed with a square root simply by ensuring that the component is positive and the quaternion normalized during compression.
Same as Vector3 96 above to store [X, Y, Z]
.
See Vector3 Variable