Dino IK Setup
By Japa
Published: 3/10/13

 Dino IK Setup
by Japa 



Japa is from Spain and makes his living as a professional illustrator. Starting out with Bryce and Poser he moved onto Inspire as his first complete 3D package. Upgrading to Lightwave v6 in 2001, he finished his first all 3D project in 2002 (pelecanimimus). Lightwave 7.5 is his main 3D tool as with some help from Poser. He has recently began exploring all the new features in LW v8. Most of his work is a composite of classic hand drawn images and 3D renders with some pure 3D thrown in for fun. He has done a series of paleontological works and also a human anatomy series for a Spanish magazine.

You can view Jose's work here:

José Antonio Peñas aka japa


The companion files to this tutorial can be downloaded here:

Download File

Enough chatter.. onto the tut, here's Japa!

Hello Lightwave Group members!

I decided make a tutorial about IK chains oriented towards dino animations. For this tut I used a light version of my Pelecanimimus (no textures, medium polylevel)

If you make a comparison with, for example, a velociraptor or a T-rex, you see the major difference is the legs scale. Pelecanimimus is a running theropod, a fast and light beast. The T-rex is a big walking beast, and velociraptor is also a running predator, but strong and heavy. For this example, you can think of a similar style bird, the modern ostrich. Its bigger than pelecanimimus, but its displacement style is very similar).

The layout scene is a light-dome structure to simulate diffuse lights. If you think the render time is excessive on your machine, delete the object named DOMO DE LUZ and its linked spotlights and make your own illumination style. I included a basic scene (TRIAL1) for making the tutorial and one finished scene for comparison (TRIAL2).


Well, first you need make the skelegons in modeler, but to save time I made a simple skelegon setup for this purpose in my model.

Well, first you need make the skelegons in modeler, but to save time I made a simple skelegon setup for this purpose in my model.

This includes separate chains for legs and two linked chains for tail and body-to-head. Arm chains are also linked into body-to-head chain for integrate displacement. The tail chain is mainly to keep the tail structure free and avoid influencing for legs chains. For a simple walk cycle I prefer to use morphs for tail movements. If you want to, open the morphs menu you can see morphs for tail, mouth and muscle contraction. For the moment we will need to use the tail and mouth morphs. If you make your own bone structure you need rework it a little. No problem with the spine, body or head chains, but in a chain with complex joints you need adjust the rotation angles. Select the first bone of one leg chain. Goto Detail tab and open EDIT SKELEGON. You'll see the chain structure and a blue handle on all bones. You will need move the handles to correct orientation for joints (you can see this in Fig.03 handles are corrected).

To save time you can make the chains for a side (left leg and arm) and use mirror to load the other side with the corrected angles. Next open the SKELEGON TREE window and rename bones to make it easier to work with the layout. We need load the skelegon structure in same layer as the body (layer1 in my model) and we can start working in Layout.


Open the scene TRIAL1.lws and load the object PELECANIMIMUS.lwo

The model has three layers. Body Left Eye Right eye First step. We need adjust the pivot point for eyes. With RightEye selected, go to Items tab, and click on Pivot menu and select MOVE POINT TOOL. Move the pivot to eye center. Do the same for left eye (this is so you can rotate the eyes)

Next, we need load the skeleton. Select the body layer, use Bounding Box view to save time, and open ADD>BONES>CONVERT SKELEGON INTO BONES. Now, we need to add six null objects for IKcontrol purposes. Name them RLeg, LLeg. RArm, LArm, Head and General. We move the nulls to these control positions.

_Legs controls go to start of Ankle bones _Arm controls go to start of wrist bones _Head control go to start of Nape bone _General control remains at 0-0-0 position And finally, we go to SCHEMATIC VIEW and parent all null objects and Pelecanimimus to General control.


We need create five IK chains for legs, arms and body. Go to the Perspective view, rotate so you can see all the bones and open MOTION OPTIONS (m). Goto CONTROLERS AND LIMITS panel. We select the FemurL2 Bone and select INVERSE KINEMATICCS for Heading and Pitch Controllers; same option for RodillaR and TibiaL

Next, we select CorvaL (however it remains in KeyFrames options) and open IK AND MODIFIERS panel and select LLeg in GOAL OBJECT popup, and click in FULL-TIME IK and KEEP GOAL WITHIN REACH boxes. Also we select a GOAL STERNGTH of 8000 (I prefer use a very high value).

Now, we need to load the limits for bone rotations. I calculated these limits, so during this lesson we need make these changes.

We repeat the process for R bones, use RLeg Goal Object and load these limits.

