Top Banner
Create Character See Adding Character Assembly Commands to the UI . This command creates a character assembly . 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. The character-assembly node is created at the bottom of the entire selection, as viewed in the Front viewport. 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.
40
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Rigging Part 2

Create Character See Adding Character Assembly Commands to the UI .

This command creates a character assembly .

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.

The character-assembly node is created at the bottom of the entire selection, as viewed in the Front viewport.

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.

Character Assembly rollout

Skin Pose group

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

Page 2: Rigging Part 2

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.

All Objects—Displays all objects in the character assembly.

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.

Page 3: Rigging Part 2

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.

Reset All Animation—Removes all animation from the character assembly.

Character Members rollout

Add—Allows you to select individual objects to add to the character assembly.

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.

Retargeting applies to any kind of animation, from matching fight choreographies, to changing a weather balloon's fly-through trajectory over hills and valleys. The down side of this is that essentially you have to set up the scaling relationships by hand; the good

Page 4: Rigging Part 2

news is that the steps are fairly straightforward, and that once you have retargeted, the settings are reusable for all animation mapped between the same two sets of objects.

While retargeting is a general-purpose feature, it is especially useful for transferring animation from one character to another, when the characters are of different sizes, and possibly of different proportions (for example, a human model to a gorilla, or vice versa). You can transfer IK animation onto an FK rig, or vice versa. There are some rules of thumb when you work with mapping character animation:

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.

Characters are usually symmetrical.

Because of this, usually retargeting one limb does the trick for both.

If a character's limbs are not symmetrical, retarget each of them individually. If the current model uses forward kinematics, then use the FK Retargeting Extent controls as well.

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.

Page 5: Rigging Part 2

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.

3. Go to the Retargeting rollout. 4. In the Scale Origin group, choose both the Incoming and Current root objects.

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.

6. Click Set to retarget the highlighted mapped tracks.

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.

7. Save the retargeted mapping file.

8. Click Load Motion to animate the current character, and then close the Map Animation dialog.

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.

The fields in this list are as follows:

Page 6: Rigging Part 2

Current Mapped Node—Shows the node-to-node mapping, as in “CurrentObject->IncomingObject.”

R—When a mapping has been retargeted, this field shows an “X.”

Scale (X,Y,Z)—Shows the current scaling factor for each dimension of the current node.

Absolute—When a mapping uses absolute scaling, this field shows an “X.”

Scale Origin (Incoming,Current)—Shows the incoming and current scale origins for this mapping. If the mapping hasn't been retargetted, this field shows “Scene Root , Scene Root.”

Incoming Chain (Start,End)—If the mapping has been retargeted, shows the incoming chain used to calculate scale.

Current Chain (Start,End)—If the mapping has been retargeted, shows the current chain used to calculate scale.

FK Extent—If a mapped track's FK extents have been recalculated, shows the parent node used in the recalculation.

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

Absolute—When chosen, scaling for the currently highlighted mappings is absolute, and based on the XYZ settings in this group alone.

Multiply Derived Scale—(The default.) When chosen, scaling for the selected mappings is based on both the XYZ settings in this group, and calculations from the Derive Scale Between Chains group and the FK Retargeting Extent group (if that is used).

X/Y/Z—You can use these fields to explicitly set the scaling factor for the currently highlighted mappings.

Scale Origin group

Page 7: Rigging Part 2

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.

Derive Scale Between Chains group

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.

Incoming Chain—These controls set the incoming IK or FK chain to use in calculating the Scale Factor.

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.

Current Chain—These controls set the incoming IK or FK chain to use in calculating the Scale Factor.

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.

Page 8: Rigging Part 2

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).

FK Retargeting Extent group

When the current model uses IK, 3ds Max knows the extent to retarget because it is defined by the IK solution. But if the current model uses FK, you should specify the extent of retargeting. For example, mapping rotation animation from a long leg to a short leg with different link lengths requires that the short leg’s foot be chosen to retarget so it ends up meeting the floor in the same way the long leg does. In order for 3ds Max to know how far up the chain from the foot to do the retargeting, the parent of the desired chain (for example, the thigh) must be specified. By defining the two chains to compare, 3ds Max can adjust the resulting rotations such that the feet don't slide.

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.

Enabled—Turn on to enable retargeting extents. Default=off.

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

Page 9: Rigging Part 2

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.

Page 10: Rigging Part 2

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.

Limitations of the Limit Controller

It's important to be aware of the following limitations of Limit controllers:

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

