|
MayaFlux 0.5.0
Digital-First Multimedia Processing Framework
|
|
strong |
How a vector quantity's components behave under a change of frame.
The distinction is differential-geometric and independent of storage: it says whether the numbers stored are attached to the lattice's coordinate basis or to the world, and therefore what must happen to them when the lattice is scaled, rotated or resampled.
A velocity is ContravariantRelative: halve the cell size and the stored components halve with it, because a velocity is a displacement per unit time expressed in lattice units. A surface normal is CovariantNormalize: it transforms by the inverse transpose and is renormalized after. A triple of unrelated scalars carried together for convenience, a colour for instance, is Invariant: nothing happens to it under any change of frame.
Invariant is the default because assuming a vector is a velocity when it is not silently corrupts it the first time anything rescales the lattice, whereas the reverse mistake leaves values untouched and visibly wrong.
Meaningless for scalar quantities. Carried alongside them regardless rather than split into a separate optional, since the pairing is what every consumer wants and a scalar's variance is simply ignored.
The enumerators correspond one to one with OpenVDB's VecType.
Definition at line 60 of file LatticeSemantics.hpp.