Link_Constraint - superclass: Matrix3Controller
Link_Constraint - superclass: Matrix3Controller; super-superclass:MAXWrapper - 2:1 - classID: #(-2025855132, -1430354431)
A Link constraint is used to animate an object linking from one target object to another.
The Link constraint causes an object to inherit the position, rotation, and scale
of its target object.
Constructor
Link_Constraint...
Link ...
Properties
<Link_Constraint>.key_mode Integer default: 0 -- integer; Link_KeyMode
You can choose between three different Key Modes that will determine how keyframes
are written on the linked objects as part of the link constraint. These options will
provide the following:
0: No Key Mode: No keys are created in any of the objects involved.
1: Key Nodes: Sets keys for some of the objects.
2: Child: Applied keys to the child object only.
3: Parents: Applies keys to both parents and the child object.
4: Key Entire Hierarchy: This applies keyframes to the chosen nodes and their entire
hierarchies.
5: Child: Keys the chosen object and the nodes in its hierarchy up to the world.
6: Parents: Keys both parents and the child and all three hierarchies up to the world.
<Link_Constraint>.link_params SubAnim default: SubAnim:Link_Params -- transform
Contains the Link Params Transforms sub-anim, which in turn has three properties -
.Position , .Rotation , and .Scale . It contains the offset transform in parent space. This controller will contain keys
depending on the .key_mode settings described above.
Link_Constraint interfaces:
Methods:
<node><Link_Constraint>.getNode <index>nodeNumber
Returns the indexed target.
<float><Link_Constraint>.getFrameNo <index>targetNumber
Returns the linking start frame number of the indexed target.
<boolean><Link_Constraint>.setFrameNo <index>targetNumber <integer>frameNo
Sets the linking start frame number of the indexed target. Returns true on success.
<integer><Link_Constraint>.getNumTargets()
Returns the number of targets.
<boolean><Link_Constraint>.addTarget <node>target <integer>frameNo
Appends the specified node to the target list at the specified frame. Returns true on success.
<boolean><Link_Constraint>.DeleteTarget <integer>targetNumber
Deletes the indexed node from the target list. Returns true on success.
<integer><Link_Constraint>.addWorld frameNo:<integer>
frameNo default value: -99999.
This method sets "World" as a target at the specified frame.
EXAMPLE
|
s = sphere() --create a sphere
at time 100 with animate on s.pos = [200,0,0] --animate sphere 200 units along X over 100 frames
b = box() --create a box
at time 100 with animate on b.pos = [0,500,0] --animate box 500 units along Y over 100 frames
t = teapot() --create a teapot
lc = link_constraint() --create a Link Constraint instance
t.transform.controller = lc --assign the constraint to the transform controller of the teapot
lc.key_mode = 0 --set the key mode to 0 (it is the default anyway)
lc.addWorld frameNo:29 --add a World key on frame 29
lc.addTarget s 30 --add the sphere as link target on frame 30
lc.addWorld frameNo:60 --add a World key on frame 60
lc.addTarget b 70 --add the box as link target on frame 70
lc.addWorld frameNo:80 --add a World key on frame 80
lc.setFrameNo 5 90 --changed my mind, move the last (fifth) world key to frame 90!
for i = 1 to lc.getNumTargets() do --print all keys' index, time and target
format "%: Frame:% - Target:% \n" i (lc.getFrameNo i) (lc.getNode i)
|
OUTPUT
|
$Sphere:Sphere001 @ [0.000000,0.000000,0.000000]
[200,0,0]
$Box:Box001 @ [0.000000,0.000000,0.000000]
[0,500,0]
$Teapot:Teapot001 @ [0.000000,0.000000,0.000000]
Controller:Link_Constraint
Controller:Link_Constraint
0
1
true
1
true
1
true
1: Frame:29 - Target:undefined
2: Frame:30 - Target:$Sphere:Sphere001 @ [0.000000,0.000000,0.000000]
3: Frame:60 - Target:undefined
4: Frame:70 - Target:$Box:Box001 @ [0.000000,0.000000,0.000000]
5: Frame:90 - Target:undefined
OK
|