Page 11: Rigging Part 2

Example: To use the Limit controller:

1. Start with an animated object, and open Curve Editor.

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).

3. Expand the track.

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.

Page 12: Rigging Part 2

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.

8. Scrub the animation.

The motion on the X axis is limited at both extremes; wherever the object originally moved beyond the limits, it now behaves as though it's hitting a wall.

9. Again compare the two tracks.

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.

Page 13: Rigging Part 2

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.

This reopens the Float Limit Controller dialog.

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

Page 14: Rigging Part 2

The Limit Controller interface comprises the Float Limit Controller dialog and several-right-click menu items.

Float Limit Controller dialog

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.

Upper Limit Group

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.

Smoothing Buffer—Specifies a smoothing value, so that clipped values at the beginning and end of a clipped range gradually increase and decrease instead of leveling off abruptly.

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.

Lower Limit Group

Page 15: Rigging Part 2

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.

Smoothing Buffer—Specifies a smoothing value, so that clipped values at the beginning and end of a clipped range gradually decrease and increase instead of leveling off abruptly.

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 Lower Smoothing track in the controller's Limits branch.

Limit Controller right-click menu

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.

Page 16: Rigging Part 2

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.

To create hierarchies with Schematic View:

1. Select the objects you want to work with in the viewport. 2. Use Zoom Extents Selected to display these objects in the Schematic View

window.

3. On the Schematic View toolbar, click the Connect button.

4. In the Schematic View window, drag from the child object to the parent. A dotted line follows your cursor. Click to set the linkage.

If you are in Hierarchy mode, the children will arrange themselves into an indented list under the parent as you create linkages.

To assign controllers with Schematic View:

1. On the Schematic View toolbar, click Display.

Page 17: Rigging Part 2

The Display floater appears. It lets you control what you see in the Schematic View window.

2. On the Display floater, in the Relationships group, click Controllers. In the Entities group, click Controllers as well.

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.

To save a Schematic View layout:

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.

To add a background image:

Page 18: Rigging Part 2

1. On the Schematic View Options menu, choose Preferences. 2. In the Background Image group, click the File: button to launch the File Browser.

3. In the Browse Images for Input dialog, find and highlight the bitmap you want to use, then click Open.

4. On the Schematic View Preferences dialog, in the Background group, turn on Show Image.

The Background bitmap show up in the Schematic View window.

Tip: Turn on Lock Zoom Pan, if you want to zoom in or pan the background image.

To navigate complex scenes:

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.

1. Open Schematic View 2. Press H on the keyboard and enter the name of the object you're looking for in the

Select Objects field. Press Enter to select the object by name.

3. In the window navigation tools group, click Zoom Selected.

The Schematic View window now clearly shows the object node.

4. On the List Views menu, choose Show Occurrences.

The List viewer displays the Object Occurrences dialog.

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.

Page 19: Rigging Part 2

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.

To arrange the nodes in Schematic View to match the viewport:

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.

1. Using Windows Explorer, copy \3dsmax\scripts\maxscripttools\macro_schematicviewtools.mcr into \3dsmax\ui\macroscripts.

2. Restart 3ds Max.

3. On the Customize menu, choose Customize User Interface.

4. Click the Quads tab, then choose the Schematic View category from the drop-down list on the right

5. Drag the action named Project into Schematic View in the Schematic View quad menu (any quad you like).

6. Drag the Spacing Tool item into Schematic View’s quad menu.

7. On the Graph Editors menu, choose New Schematic View.

8. In any viewport (other than Perspective or User), select the bones of the rig that you want to arrange.

9. In the Schematic View window, right-click and choose Project Into Schematic View from the quad menu.

A new Schematic View named Projection shows the selected bones arranged as in the viewport.

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.

Schematic View Window Menu bar > Graph Editors > New Schematic View

Menu bar > Graph Editors > Saved Schematic Views > Choose a saved schematic view.

Page 20: Rigging Part 2

Main toolbar > Schematic View button

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.

Choose between a variety of arrangement selections so you can auto-arrange, or work in a free mode. The layout of the nodes is saved with the named Schematic View window. You can load a background image as a template for laying out the nodes in the window.

Schematic View Features

Here are some of the notable features of Schematic View:

Layouts are saved with the named Schematic View file. Text remains readable during window navigation.

Schematic View includes new tools for displaying and arranging nodes including a new free mode.

You can use a background image or grid in the Schematic View window.

You can see and edit wired parameters.

Page 21: Rigging Part 2