We also need to make the arm chains, but for a basic IK cycle we don't need make big movements so we make the IK chains with no limit values. Load INVERSE KINEMATICS PITCH controller option for BLhombro BLBrazo BLCodo BLAntebrazo (Heading and Bank remains in KEY FRAMES option) Activate the LArm goal for BLMuñeca bone with 2000 for a STRENGTH value (similar to the Leg chains).

If you move the arm nulls you can see a chest deformation.

To avoid this, select BLbrazo and BRbrazo bones, open item properties window and select limited range, with a Max value of 150 mm.

The last chain is for head. In this tutorial we needs really a short value for each bone rotation and it isn't necessary to load limits for rotation. If you decide try another sort of motion you maybe need set limits. Remember, this is just the basics.

The back bones requires very shorts limits for heading and pitch (maybe 4-6º amplitude). Neck bones require increasing values as they continue back. And remember that the basic dino neck profile is always one "S" shaped.

We load Head null GOAL for Cabeza Bone and use a STRENGTH value of 2000 for it.

If we move the head null, we can see how arms move in respect to its own nulls (this is the purpose of linking arm chains to spine chains).

Tail bones don't need IK chain in this example, but you can try to make one for this purpose (I prefer morphs).

We are now finished the bone work: Action!


Save your work!! We will make the same basic cycle for both Leg chains. Next with scene editor, we will shift one of cycles to obtain a walk cycle.

First, we need load the start pose for RLeg and LLeg chain. In dromeosaur dinos (velociraptor, by example) you can make your model walk a little bent (remember Jurassic Park) but in running dinosaurs like pelecanimimus you need make a stretched profile. We need move a little the pelecanimimus body. y= 8 mm. Select the nulls and bones to move the dino into a valid start position.

LLeg: X= -114 mm Y= 528 mm, Z= -117 mm (we move a little in X axis because when a biped walks, his foots moves to the X axis) RLeg: X= 126 mm Y= 433 mm, Z= 322 mm

And now, we need adjust the foot bones angles to obtain a good pose. We only need to work with Pitch angles. To make this easier I use FrontFace Wireframe mode.

This is a good start pose for walking, but maybe you can see a deformation in right calf (red circle). The cause for this problem is another bone influence. To avoid this, you need select RTibia bone, open item properties and set a Stregth value of 500. Do the same for L Tibia. The deformation is corrected.

Next, we set the LLeg null and RLeg null and bone values to obtain a symmetric pose.

(in RLeg null we modify Y and Z values, X is unchanged)

Now, we make a key for nulls in the frame number 20 and load the values we obtain first for RLeg then for the Left chains.

Finally we load another key in frame number 40, with same values as frame 0. Now for leg's bones and nulls, the basic motion is loaded. If we move the frame slider we can see how the legs slide back to front to back, but we need them move in the Y axis for a real walk. We select LLeg and open Graph Editor. Starting with this part, I load the values I obtain for TRIAL2. Its very difficult to exactly the same values as me because adjusts in Graph Editor are very delicate and isn't possible use numeric values when you modify bezier handles. For this example, use my values and images for reference when you adjust your paths.

To simplify the Gr.Editor work we load channels for the XYZ position for LLeg and RLeg, and save this set with Popup channel menu as NULLLEGS.

Also, we need make a set with Pitch Rotations for all foot bones and save this set as BONELEGS.

Graph editor is a very power tool, but a lot of users are afraid of the interface. It really is very intuitive. Like for displacement paths. You need make a similar profile in the graph editor that you need in layout (but, since you need make a cycle, the path in graph editor is extended in two parts, but is closed in layout view). First, we convert the ZPosition channel from LLeg and RLeg to Linear mode for obtain a constant speed motion.

Next, I need make the LLeg null path grow in Y axis during motion, This makes the foot go up during walk cycle. We select LLeg Y position channel. Select the three keys and convert to Bezier spline mode. With Alt pressed, move the beziers handles to make a growing curve with the top in frame number 5 (approx.

If you see the leg profile in frame number 10, when the null is at the top of path, you can see the thigh is a little pressed against body. We need a little change in body position because during biped walking the body goes up a little when one leg is in air, and goes down when two feet are on the ground. I select this value for pelecanimimus body in frame 10 and also for frame number 30. Yposition= 40 mm Also we need to lock the value y= 8 mm in frames number 20 and 40. At the moment X and Z values remain unchanged.

We now make some adjust in Graph editor and make a similar path for RLeg: we select both Yposition channel , change to bezier spline mode and move the bezier handles of R channel to same position as the L channel. We move the frame slider from 0 to frame 20. The dino will bounce (they remind me of a kangoroo) but we need to adjust the bones position during this movement. If you've seen an ostrich walking, you have a good example for this change.

We load next values for pitch rotation in frame number 10. Plantar L Pitch angle is -60º Plantar2 L Pitch angle is -10º FalLC1 Pitch angle is 39º FalLC2 Pitch angle is -4º FalLC3 Pitch angle is 27º

We need load similar values in RLeg bones: the bounce is very realistic now! Next we can add a little correction for nails position in frame number 15. We locked pitch angle for FalLC3 and FalRc3 with a value P = -15º. Make a preview with a leg locked in frame 15 and the other one unlocked and you can see the difference.

And next, I need to adjust the path in the frames between 20 and 40 frames (when the foot slides front to back) to obtain a correct motion over floor surface. In graph editor I select the keys in 20 and 40 and move the bezier handles for an inverted the path profile.

And also we need make some adjust to foot bones position in frame 30 to obtain a natural movement.

In frame 9 we see the higher position for leg nulls (in my example of course. When you makes your adjusts in graph editor the higher point can be the frame 10, 11, 8...). At this point the dino contract his toes. I make a new key to adjust the bones to these angles.

Plantar L Pitch angle is -9º Plantar2 L Pitch angle is -18º FalLC1 Pitch angle is -10º FalLC2 Pitch angle is -39º FalLC3 Pitch angle is -19º

We enter the same values in RLeg bones. Of course you need make some final adjustments with Graph editor and bone angles at this point. The final result must be a natural movement of the foot over the surface and avoid the feet penetrating the ground.

For references, you can see in this image the final path for my leg cycle.

Next, we need some complementary motion in another parts of the body. if you think any of these modifications is confusing, please see the values in the TRIAL2 scene.

First I move the arms a little to front in 20 frame (change is Z= 925 mm for both arms in 20 frame) and locked in frame 40 the same value for frame 0

Now I move Headnull in frame 10 and 30, and repeat the 0 frame values for 20 and 40. Position in 10 and 30 frame is X=0 Y= 1.55 m and Z= 940 mm; additionaly, I repeat the head bone pitch value in 20 and 40 frame, and change in 10 and 30 frame to 50º

For the tail we need select the body layer and open the item properties window. In the deform tab I open the Displacement menu and load MorphMixer. Open this, and go to Cola menu. You will see four sliders.

For frame 0 move 1 slider to 100. For frame 20 move 1 slider to 0 value and 2 slider to 100 value. Finally for frame 0 move 1 slider to 100 and 2 slider to 0.

Open Graph editor and select both morphs channel and make the tension = 1 in TCB spline mode

Here is the final effect.

Well, we move the slider and our dino has a natural movement... really a natural kangaroo movement. We need to do a little more work to make a natural walk cycle.


Well, this is a very easy step: we need to shift the RLeg cycle keys 20 frames (refer to LLeg keys) to make the walking motion; we will use Scene editor.

We open Scene editor and select RLeg and RArm null object

Next, open the Shift Keys menu, select SHIFT KEY TIMES FOR SELECTED ITEMS and load a value of 20 in SHIFT FRAMES BY box

Next, we select the R foot bones (PlantarR, Plantar 2R, FalRC1, FalRC2, FalRC3) and repeat the shift. Close Scene Editor and move the slider: both legs move coordinate... but we need continuous motion, because in frames 0 to 10 RLeg don't move, and in frames 40 to 60 also LLeg don't move.

Open Graph Editor and select the NULLLEGS set: select all channels and select REPEAT in PreBehavior and PostBehavior popup menu. Also select the BONELEGS set and make same change.

Select the body, head, LArm and RArm position channels in Graph editor and also select REPEAT, and same for head bone (use tension =1)

We need to make a little body adjustment: select back view: in frame 10 we need change the Bank angle to -1,2º, and in 30 frame we change to 1,2º

Open the MorphMixer, select Cola menu and select the top view: in 0 frame move the DER slider to 100 value, in 20 frame move DER slider to 0 and IZQ slider to 100, and in 40 frame move DER slider to 100 and IZQ slider to 0; open graph editor, load tension value = 1 and make REPEAT for all channels And, also in MorphMixer, select Boca menu: in 10 frame move CERRAR slider to 50 value, in 20 frame to 0, in 30 frame to 90 and in 40 frame to 0; open Graph editor, load tension = 1 and select REPEAT And we end the walking cycle! we need make a preview for see the real speed, and finally we can make a render of basic cycle.

Thanks for your patience and hope you have fun!

This tutorial has also been provided as a PDF file: Dino IK Setup.pdf