Animatable Pivot
Download File:
For 3ds max 2010 to 2016.
Source Code:
Installation:The zip file contains several folders for each version of 3ds max, go to the folder corresponding to your 3ds max version and extract the files in the plugins folder of your max root directory, restart max.
|
Description:
This is a transform controller useful to animate objects around a specific pivot that can be animated, it can be used to animate the translation of objects that have to spin around their corners, for example a box rolling over the surface of the ground or a foot pivoting in the heel and later in the toes. Besides, this Controller has an advantage in comparison with other kind of animatable pivot methods, it is animator friendly in terms of pivot editing and keyframe manipulation.
This controller is used in the transform track of the main node and uses as pivot the transform of another node. basically the main node inherits the transform of the pivot, but when the pivot is moved, the main node offsets that transform in such a way that it seems unaffected by that change, making the visual effect of a pivot being offset from the object. The advantage of doing it with controllers is that the setup is well suited for hierarchical transformation, enabling the node's children to be affected by the setup behavior (if the offset is made in the object offset transform, only it's geometry will be affected, making it useless in a hierarchy).
The controller has 2 subcontrollers, one is a bezier position that controls the pivot offset regards the object and the second controller is a matrix3 controller that holds the transform of the object itself.
This controller is used in the transform track of the main node and uses as pivot the transform of another node. basically the main node inherits the transform of the pivot, but when the pivot is moved, the main node offsets that transform in such a way that it seems unaffected by that change, making the visual effect of a pivot being offset from the object. The advantage of doing it with controllers is that the setup is well suited for hierarchical transformation, enabling the node's children to be affected by the setup behavior (if the offset is made in the object offset transform, only it's geometry will be affected, making it useless in a hierarchy).
The controller has 2 subcontrollers, one is a bezier position that controls the pivot offset regards the object and the second controller is a matrix3 controller that holds the transform of the object itself.
Settings:
Pivot: Here you can specify the node that you want to use as pivot, press the button and select the node, a special controller will be asigned in the pivot controller. Press remove to remove the pivot node.
Translate Pivot: If this option is checked you can transform the pivot node by moving the node in which this controller is assigned.
Pivot keys in step mode: If this option is checked all the keys created in the pivot position will be set to step mode interpolation.
Pivot Button: if this button is pressed the pivot position controller parameters are shown below in the motion panel.
Transform Button: if this button is pressed the transform controller parameters are shown below in the motion panel.
Translate Pivot: If this option is checked you can transform the pivot node by moving the node in which this controller is assigned.
Pivot keys in step mode: If this option is checked all the keys created in the pivot position will be set to step mode interpolation.
Pivot Button: if this button is pressed the pivot position controller parameters are shown below in the motion panel.
Transform Button: if this button is pressed the transform controller parameters are shown below in the motion panel.
Maxscript properties and methods:
The following properties and methods can be accessed through $objectName.controller:
Properties:
The following property can only be accessed in the main object (the object that holds the pivot constraint).
.Target (Pivot_Target) : node
With this property you can set the pivot object, i.e: $.controller.target=$pivotObject.
The following properties can be accessed with both, the main object and the pivot object transform controller:
.TransformPivot (Translate_Pivot) : boolean
controls the Translate pivot property
.StepKeys (Pivot_keys_in_step_mode) : boolean
Controls the pivot keys in step mode property
.Pivot : point3
This is a reference to the bezier pivot position subcontroller, it can be used to set directly any pivot offset position, but the setRelativePos and GetRelativePos methods are better to this usage.
.Transform : transform
This is a reference to the main transform controller, it holds the transform of the object itself, both objects, the main object and the pivot object inherit this transform. it can be used to access local controllers, for example to access the scale controller: $objectName.controller.transform.controller.scale.controller.
.Target (Pivot_Target) : node
With this property you can set the pivot object, i.e: $.controller.target=$pivotObject.
The following properties can be accessed with both, the main object and the pivot object transform controller:
.TransformPivot (Translate_Pivot) : boolean
controls the Translate pivot property
.StepKeys (Pivot_keys_in_step_mode) : boolean
Controls the pivot keys in step mode property
.Pivot : point3
This is a reference to the bezier pivot position subcontroller, it can be used to set directly any pivot offset position, but the setRelativePos and GetRelativePos methods are better to this usage.
.Transform : transform
This is a reference to the main transform controller, it holds the transform of the object itself, both objects, the main object and the pivot object inherit this transform. it can be used to access local controllers, for example to access the scale controller: $objectName.controller.transform.controller.scale.controller.
Methods:
This methods can only be accessed with the main object transform controller.
.GetRelativePos()
Get the pivot position in respect to the main object.
.SetRelativePos()
Set the pivot position in respect to the main object.
.GetRelativePos()
Get the pivot position in respect to the main object.
.SetRelativePos()
Set the pivot position in respect to the main object.