Microsoft KB Archive/168110

= Microsoft Knowledge Base =

HOWTO: Creating a Caterpillar Track Motion System
Last reviewed: May 6, 1997

Article ID: Q168110

The information in this article applies to:


 * Softimage 3D for IRIX, version 3.51
 * Softimage 3D for Windows NT, version 3.51

SUMMARY
The purpose of this article is to demonstrate how to create a caterpillar track motion system using the following tools: Spline Deformations, Expressions, Skeletons, and Constraints. The techniques employed in this tutorial can be improved upon and/or modified to suit your specific project needs. This tutorial is designed for users who have a basic knowledge of SOFTIMAGE 3D.

SOFTIMAGE 3D version 3.51 was used to create this tutorial. If you are running a different version of SOFTIMAGE 3D, certain menu options may have different locations or slightly different names.

This tutorial also appears, with images, in the Tips and Tricks section of the Softimage web site. To view it with images, enter the Softimage address: #|http://www.softimage.com on the URL line of your Internet browser. When the Softimage home page appears, select Support & Training, then choose the Tips and Tricks option.

Step I: Creating the Track System
From the Model Module:


 * 1) Choose Get > Primitive > Circle. Make it a B-Spline with a radius of 5 units and a Step value of 8.
 * 2) Scale the circle 0.5 units on the y-axis. You now have an oval-shaped circle.
 * 3) Switch to TAG mode. In the Front view, translate the sphere's top middle point 1.5 units on the y-axis, and the bottom middle point -1.5 units on the y-axis. Your curve should now have a racetrack-like shape.

Step II

 * 1) Choose Get > Primitive > Cube.
 * 2) Switch to OBJ mode and scale the cube: X = 0.12; Y = 0.03; Z = 0.19.
 * 3) Rotate the cube 90.0 degrees around the X and Z axis.
 * 4) Freeze both the Scaling and Rotation of the cube (Effect >Freeze).
 * 5) Choose Duplicate > Repetition. Only specify: No. of Occurrences = 19 and Translation for Y = 1.3. In the Schematic view, you will see a branch containing 19 duplicate cubes. Select the Parent Null of this branch and make it the Parent of the original cube that you used to make the duplicates. In the Front view, the cubes are stacked on top of each other on the positive y-axis.

Step III: Spline Branch Deformation

 * 1) In Single mode, select the entire branch of cubes using the right mouse button.
 * 2) Choose Deformation > by Curve > Branch > Create. Then pick the B-Spline curve. The branch is now deformed on the B-Spline curve, but it is not closed.
 * 3) To close it, scale the branch 1.105 units on the y-axis. Now the deformed branch's ends meet.

Step IV: Creating the Landscape Model

 * 1) Get a Primitive B-Spline Patch Grid and accept the default values.
 * 2) Scale the grid to 10.0 units for the X, Y, and Z axis.
 * 3) With the grid selected, choose Effects >Randomize. Set: X = 0; Y = 0.1; Z = 0; Repetition = 5. The grid's surface will be deformed.
 * 4) Choose Draw > Extract, and pick the curve on the grid that is on the horizontal plane parallel to the B-Spline curve that represents the track deformation branch. (In Top view, this curve appears in the middle of the grid.) An extracted B-Spline curve will be visible.
 * 5) Hide the extracted B-Spline curve for the moment. You will need to use it later in the exercise.

Step V: Global Envelope

 * 1) Draw a 2D Chain with 1 joint. Draw from the bottom-middle section to the top-middle section of the B-Spline track.
 * 2) Make two duplicates of the chain. Translate the first duplicate -3.5 units on the x-axis, and translate the second duplicate 3.5 units on the x-axis. You will see three single-joint chains arranged side-by-side.
 * 3) Select the B-Spline track curve, and choose Skin > Global Envelope, then pick each chain one-by-one. You have just created a new branch IK Chain/Envelope assembly.

Step VI: Spline Deformation, Clusters and Constraints

 * 1) Get a Primitive Cylinder and accept the default values.
 * 2) In TAG mode, tag the points in the upper row of the cylinder.
 * 3) Choose Tag > Set Cluster, and click New in the dialog box.
 * 4) Repeat the Set Cluster command for the points in the middle and bottom rows of the cylinder.
 * 5) With the cylinder selected, choose Deformation > by Curve > Node > Create, and pick the extracted B-Spline track curve (extracted from the Grid).
 * 6) In LCL mode, translate the deformed cylinder 50.0 units on the y-axis.
 * 7) Scale the deformed cylinder so that X = 0.05; Y = 1.5; and Z = 0.05 units.
 * 8) With the cylinder still selected, choose Tag > Cluster List, and select the first Cluster from the Cluster List Browser.

From the Motion Module:


 * 1) In the Front view, select the root Null of the IK Chain that is parallel to the cylinder's active Cluster.
 * 2) Choose Constraint > Object to Cluster, and pick anywhere on the cylinder. You will see the Root Null constrain in position to the cylinder's active Cluster; the area of the B-Spline track curve that is weighted to this IK Chain's Root Null translates on the positive y-axis.
 * 3) From the Model module, select the cylinder.
 * 4) Choose Tag > Cluster List, then select the second Cluster from the browser.
 * 5) Select the IK Chain's Root Null that is parallel to the cylinder's second Cluster.
 * 6) In the Motion module, choose Constraint > Object to Cluster, and pick the cylinder. You will see the second IK Chain's Root Null constrain in position to the cylinder's active Cluster (second Cluster).
 * 7) Repeat the last two operations in order to constrain the third IK Chain's Root Null to the cylinder's third Cluster.

Step VII: Expressions & Animation
From the Motion module:

 Get a primitive Null, and translate the Null 5.0 units on the y-axis. Select the cylinder, and choose Expressions > Edit. Select the "nsftry" Fcurve from the Fcurves Browser. This Fcurve will be associated to the Effected Element (cylinder). For the Expression, select the Null from the "Scn Elements" browser. For the Expression Fcurve, select the "etrnx" Fcurve from the Fcurves browser.  The Expression must be modified with an argument in order to synchronize the translation of the cylinder relative to that of the Null. The Expression must look like the following: Null2.etrnx + 50  Create a second Expression, this time selecting the Deformation Branch. The Affected Element's (Deformation Branch) Fcurve should be the "bsftry" Fcurve (selected from the Fcurves Browser). For the Expression, select the Null from the "Scn Elements" browser, then select the "etrnx" Fcurve from the Fcurve browser.</li>  As in the previous Expression, an argument must be added to this Expression in order for the Deformation (the track model) to maintain a motion relative to the Null's translation. The expression must look like the following: Null2.etrnx * - 1 </li></ol>

Step VIII: Test the Track Motion System

 * 1) Translate the Null locally on the x-axis. You will see the track system translate along the Extracted B-Spline curve and the Deformation Branch (the track) will translate around the B-Spline track curve (as a caterpillar track would). To save a key for the Null, choose SaveKey > Object > Explicit Translation X.
 * 2) Un-Hide the grid model that is used as the landscape for the scene.
 * 3) Activate Shade mode from the Perspective view. If you see parts of the Deformation Branch model (track) penetrating the surface of the grid, simply translate the Extracted B-Spline curve on the positive y-axis. The entire track system will also translate accordingly.
 * 4) You can add wheels to the track system by making any IK Chain joint the parent of a wheel model. The wheel model will follow the motion of its IK Chain parent.
 * 5) To add a chassis to the track system, simply make the middle IK Chain joint the parent of the chassis model.