The object state object, represents the data that flows through the pipeline. When the Object::Eval() method is called on an object or a derived object, it returns an ObjectState. This is passed from one object reference to the next. The ObjectState contains the following elements:
- Object pointer - A modifier will often refer to the object in the pipeline using this pointer. The object pointer is a public
data member of type Object* and is defined as ObjectState::obj.
- Transformation matrix - The object state manages a transformation matrix (ObjectState::GetTM()) that is deformed only if an object cannot convert itself to a deformable type. After the matrix is deformed, it is converted
back into an matrix using an iterative process that 'averages' the axis. All objects are supposed to be able to convert themselves
to TriObjects (which are deformable) so in general this is not used. However in the case of cameras and lights it doesn't make sense to
convert them to TriObjects so this is how they are deformed. You can see an example of this by binding a camera to a space warp like ripple. The camera
will bounce up and down as it is 'deformed' by the space warp.