GENERATE/PREV.gifGENERATE/NEXT.gif

Modifier Sub-Object Transform Properties

In this release of MAXScript, the values of modifier subanimatable transform properties, such as centers and gizmo pos, rotation and scale, are not given in the current working coordinate system. This is in obvious contrast to scene node transform properties. The values given are typically modifier local and are exactly as would be seen in the sub-object's corresponding track view or as might be referenced in an Expression controller track variable for that subobject property.

FFD control point sub-object properties are now accessible through this mechanism but have several special considerations. The control points properties are named as they appear in the track view, subject to the MAXScript convention of using '_' underscores for spaces, so for example:

$foo.ffd_2x2x2.control_point_1

$baz.ffd_3x3x3.control_point_32 = [1,2,3]

The considerations are as follows:

  1. You can only access control points that have ALREADY been animated by hand. The FFD doesn't actually create accessible control points until you do this, a behavior that shows up in the track view in normal MAX use - you can't actually place control point keyframes in the track view until you've interactively animated the control point at least once away from time 0.
  2. Control point coordinates are in FFD lattice space. This is a normalized space, with [0,0,0] at the lower left-hand corner (at control_point_1) and [1,1,1] at the opposite corner of the FFD lattice, so you have to be careful about computing and scaling correct coordinates when you set them. This is also reflected in the track view for FFD control points in normal MAX use - if you look at their values in a keyframe property dialog or a function graph, they are in this normalized lattice space, not world-space coordinates. You'd have to work in this space also if you tried to use expression controllers to control FFDs.