Professional Documents
Culture Documents
Procedure
To create a character assembly:
1. Create a linked structure of bones or other objects. The structure can have several
chains. You can also use the linked structure with the Skin modifier, and/or set up
character rigs and controllers as needed.
2. Select all objects that will become members of the assembly.
3. Use this method to add the character-assembly commands to the user interface,
and then choose the Create Character command.
4. On the Modify panel, use the character assembly tools to work with the character
structure.
The character assembly is given the default name of Character01, which can be changed.
All members of the assembly are listed in the Character Members rollout.
Interface
To work with the character assembly, select the character assembly node and work with
the parameters on the Modify panel.
The Skin pose is the bone structure pose used by the Skin modifier for associating bones
with the mesh. When the Skin modifier is first applied, the current bone structure pose is
used as the Skin pose. The Skin pose can sometimes be accidentally altered by animating
the bone structure on frame 0. If this occurs, you can use these options to fix the Skin
pose.
You can use these options both before and after applying the Skin modifier. You can also
invoke these options when any member of the character assembly is selected.
Set as Skin Pose—Sets the Skin pose to the current bone structure's pose. The Skin
modifier’s envelopes and vertex weighting are automatically recalculated to work with
the new pose.
Assume Skin Pose—Causes the bone structure to take on the Skin pose. This feature can
be useful during the animation phase. For example, if you have animated the character on
various keyframes and want the character to animate back to its Skin pose at frame 50,
you can turn on Auto Key at frame 50 and click Assume Skin Pose.
Skin Pose Mode—Poses the character in its Skin pose and allows the Skin pose to be
refined. Changes to the bone structure when Skin Pose Mode is on will affect only the
Skin pose and not the animation. When Skin Pose Mode is turned off, the bone structure
returns to its pose at the current frame.
Display group
When a high resolution character model is animated, redraw time can slow the animation
process. To speed up your work, a low resolution version of the model can be used for the
animation process, then switched for the full resolution version at render time. Character
assembly objects can be designated as Full Res or Low Res on the Character Members
rollout.
Low Res Objects—Displays only the objects checked in the Low Res display in the
Character Members rollout.
Full Res Objects—Displays only the objects not checked in the Low Res display in the
Character Members rollout.
Animation group
Animation for the character assembly can be saved or reset in this group. Previously
saved animation from another character can also be inserted to the current character
assembly.
Insert Animation—Displays the Merge Animation dialog, and prompts for a previously
saved animation file.
Save Animation—Saves the character assembly animation in an ANM or XML file. Both
file types contain the character assembly and its animation. An ANM file is a proprietary
format that can be read and saved only by 3ds Max. An XML file formats the information
as XML code, and can be edited with a text editor.
Animation saved as an ANM file loads and saves faster than an XML file. Saving and
editing an XML animation file is recommended only for users who are familiar with the
XML language, and who have a specific need for editing the file.
Add List—Displays the Pick Character Members dialog, where you can select multiple
objects from a list and add them to the character assembly.
Remove—Removes highlighted object(s) from the assembly. Bones and objects upon
which other assembly objects depend, cannot be removed.
Low Res—All members of the character assembly are displayed on this list. By default,
all members are designated as Full Res objects. To designate a member as Low Res,
check the object on the list. The Full Res and Low Res designations are used in
conjunction with the Display group selection in the Character Assembly rollout.
Retargeting Rollout
File menu > Load Animation > Open dialog > Edit Mapping
File menu > Load Animation > Open dialog > Load Motion > XML Animation dialog >
Click Yes.
When you map an animation from one rig or object onto another, use this rollout to
establish retarget references between the incoming nodes in regards to their scale
dependency. Retargeting means to scale the animation so it matches the objects onto
which you are mapping the motion. You need to retarget only when the size or
proportions of the incoming model differ from the size or proportions of the current
model.
• In a walk cycle, the root of a character moves, and all other movement is typically
rotation.
Because of this, usually you want to map the root motion and the rotation tracks,
and leave the others alone.
The exception to this is when arms or other parts (tentacles?) are animated by IK.
When IK is present, you need to take the additional step of mapping and
retargeting the IK goals.
• The legs need to reach the “ground,” and feet should not slide.
Because of this, use the legs as the basis of recalculating the scale for the target
character.
Because of this, usually retargeting one limb does the trick for both.
Procedure
To retarget one character onto another:
This procedure is not a detailed procedure, but an overall workflow. It assumes you have
already saved the incoming character's animation, then loaded it onto the current
character, as described in To use the Save Animation and Load Animation commands.
Note: If the animation you are saving is unkeyed world-space animation (as opposed to
IK or FK), turn off Animated Tracks when you save.
1. On the Map Track To Track rollout, map the motion tracks of the incoming
character's root to the current character's root.
For example, if you are retargeting a Biped onto another, you would map the
incoming Biped object's position and rotation tracks onto the current Biped.
2. Map the rotation tracks of the incoming character's limbs onto the current
character's limbs.
There is one exception here: if a hand (for example) is going to use IK in the
current scene, either don't map it at all, so you can animate it later, or if you are
mapping from an FK model to an IK model, map the Exposed World Transform to
transfer the incoming FK trajectories to current IK controls.
If the characters are symmetrical and have the same proportions, you can now
choose all the mapped tracks in the Retargetable Nodes list. If the characters are
not symmetrical, or their proportions are different, then you need to take further
steps.
5. In the Derive Scale Between Chains group, choose the Start and End nodes of
both Incoming and Current chains to correspond to either the left or right leg of
the character: for example, Thigh to Toe.
Read the Scale Factor that is set on the basis of the two chains.
If the two current legs are not the same length, repeat step 5 for the other leg, then
choose that leg's Foot (or Toe) node, turn on Enabled in the FK Retargeting Extent
group, and choose the top of the leg (for example, Thigh) as the parent to use.
Click Set.
Interface
Retargetable Nodes list—This list shows the tracks that have been mapped using the
Map Track To Track rollout. Each of these mappings can be retargeted.
Find—Enter a name to search for a particular object, then press Enter. 3ds Max
highlights matching entries in the list.
Filter Retargeted Nodes—When on, the list shows only those mappings that have been
retargeted. When off, all mappings are listed. Default=off.
Mapped Node—Shows the currently highlighted mapped node. If more than one list
entry is highlighted, shows “—Multiple—.”
Scale group
X/Y/Z—You can use these fields to explicitly set the scaling factor for the currently
highlighted mappings.
Incoming—Choose the incoming object from which to derive the scaling origin. This is a
drop-down list obtained from the list of incoming nodes.
Current—Click to display a Select dialog and chose the current object from which to
derive the scaling origin. The dialog shows all currently selected objects.
Typically, you set these two to be the incoming root node and current root node, whose
motion tracks are already mapped.
Resulting Scale Factor—Displays the scale factor derived from the Scale Origin and
Incoming/Current Chain settings. Check this value to see that it matches the apparent
difference in proportion between the objects or characters you are retargeting.
• Start—Choose the start of the incoming chain. This is a drop-down list obtained
from the list of incoming nodes.
When retargeting character animation, typically you choose the top of the
incoming character's leg; for example, the thigh.
• End—Choose the end of the incoming chain. This is a drop-down list that is
restricted to children of the incoming Start object.
When retargeting character animation, typically you choose the end of the
incoming character's leg; for example, the toe.
• Start—Click to display a Select dialog and choose the start of the current chain.
The dialog shows all currently selected objects.
When retargeting character animation, typically you choose the top of the current
character's leg (using the same side as you used for the incoming chain).
• End—Choose the end of the current chain. This is a drop-down list that is
restricted to children of the current Start object.
When retargeting character animation, typically you choose the end of the current
character's leg.
If a character's legs are symmetrical, which is usually the case, you only need to calculate
the retargeting scale for one leg, and then Set that value to both. If the character's legs are
not symmetrical, you need to calculate values for both legs, and also use the FK Extents
controls (described below).
When a character's limbs are not symmetrical, you can also use these controls to keep
rotations proportional. First, highlight the current child (for example, a foot or toe) in the
Retargetable Nodes list. Turn on Enabled, and then use the drop-down list to choose the
upper parent (for example, the thigh) of the limb you are retargeting. Finally, click Set.
Parent Node—Choose the current upper parent of the limb you are retargeting. This
drop-down list is restricted to parents of the currently highlighted current object.
Get—Click to set controls in the Scale, Derive Scale Between Chains, and FK
Retargeting Extents groups based on the currently highlighted mapping in the list.
If multiple mappings are selected, Get fetches the first highlighted mapping in the list.
Set—Click to apply the current Scale Factor to the mappings that are currently
highlighted in the list.
Clear—Click to clear retargeting values from the mappings that are currently highlighted
in the list.
Limit Controller
Main toolbar > Curve Editor (Open) > Highlight a track in the Track View hierarchy. >
Track View menu bar > Controller menu > Assign > Float Limit
Graph Editors > Track View - Curve Editor > Highlight a track in the Track View
hierarchy. > Track View menu bar > Controller menu > Assign > Float Limit
The Limit controller lets you specify upper and lower limits to available controller
values, thus restricting the potential value range of the controlled track. For example, in a
character rig you could use this to restrict rotation on finger joints so the fingers can't
bend backward. Basically, once a track is limited, and the limit is active, you can't set a
value for the track beyond the limit. You can apply a Limit controller to any other type of
controller; the limited controller (that is, the original controller) then appears as a child of
the Limit controller in the Track View hierarchy.
Because the Limit controller doesn't change the original controller, you can easily switch
back and forth between the original and the limited animation by toggling the limits. But
if you collapse the Limit controller, the result is the limited animation, and the original
animation is no longer available.
Use of the Limit controller makes it faster to set up and create animation. It eliminates the
need for expressions or scripts to do the same thing, this improving the ease with which
you can set up automation in hierarchies and rigs, creating effects such as avoiding
collision, FK joint limits, etc.
For example, a Technical Director might want to assign limits to float values that
animators will adjust to make posing easier, enforce standards, or prevent inconsistencies
and mistakes. A TD could use limits for:
• light intensity
• finger rotation
• position extents for sliding drawers
• camera field-of-view
• limiting patch resolution to that supported by the game engine
Character riggers can use limits to create complex relationships or shortcuts in rigs.
Examples include:
• Wire wrist-twist bones to the rotation of the hand, but limit the rotation of the
wrist-twist or hand to stop short of any flipping that might occur.
• Prevent unnatural translation of a spline IK helper by causing limit values for its
local position tracks to react to the angle or distance of the helper from
surrounding helpers.
• React to when IK is disabled, and match the limits of the solver in FK.
• Limit the position of the IK chain swivel-angle target for the knee so that it can
never go behind the character. That is, the target is linked to character’s root.
Use Cases
Following is a brief list of examples of specific uses for the Limit controller:
• Select the Y Rotation tracks of all finger bones in a character's hands and assign a
Limit controller. Use Set Key mode to pose the fingers at the extremes of their
ranges of motion and then use the right-click menu > Set Upper/Lower Limit
commands to limit the fingers' motion.
Note: Limits are included for Set Key via the Other category.
• You apply a Noise controller to the X Rotation track of a window shutter object to
make it rattle, but the object intersects the building at the lower end of its motion
range. Apply a Limit controller to the track and set the Lower Limit value to
prevent the intersection.
• Following from the previous example, say the wind tears the window shutter from
the building at frame 100. If the Noise controller is in a Float List with a Bezier
Float, you can weight the noise to 0 at frame 100, when the shutter is torn from
the building by the wind, at which point the animator will key the animation.
Limits are unnecessary after frame 100. At frame 99, you'd use Set Lower Limit.
Then, at frame 100, you'd edit the Lower Limit value to set the limit to much
lower, essentially removing the limit. Finally, you would set keyframes to animate
its movement past frame 100.
• Limit controllers do not limit IK joints. All IK solvers use their own limits, and
ignore Limit controllers. Interactive IK uses the current controllers, but it also has
its own limits, so using Limit controllers with interactive IK will produce
unpredictable results.
• The Limit controller currently supports only Float controllers. Thus, the Limit
controller is currently available only under the name Float Limit.
• Upper and lower limits values are expressed in the same units or coordinates as
those used by the limited controller. Thus, for example, Float limits on an X
Position track are in local coordinates, not in global coordinates.
Procedure
Example: To use the Limit controller:
In this example, the teapot position was animated on the X axis between extents
of about -45 to 40, and on the Y axis between extents of about -80 and 54.
2. Assign the Float Limit controller to a track. In this example, we'll assign it to the
X Position track.
This opens the Float Limit Controller dialog, where you can set limits and other
values, but you might find it easier to do this interactively, so for now just accept
the defaults by closing the dialog.
The track retains its original name (X Position, in this example), but the icon has
changed to indicate that it's now a Limit controller, and is expandable (see
illustration in following step).
The hierarchy contains a child track, named Limited Controller, and a new,
expandable child branch named Limits.
4. Click the X Position track and then the Limited Controller track to compare them.
Because the original X-axis movement falls within the default limits, the two
tracks are identical.
5. Scrub the animation until the X-axis position is where you want to set a limit. In
this example, the position is about -20, where we'll set a lower limit.
6. Highlight the X Position track, and then right-click and from the right-click menu
choose Limit Controller > Set Lower Limit.
The graph curve is now clipped below the lower limit. When you scrub the
animation, the object doesn't move beyond that position.
7. Again scrub the animation, stop where you want to set the upper limit, right-click
the X Position track, and choose Limit Controller > Set Upper Limit.
In this example, we've set it at about 13. The graph curve is now clipped above
the upper limit and below the lower limit. The resulting motion is likewise
constrained.
The Limit Controller (X Position) track clearly shows the upper and lower
clipping, while the Limited Controller track shows the original motion.
The original motion still exists as the Limited Controller track; you can restore it
temporarily by toggling the Limit controller.
10. Highlight the X Position track, and then right-click and choose Limit Controller >
Toggle Limit.
Now, when you scrub the animation, the object moves as before.
11. Choose Limit Controller > Toggle Limit again to restore the limits
You can copy the Limit controller in two ways: the limits only, or the limits and
motion combined. First, you'll copy the limits only.
12. Highlight the Y Position track and note how its curve differs from that of the X
Position track.
13. Highlight the X Position track, and then right-click and choose Limit Controller >
Copy Limit Only.
14. Highlight the Y Position track, and then right-click and choose Limit Controller >
Paste Limit Only. When the Paste dialog opens, click OK to confirm the paste as a
copy.
Now the Y Position track is also limited, using the same extents as the X Position
track, but retaining its original underlying motion. To verify this, compare the Y
Position track with its child Limited Controller track.
Next, you'll copy the entire limited X Position track to the Z Position track,
including motion and limits. The Z Position track currently is not animated.
15. Highlight the X Position track, and then right-click and choose Copy.
16. Highlight the Z Position track, and then right-click and choose Paste.
Compare the X and Z Position tracks and both their child Limited Controller
tracks. Each corresponding pair of curves is identical. The motion appears as
though the object is hitting the inside edge of a box.
Finally, we'll cover the Smoothing Buffer settings. By default, sharp corners are
created wherever a curve is limited, causing abrupt changes in motion. You can
smooth off these corners with the Smoothing Buffer parameters, resulting in more
natural-looking motion.
17. Highlight the X Position track, and then right-click it and choose Properties.
18. Use the Upper Limit group > Smoothing Buffer spinner to increase the Smoothing
Buffer value as far as it can go.
As you increase the value, the corners of the upper limit on the graph become
smoother.
Note that there's an upper limit to this value; in this case, it's 34.434. This limit is
determined by the values of the other three settings on the dialog.
19. Try increasing the Lower Limit group > Smoothing Buffer. It's not possible with
the upper smoothing value at its maximum.
20. Decrease the upper smoothing value, and then increase the lower smoothing
value.
Now you get smoothing at both the upper and lower limits.
Interface
The Limit Controller interface comprises the Float Limit Controller dialog and several-
right-click menu items.
The Float Limit Controller dialog opens when you first assign the Limit controller, or
when you right-click a highlighted Limit-controller track and choose Properties.
Enable—Toggles the Limit controller. When off, the original values of the limited track
are in effect. When on, the original values are limited by the Upper Limit and Lower
Limit values.
Note: You can enable and disable all Limit controllers in the scene simultaneously with
the Toggle Limits command, available from the 3ds Max Animation menu. If some Limit
controllers are on and the rest are off, Toggle Limits turns them all on.
Enable—Toggles the upper limit set by the controller. When off, no upper limit is
imposed. Default=on.
[Upper Limit value]—The highest value permitted by the Limit controller. Any values
above this value in the original controller are clipped; that is, they're set to this value,
unless smoothing is in effect. Default=1000.0.
You can animate this value via keyframing and other standard methods, and manipulate
this animation in Track View via the Upper Limit track in the controller's Limits branch.
The maximum total smoothing is determined by the Upper and Lower Limit values.
(Upper Limit > Smoothing Buffer value) + (Lower Limit > Smoothing Buffer value)
cannot exceed this total. For the smoothest possible results at the upper and lower extents
of the clipping, set either Smoothing Buffer value to the maximum amount, and then back
it off to half that value and set the other Smoothing Buffer to the same amount.
You can animate the Smoothing Buffer value via keyframing and other standard methods,
and manipulate this animation in Track View via the Upper Smoothing track in the
controller's Limits branch.
Enable—Toggles the lower limit set by the controller. When off, no lower limit is
imposed. Default=on.
[Lower Limit value]—The lowest value permitted by the Limit controller. Any values
below this value in the original controller are clipped; that is, they're set to this value,
unless smoothing is in effect. Default=-1000.0.
You can animate this value via keyframing and other standard methods, and manipulate
this animation in Track View via the Lower Limit track in the controller's Limits branch.
You can animate the Smoothing Buffer value via keyframing and other standard methods,
and manipulate this animation in Track View via the Lower Smoothing track in the
controller's Limits branch.
To access the Limit Controller right-click menu, highlight a Limit Controller track in the
Track View hierarchy, and then right-click the track and move the cursor to the
Controllers quadrant > Limit Controller menu item.
Note: After using Copy Limit Only on a Limit controller track, you can apply a new
Limit controller with the same limits to any track by invoking Paste Limit Only.
Toggle Limit—Turns the Limit controller on and off. This is the same as the Enable
check box on the Float Limit Controller dialog.
Set Upper Limit—Sets a value/key in the Upper Limit track at the current frame equal to
the value at the current frame of the limited track. If there is only one key, the value of
the limit is constant over time.
Set Lower Limit—Sets a value/key in the Lower Limit track at the current frame equal
to the value at the current frame of the limited track. If there is only one key, the value of
the limit is constant over time.
Remove Limit—Deletes the Limit controller, restoring the original controller without
limits.
Copy Limit Only—Copies only the Limit values and ignores the limited controller of the
highlighted track.
Paste Limit Only—Applies only the copied Limit values, or adds a Limit controller with
the copied values if one doesn't exist, while retaining the values of the original limited
track.
As with pasting copied controller tracks,
you can paste the Limit values as a copy
or an instance of the copied Limit
controller, with the option to replace all
instances of the paste target. Using
Schematic View
This topics includes procedures for using functionality in the Schematic View window.
If you are in Hierarchy mode, the children will arrange themselves into an
indented list under the parent as you create linkages.
The Display floater appears. It lets you control what you see in the Schematic
View window.
The buttons indent to show they are active. The Transforms now appear in the
Schematic View window.
3. In the Schematic View window, select the transform of the object you want to
assign a controller to.
4. Right-click the transform, from on the Tools quad, choose Assign Controller.
5. Choose the controller you want to apply from the list, then click OK.
To wire parameters with Schematic View:
1. Using the Display Floater, turn on Param Wires in the Relationships group.
2. In the Schematic View window, select one of the objects you want to wire.
3. Right-click the selected object and choose Wire Parameters.
4. In the pop up that appears select the component you want to wire, either a
Transform or an Object parameter, for instance.
5. Drag to the other object you want to wire to.
6. Again in the pop up that appears, select the component you need to wire to.
7. The Wire Parameters dialog appears. Make the necessary selections and connect
the wires.
8. Once the wiring is established you can edit the wiring by double-clicking the wire
in Schematic View.
1. When you have a layout you like, name the layout using the Schematic View
name field in the toolbar, just to the right of the Preferences button.
2. Close the Schematic View window.
3. To load the saved view, go to Graph Editors > Saved Schematic View and choose
the schematic view from the history list.
Tip: Turn on Lock Zoom Pan, if you want to zoom in or pan the background
image.
Complex scenes can be navigated quickly by using the list viewer combined with the pan
or zoom to selected option. For example suppose you need to locate all the bones within a
certain character.
The Schematic View window now clearly shows the object node.
This is a sortable list. You can click the header title to sort by it.
Note: Object Occurrence is being used as an example here. You can use any of the
List View menu choices to display a list of objects based on a certain relationship.
5. On the Options menu choose Pan to Selected. Now click through the nodes
in the list.
The Schematic View window updates to display each node as you click.
This method makes navigation of very complex scenes much more convenient.
Also when working with lists such as relationships or instances you have the
additional ability to detach the relationship or make the instance unique.
It can be useful sometimes to arrange the nodes in the Schematic View the same as in the
viewport. There is a script that can do this for you. In this example we'll use the bones of
a character rig.
Tip: If the components appear on top of one another, right-click again and choose
Spacing Tool from the quad menu. Drag the spacing slider to the right to add
space between the objects. If necessary manually reposition components as
needed.
Menu bar > Graph Editors > Saved Schematic Views > Choose a saved schematic view.
The Schematic View is a node-based scene graph that gives you access to object
properties, materials, controllers, modifiers, hierarchy, and non-visible scene
relationships such as wired parameters and instancing.
Here, you can view, create, and edit relationships between objects. You can create
hierarchies, assign controllers, materials, modifiers, or constraints.
You can use the Schematic View Display floater to control what entities and relationships
you want to see and work with. Use Schematic View to navigate complex hierarchies or
scenes with large numbers of objects. Use Schematic View to understand and explore the
structure of files you didn't create yourself.
One powerful feature is the list view. You can see the nodes in a text list which you can
sort by criteria. The list views can be used to navigate extremely complex scenes quickly.
You can use the relationship or instance viewer within Schematic View to see light
inclusions or parameter wirings within the scene. You can control the display of instances
or see a list of object occurrences.
Schematic View also allows for background image or grid, and automatic arrangement of
nodes based on physical scene placement. This makes arranging nodes for character rigs
easier.
Everything displayed in the Schematic View window is shown as a box with a name.
There are various conventions to indicate different states regarding these objects.
End Arrow—Signifies that the entity shares a relationship with another entity.
White Fill—Signifies that the entity is selected in the Schematic View window.
White Border— Signifies that the entity is selected in the viewport.
Up Arrow—Collapses the entity it springs from and all child entities thereof up into
the parent entity
Down Arrow—Expands the next child entity down from the entity that the arrow
springs from.
Overlap—Schematic View will prevent newly visible nodes from overlapping with
existing nodes. This applies to free mode: make an object, free it, make another object
and it will fall on top but to the right of the original object so both can be accessed and
moved.
Instances—Schematic View will bold the text of instanced entities, for nodes this will
show up on the base object entity. In the example illustrated, Box02 and Box03 are
instances.
Procedures
See Using Schematic View
Interface
See the following topics describing the Schematic View user interface.
The HI Solver uses a goal to animate a chain. You animate the goal and the IK solver
attempts to move the end effector (the pivot point of the last joint of the chain) to match
the position of the goal. Often the goal is parented to other control objects such as points
or dummies, splines or bones, and these control objects in turn are wired to viewport or
rollout sliders.
The IK solution takes place in a plane, known as the solver plane. The angle of the solver
plane in world space is controlled by a parameter called the swivel angle. The swivel
angle is animatable. You can adjust it directly, or with a manipulator.
The HI Solver allows for the creation of multiple or overlapping chains. This allows you
to create multiple goals for additional controls. By linking the goals to points, splines,
bones or dummies, you can create simple controls to animate complex chains or
hierarchies. You can also use constraints on these goals or control objects, as another
animation tool.
Applying an HI Solver
To apply an HI Solver to any part of a hierarchy select the bone or object where you want
to the solver to start. Then choose Animation menu > IK Solvers > HI Solver. In the
active viewport move your cursor to the bone where you want the chain to end. When
you click to select that bone, the goal is drawn at the pivot point of that bone. If you want
a goal at the far end of the bone, refine the bone where you want to goal to be placed. An
extra bone will be added, and then choosing that bone allows you place the goal at the
end.
When you create bones, a small "nub" bone is automatically created at the end of the
chain to assist in this process.
• The first chain is created from the hip to the ankle. This chain controls the overall
leg motion including bending of the knee.
• The second chain is created from the ankle to the ball of the foot. This chain
controls the heel's up and down motion.
• The third chain is created from the ball of the foot to the toe.
When the three chains work together they help to maintain the foot’s position in space.
This means it will keep the foot planted on the ground as the character’s body moves. All
three IK chains in this hip-to-toe setup place goals at key positions in the foot that mimic
natural foot behavior. In real life, the toe, ball of the foot, and heel can be planted on the
ground or raised.
Each chain has an goal that drives motion on the heel, ball of foot, and toe. Use the IK
goals to raise the heel, bend the toe, move and rotate the entire foot, and maintain the
foot's position in space.
Overlapping Chains
The IK solver system allows you to create overlapping IK chains in a single hierarchy. In
a human leg, for example, you could create a chain running from the hip to the ankle,
then a second chain from the knee to the ball of the foot, and a third from the ankle to the
toes. Use overlapping chains, when you want to apply goals to sequential bones, but you
don't want to refine the bones.
Another good use for overlapping HI IK chains is to keep the goals at the bottom of the
hierarchy firmly rooted in place. In the case of the leg example, the ankle, ball and toe of
the foot would not move until the upper portion of the hierarchy had reached its full
stretch.
Don't try to overlap chains with different kinds of IK solvers or you might get
unpredictable results.
Besides hierarchical linkage, you can now use the new Constraint system in conjunction
with IK solvers. You could apply any of the constraints to create a relationship between
the goals or bones and other objects. The goal could be position constrained to a dummy
which is moved. Or you could create three bone chains that are all in the same place, and
constrain one bone chain to another, then weight the constraints.
Bone chains constrained together
Using control objects gives you something bigger to select in the viewport. You can also
use control objects to separate chains, for example in a human arm one chain could end at
the wrist and another separate chain be created for the hand and fingers. The control
object at the wrist serves as the root node for the hand chain, yet that chain would remain
disconnected (hierarchically speaking) from the arm chain.
You can create viewport sliders using the manipulator helper, and then use the viewport
sliders to control the transforms of the control objects. Use wire parameters to hook up
the sliders with the control objects. You can also create Custom Attributes to add these
sliders to the object rollouts.
When the Enabled button is on, the FK subcontroller values are preserved but ignored.
When Enabled is turned off, the FK subcontroller values apply. To access the Enabled
button, select the goal and go to the Motion panel, then turn off the Enabled button. This
will allow you to animate using FK rotations of the bones or hierarchy objects.
When working with IK and FK together it is possible to create a situation where the goal
has moved away from the end of the chain. Use the IK/FK snap button to reposition the
goal, snapping it back to the end of the chain. When AutoSnap is on, the snap happens
automatically; when you touch the goal, you don't have to click the IK/FK snap button.
Controlling HI IK Precision
When you are animating with HI Solvers, if you find the animation of the limbs is not
smooth, you should try doubling the Iterations in the Solutions group of the HI Solver
Properties rollout. You can also try reduce the Thresholds value to smooth the animation.
IK Solver Rollout (HI Solver)
Select an HI or IK Limb Solver IK Chain control (the blue cross at the end of the chain.)
> Motion panel > Parameters button > IK Solver rollout
The HI Solver is a history-independent solver that doesn't rely on the calculations from
previous frames for the IK solution, so it is fast to use no matter the length of your
animation. The history-independent solver uses a goal to manipulate the end of the chain.
It uses a preferred angle that specifies a preference regarding which direction the link will
rotate: positive or negative. The preferred angle can also be considered as the initial
angle; that is, the angle at which the link was rotated at the time the solver was applied.
The IK solution takes place in a plane, known as the solver plane. The angle of the solver
plane is controlled by a parameter called the swivel angle.
The angle of the solver plane is actually calculated in one of two coordinate systems: the
Start Joint Parent space or the IK Goal Parent space. World space is not an explicit
option; however, you can easily configure the IK chain to work in world space by
choosing the IK Goal Parent option and making sure that the IK goal is unlinked (i.e., has
no hierarchical parent). In this case, the IK goal’s parent is the world, and therefore, the
solver plane will be computed in world space.
The swivel angle is animatable. You can adjust it directly, or with a manipulator. Or you
can target the swivel angle to a object and animate that to affect the swivel angle. These
parameters are on the IK Solver Properties rollout.
The HI Solver is designed to let the animator jump back and forth between forward and
inverse kinematics quickly and conveniently, with tools to automatically enable IK and
snap the goal to the end effector.
Procedures
To turn off IK on a chain:
IK is now off, so you can select and rotate any of the objects in the chain. Turning
IK on and off is animatable using the Auto Key button.
To mix IK and forward kinematics (FK) in a single animation track:
1. If the goal and end effector become separated, click IK/FK Snap and the goal will
move to match the end link of the chain.
2. If AutoSnap is turned on, clicking the goal will automatically perform the snap
action, matching the goal and end effector positions.
Interface
IK Solver group
The items in this group provide the ability to set the start and end points of the selected
HI IK solver chain. There are also controls in this rollout that allow you to use IK
manipulation to create forward kinematic rotational keyframes on the hierarchy objects,
and there are buttons to align the goal and the end effector.
Solver field—Allows selection of IK Solver. Choose between the HI IK Solver and the
IK Limb Solver here. Any HI IK plug-in solver present at startup will appear in this list,
as well.
Use this to turn off the chain control by the goal, when you want to do forward rotations.
IK Snap—If the goal has moved away from the end of the chain, clicking IK/FK Snap
moves the goal to coincide with the end link position.
Auto Snap—When Auto Snap is on, the software automatically applies an IK/FK snap
before you turn Enabled on or off. If Auto Snap is not on, you need to click IK/FK Snap
before toggling Enabled, otherwise the chain will jump.
Set As Pref Angles—Sets the preferred angle for each bone in the HI IK chain. The
current parent-space rotation of each bone is placed into its X, Y, and Z Preferred Angle
rotation channels as seen in the Rotational Joint rollout of the Hierarchy|IK panel. This is
useful for establishing a perfect match frame when transitioning between forward and
inverse kinematics.
Assume Pref Angles—Copies the X, Y, and Z preferred angle channels of each bone and
places them into its FK rotation subcontroller. This essentially performs the inverse
operation of the Set As Pref Angles function.
Pick Start Joint—Defines one end of the IK chain. Select from the viewport or by name
(press H).
Pick End Joint—Defines the other end of the IK chain. The direction of the chain is
defined by the hierarchy, not by Start and End Joint. Select from the viewport or by name
(press H).
Warning: If you change the Start or End Joints so the IK Limb Solver so there are more
than two bones between the start and end, the solver will not work. Moving the IK goal
does not affect the bones.
Tip: The order of the hierarchy determines the direction of the chain. You cannot reverse
the direction of the chain by picking Bone 10 as the start and Bone 1 as the end.