A new modeless display floater lets you turn on and off node display by category.

A new Relationship List Viewer has been added, for quick navigation and selection of nodes. Relationships displayed includes Lights inclusion/exclusion, all parameter wires, constraints, controllers, and modifier relationships such as path deform paths and morph targets

You can now copy and instance controllers.

You can assign new controller types.

Schematic View offers extensive MAXScript exposure.

Performance has been substantially improved.

Ability to drill down to more properties (such as static values and custom attributes).

How the Components of Schematic View Behave

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.

Solid End—Signifies that the entity is arranged.

Open end—Signifies that the entity is free.

Red Border—Signifies that the entity is animated.

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

Page 22: Rigging Part 2

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.

Schematic View Menus

Schematic View List Views

Schematic View Preferences Dialog

Schematic View Toolbars

Schematic View Display Floater

Animating with the HI IK Solver The HI (History-Independent) Solver does not rely on IK solutions calculated in previous keyframes in the timeline, so it is just as fast to use at frame 2000 as it is at frame 20.

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.

Page 23: Rigging Part 2

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.

Setting Up Multiple Chains

To rig a skeleton for a human leg you could use three chains in one leg, as follows:

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

Page 24: Rigging Part 2

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.

Overlapping chains make the toe stick to the ground

Don't try to overlap chains with different kinds of IK solvers or you might get unpredictable results.

Creating Control Objects

To create control objects to animate the goals, create dummies, points, splines or other objects near the goal, then link the goal to the control object. For example in a human leg, you might have a goal at the ankle, ball of the foot, and the toe. You then create three splines under the foot, one for the heel, one for the ball and one for the toe. Link each goal to each spline, then you can animate the goals using these splines. You could also link the splines together, so that the rotation of the toe is controlled by the movement of the heel.

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

Page 25: Rigging Part 2

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.

Mixing Forward Kinematics with Inverse Kinematics

The HI IK solver provides a tool for mixing FK and IK in a single animation track. There is an FK subcontroller beneath the IK controller assigned by this solver.

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.

IK for FK pose allows one to turn on IK in middle of FK manipulation. When the Enabled button is turned off, and IK for FK Pose is on, then selecting and moving the goal lets you use IK to create the forward kinematic keyframes. Moving the goal poses the skeleton and add rotation keys to all the objects in the chain when the Auto Key button is on.

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

Page 26: Rigging Part 2

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.

Changing 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:

1. Select the goal of a chain with an HI Solver. 2. In the Motion panel IK Solver rollout, turn off Enabled.

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. Apply an HI IK Solver to a hierarchy or bone system. 2. Turn on the Auto Key button and move the time slider ahead in time.

3. Select the goal of the IK Chain, and open the Motion panel.

Page 27: Rigging Part 2

4. Select and move the goal to animate the IK chain with Inverse Kinematics.

5. Advance the time slider again.

6. In the IK Solver Rollout, turn off Enabled and IK for FK Pose.

7. Select and rotate the root. The entire hierarchy rotates freely. You are now adding keyframes using forward kinematics.

To match the goal and the end effector positions:

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.

Enabled—Turns IK control of the chain on and off.

The HI IK Controller has an FK subcontroller. When Enabled is selected, the FK subcontroller values are overwritten by the IK controller. When Enabled is turned off, the FK values are used. You can animate Enabled On and Off.

Use this to turn off the chain control by the goal, when you want to do forward rotations.

IK for FK Pose—Lets you turn on IK in middle of FK manipulation. When Enabled is off and IK for FK Pose is on, moving the goal will turn on IK automatically in the middle of an FK manipulation. The result of this is that all the FK subcontrollers receive values from the IK solution. Keys are placed on the hierarchy objects or the bones, not on the

Page 28: Rigging Part 2

goal. When both Enabled and IK for FK Pose are turned off, moving the goal does not affect the chain at all.

IK/FK Snap—Performs an IK snap when in FK mode, and an FK snap in IK mode.

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.

FK Snap—The values of FK subcontrollers are suppressed by the solution of IK when IK is on (Enabled is on). Their values don't always correspond to the current pose of the chain. If you turn off Enabled, the values of FK subcontrollers will suddenly take over. This can cause the chain to jump. FK Snap, before Enabled is turned on, forces the FK subcontrollers to assume values from the current pose (which is determined by the IK.) This eliminates the jump in the chain's animation.

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.

Preferred Angles group

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.

Bone Joints group

Allows you to change the ends of the IK chain.

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.

Page 29: Rigging Part 2

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.