Keyframe Key Data for the PRS Controller
 
 
 

The default keyframe transform controller in 3ds Max is a PRS controller. This means that it handles orienting a node in the scene using separate controllers for Position, Rotation and Scale. To generate a complete transformation, first the position is applied, then the rotation, then the scaling.

Position and scale keys are stored in the local coordinate system of the controller, with each key independent of the others. Rotation keys are stored in local coordinates as well, but each is stored relative to the previous key in the track. Thus the first key stored represents the actual value for the rotation key in terms of the relative space of the controller. The second key is just an offset from the first key. Thus to get the actual rotation for the second key you need to multiply it on the left by the first key. To get the third key, you need to multiply it by the second computed key (which was computed from the first). These computed rotation key values will then be the absolute quaternions for each key for that controller.

It is important to understand however that the entire animation track for position, rotation and scale are all relative to the matrix passed into the controller when its Control::GetValue() method is called. For additional details on how a controller updates Control::GetValue() see the Advanced Topics section Node and Object Offset Transformations.

Note the following points: