[N-World Contents] [Book Contents] [Prev] [Next] [Index]

Dynamic Operations


This chapter describes the various operations available in N-Dynamics to animate skeletons, skins, and attached objects.


Skeletal Animation and N-Dynamics

N-Dynamics devotes an entire class of operations to the Skeletal Animation System. The basic concepts behind N-Dynamics are described in the N-Dynamics Reference Manual and N-Dynamics Tutorial; it is an animation choreographer, and is an ideal tool for animating and working with skeletons and motion capture data.

This chapter assumes you have some familiarity with both N-Dynamics and N-Geometry.

Skeletal Operation Order in N-Dynamics Scripts

As with any other N-Dynamics script, scripts containing skeletal operations execute from top to bottom, moving right at each frame. There are two types of skeletal operations in N-Dynamics:

Figure 3.1 When skeletal operations update the skeleton

Any of the changes described by the operations in the "Applied Later" column of Figure 3.1 are applied to the skeleton using the Update Skeleton operation.

There are two ways to organize your skeletal operations in a script:

Figure 3.2 Left, operations in a script arranged in a linear fashion; right; the same operations arranged hierarchically

The method shown on the right in Figure 3.2 is generally easier to work with, although both are completely acceptable. Also, if you create an Update Skeleton parent channel and specify the skeleton to update before inserting subchannels, any subchannel specified automatically assumes you want to update the same skeleton, and defaults to the same skeleton.

If you're animating more than one skeleton, you'll need to include an Update Skeleton operation for each of them.

If you don't include the Update Skeleton operation, your script will execute, but none of the operations specified in the left column in Figure 3.1 will appear to have an effect.

Operations

To best understand how these operations work, create a new script with at least one subaction (as described in the N-Dynamics reference manual. (CLICK-M) on the channel, then (CLICK-L) on the text box next to Operation. The Dynamic Operation Class menu is displayed.

In the Geometry module, (CLICK-L) on Skeleton Animation to display the skeletal animation operations:

Figure 3.1 N-Dynamics skeletal animation operations

(CLICK-L) on an operation to assign it to the current channel. Each of these operations is described in more detail below.


Animate Multiple Poses

Animate a skeleton layering multiple poses. You specify the poses you want to use to animate the skeleton.

This operation creates dynamic value channels for each pose selected. The value of the pose is dynamic over the length of the channel:

Figure 3.2 Animate Multiple Poses layers several poses over one another; each pose is dynamic

The Animate Multiple Poses operation should come before the Update Skeleton operation.

Table 3.1 Animate Multiple Poses parameters
Parameter Dynamic? Description
Skeleton

No

The skeleton being animated.

Poses

No

The poses for which dynamic values are created. Individual subchannels are created for each pose selected.

Translate

No

A multiplier applied to the root translations for the pose.


Animate Pose

Animate the skeleton to a single pose. You need to specify the skeleton to be animated and its target pose. The value for the pose is dynamic.

Figure 3.3 Animate Pose animates the skeleton to a single pose

The Animate Pose operation should come before the Update Skeleton operation.

Table 3.2 Animate Pose parameters
Parameter Dynamic? Description
Skeleton

No

The skeleton being animated.

Pose

No

The target pose (only one pose may be specified for this operation).

Value

Yes

The dynamic value for that pose.

Translate Value

Can be

A multiplier applied to the root translations for the pose.


Animate Pose to Pose

Animate the skeleton using a number of poses. The poses can be previously named poses or you can copy the skeleton's current pose interactively from N-Geometry into a selected cue.

In the [POSE] channel, you insert cues wherever you want the skeleton to hit a target pose:

Figure 3.4 Animate Pose to Pose moves animates from one pose to another

(CLICK-M) on a cue to specify the target pose for that cue; a list of poses saved for the skeleton is displayed:

Figure 3.5 Selecting a pose to associate with a cue

Making the Pose value Dynamic

Note that by default, Value is local, with a value of 1.0 (the skeleton animates from one target pose to another). If you make Value dynamic, you can create cues in the Value channel for each pose, then insert a marker track to tie the two cues together.

You should do this before you insert any cues in the Pose channel:

1. In the Edit Action Properties dialog box, (CLICK-L) on Source and choose Dynamic Value for Value.

2. (CLICK-L) on Do It.

3. (CLICK-R) on the Animate Pose to Pose channel and choose Add Marker Track.

4. (CLICK-L) in several positions along the track where you'd like to insert cues.

Note that cues are inserted into both the Pose and Value channels. Each of these cues is tied to its corresponding marker on the marker track.

5. Open the Pose and Value channels in the script editor.

6. (CLICK-M) on the first cue you inserted in the Pose channel.

You're prompted to select the target pose for that cue.

7. (CLICK-M) on the first cue you inserted in the Value channel.

Adjust the value for the cue using the sliders and controls in the Adjust Parameter Value dialog box:

Figure 3.6 Adjusting the value for a cue

As you adjust the slider, the skeleton is updated in the N-Geometry window.

After adjusting the cues and values, the Animate Pose to Pose channel will look something like this:

Figure 3.7 Animate Pose to Pose with dynamic values

Now, both the cue and its value can be dragged left or right by sliding the marker tied to those cues.

Table 3.3 Animate Pose to Pose parameters
Parameter Dynamic? Description

Skeleton

No

The skeleton on which this operation is performed.

Bones

No

The bones on the selected skeleton that should be affected by the Animate Pose to Pose operation

Pose

Can be

Insert a cue for each target pose.

Pose Value

Can be

The dynamic value for the pose.
(0 = none, 1 = 100%)

Mode

No

Set animates the skeleton to the specified pose.

Add adds the pose to the skeleton's current position.

Blend animates part way between the skeleton's current position and the saved pose-blending the two complex values.

Root Translation

Translate Value

Can be

A multiplier applied to the root translations for the pose.

Root Alignment

Spin Angle

Can be

An arbitrary angle by which the skeleton should be rotated (around the skeleton's local Y axis). This is used primarily in Motion Blending, as described in the Skeletal Animation System Tutorial.

Offset

Can be

An arbitrary set of translations to add to the pose; also used primarily in Motion Blending, as described above.

Using Animate Pose to Pose with Motion Capture Data

The Animate Pose to Pose operation can be used in conjunction with the various "read motion capture data" operations.

This means that you can start with a skeleton that has a basic "look-and-feel" and "customize" it by defining poses that are "layered" on top of the motion capture data in a separate channel.

You could, for example, add an Animate Pose to Pose that makes the skeleton turn its head toward the camera. If you layered this together with a channel that animated the skeleton through a walk cycle, the skeleton would go through the walk cycle, but would also turn toward the camera when the appropriate cue was reached! This technique is called "difference posing," and is described in more detail in the Skeletal Animation System Tutorial.


IK Move along Trajectory

Moves a node on the selected skeleton along a trajectory created in N-Geometry.

This is similar to IK Move along Wire, except that the selected joint moves to a position along the trajectory specified as a dynamic value (Fraction). A value of 0.0 is the beginning of the wire, a value of 1.0 is the end of the wire.

For example, to move smoothly along the trajectory, you could use a dynamic value for Fraction that was a linear curve with a start value of 0.0 and an end value 1.0.

The IK Move along Trajectory operation should come after the Update Skeleton operation.

Table 3.4 IK Move along Trajectory parameters
Parameter Dynamic? Description
Skeleton

No

The skeleton being animated.

Bone

No

The bone being moved along the wire (the joint further away from the root follows the path).

IK Set

No

The degrees of freedom for the joint moving along the trajectory.

Trajectory

No

The trajectory along which the skeleton is moved.

Fraction

Yes

The position (0.0 - 1.0) of the object along the trajectory.

Type

No

Whether the curve is a B-spline or interpolating spline.

Tension

Can be

The tightness of the trajectory near the control points.

Cyclic

No

Whether the tangent of the trajectory and curvature of the trajectory at each endpoint will match.

Offset

Can be

An offset, measured from the trajectory, used to modify the position to which the joint is updated.

Use Previous?

No

Should the IK move be calculated on the previous position of the skeleton?

Use Fast Solve?

No

Should the IK move be performed using the fast solve method?


IK Move along Wire

This operation causes a selected joint to follow the path of a specified wire. The IK Move along Wire operation can be layered over motion capture data to fine tune the motion of your character.

To use this operation you'll typically perform the following steps:

1. Generate a wire for the selected bone joint(s) using the Make Wire from Joint Motion operation.

Note. It's generally a good idea to generate motion from a joint with limited degrees of freedom, such as a wrist or ankle (both of which are typically limited to X rotations). This will produce a straighter wire than a bone with more degrees of freedom.

2. Modify the wire in N-Geometry.

For example, if you wanted the skeleton in Figure 3.8 to step higher, you could modify the wire generated from the right toe as shown:

Figure 3.8 Modifying a generated wire for an IK Move along Wire operation

3. Set up the degrees of freedom for the joint being moved along the wire.

Only the bones whose motion you want to be affected by the IK Move along Wire should have degrees of freedom enabled.

If you don't set this up ahead of time, you're prompted to define the degrees of freedom for the bone when you try to animate the script.

4. With Points selected in the Sensitivity element menu, (SHIFT-L) on the joint being moved along the wire.

For this example, choose the joint at the bottom of the tibia.

5. (CLICK-L) on IK Set.

For example, if we want to adjust the motion of the joint along the wire, but want that adjustment to be made only by modifying the position of the tibia and femur, we'd use an IK Set that looked like this:

Figure 3.9 IK Set for joint moving along wire

(Note that the tibia is constrained to movement in the X plane (to simulate movement around the knee joint)).

Note. If you don't limit the degrees of freedom appropriately for this operation, your skeleton might jerk from frame to frame as each IK move is performed. Make sure the appropriate bones are included in the IK Set for the joint being animated along the wire.

In a script using this operation, you'd have a Read Biovision Data or Read Acclaim Data, followed by an Update Skeleton operation. After the Update Skeleton operation, you'd insert the IK Move along Wire operation.

When you reanimated, the joint would follow (as closely as possible, within the limits of the IK solve) the path described by the modified wire:

Figure 3.10 The IK Move along wire makes the specified joint follow the new path

Note. The IK Move along Wire operation should come after the Update Skeleton operation.

Table 3.5 IK Move along Wire parameters
Parameter Dynamic? Description
Skeleton

No

The skeleton being animated.

Bone

No

The bone being moved along the wire (the joint further away from the root follows the wire).

IK Set

No

The degrees of freedom for the joint moving along the wire.

Wire

No

The wire along which the joint is animated.

Offset

Can be

An offset, measured from the joint, used to modify the position to which the joint is updated.

Use Previous?

No

Should the IK move be calculated based on the previous position of the skeleton?

Use Fast Solve?

No

Should the IK move be performed using the fast solve method?


IK Move to Object

Moves the selected joint on a skeleton toward an object using a specified IK set. What the IK move looks like depends on the IK set defined for that joint.

Suppose, for example, you wanted a character to reach for an object with his right hand. You might want to set up an IK set that let him move his hand and arm bones in any direction, but his right collarbone only around the Y axis:

Figure 3.11 A typical IK Set for a Move to Object operation

By default, the operation moves the specified joint to the center of the specified object. In the example below, the skeleton is reaching for the center of the octahedron object (indicated by the local axes):

Figure 3.12 An IK Move to Object operation; the skeleton reaches for the object using the IK Set in effect

The IK Move to Object operation should come after the Update Skeleton operation.

Table 3.6 IK Move to Object parameters
Parameter Dynamic? Description
Skeleton

No

The skeleton being animated.

Bone

No

The joint to move toward the center of the target object.

IK Set

No

The IK Set used to solve the IK move.

Object

No

The target object.

Offset

Can be

An offset toward which the skeleton reaches, measured from the object center.

Fraction

Can be

A value, specifying how far toward the target object the joint reaches.

Use Previous?

No

Should the IK move be calculated on the previous position of the skeleton?

Use Fast Solve?

No

Should the IK move be performed using the fast solve method?


IK Move to Part

Similar to IK Move to Object, except that the specified target is a skin part.

This operation could be used, for example, to make a character raise his hand to his chin.

Note, however, that the part specified need not be on the skin attached to the skeleton. You could also use this operation to make a skeleton reach toward a doorknob on a door or a steering wheel on a car, as long as those elements were specified as parts on their respective objects.

Figure 3.13 An IK Move to Part operation

The IK Move to Part operation should come after the Update Skeleton operation.

Table 3.7 IK Move to Part parameters
Parameter Dynamic? Description
Skeleton

No

The skeleton being animated.

Bone

No

The joint to move toward the center of the target part.

IK Set

No

The IK Set used to solve the IK move.

Object

No

The object on which the target part is located.

Part

No

The target part-this can be any part on any object.

Offset

Can be

An offset toward which the skeleton reaches, measured from the object center.

Fraction

Can be

A dynamic value, specifying how much of the IK move is performed.

Use Previous?

No

Should the IK move be calculated on the previous position of the skeleton?

Use Fast Solve?

No

Should the IK move be performed using the fast solve method?


Lengthen Bone

Stretches an individual bone, either to a specified length (using Set), or by a specified length (using Add). This technique can be used on several bones to create cartoonish effects, as described in the Skeletal Animation System Tutorial.

Figure 3.14 Lengthening a bone

The Lengthen Bone operation should come before the Update Skeleton operation.

Table 3.8 Lengthen Bone parameters
Parameter Dynamic? Description
Skeleton

No

The skeleton on which this operation is performed.

Bone

No

The bone you want to lengthen.

Mode

No

There are two modes for this operation. The mode selected determines how the dynamic value in Value is used to modify the bone:

Set uses the value in Value as an absolute.

Add adds the value in Value to the length of the bone.

Value

Yes

The dynamic value used to change the bone's length.


Lock Feet

This operation can be used to lock feet from frame to frame. The operation locks the X and Z motion of the lowest joint on the skeleton to its position in the previous frame (usually, the foot on the ground in a walk cycle).

You can define an imaginary plane to define the "ground" using the Lock Height variable; even though in a walk cycle, the foot is approximately at 0, you may want define a maximum height at which that lowest joint is still assumed to be on the ground. Locking the feet is typically necessary if the scale of the skeleton and the motion capture data don't match exactly.

The Lock Feet operation should come after the Update Skeleton operation.

Table 3.9 Lock Feet parameters
Parameter Dynamic? Description
Skeleton

No

The skeleton on which this operation is performed.

Use ball/heel?

No

Locks feet based on the joint ID of ball and heel (if they exist).

Lock Slippage?

Yes

Locks slippage on skeleton due to motion not matching the skeleton size. When turned on, the lowest joint of the skeleton is locked to its position in the previous frame (in the X and Z plane).

Lock Height

Can be

Height below which to lock the lowest joint on the skeleton.

Lock to Ground

No

Lock feet to an imaginary ground plane of specified height.

Ground Height

Can be

Height for ground plane (on the Y axis).



[N-World Contents] [Book Contents] [Prev] [Next] [Index]

Another fine product from Nichimen documentation!

Copyright © 1996, Nichimen Graphics Corporation. All rights reserved.