There are two parts to this project. In the first part, I talk about keyframe animation and show some walk cycles and how to make them. In the second part, I demonstrate my implementation of Jacobian Transpose Inverse Kinematics in Maya.
To skip to the inverse kinematics portion, click here:
Keyframing: Walk Cycles
The objective of this task is to explore setting of keyframes to create expressive animation. For this part, I used the model of Kayla2014 which has a very complex rig, including IK handles and facial controls. I created three different walks that tried to express different emotions.
First, I started out by making what I thought is a basic or neutral walk.
I used 16’s for this by following the Animator’s Survival Kit. The contact frames are on frame 1 and 17, pass position on 9, and the down and up on 5 and 13. This video shows the breakdown of the neutral walk before I added hip swing.
Next, I made a more confident and expressive walk cycle by adding head bounce and more torso bend.
This screenshot shows the graph editor in Maya that shows the interpolation function between keyframes. In particular, this blue curve shows the swaying of the hip from left to right.
This is the graph that shows her head bounce movement. You can see that she tilts her head upwards to the left, then upwards to the right.
I learnt a lot about the animation graph editor. A fun fact I also learnt recently is that instead of smoothly interpolating keyframes, the movie “Into The Spider-verse” made use of stepped curves to achieve the liveliness of 2d frame-by-frame animation.
Lastly, I tried to create a “traditional sneak” walk cycle as a challenge for myself.
This was very different from previous walk cycles. The pass position and down position could be confused very easily. In the screenshot below, I have the hip joint selected. You can see which frames I have keyed for this joint. I used 16’s at first, but it turned out way too fast, so I multiplied by 4. Roughly. But you can see that I do not use a down position in this walk cycle. This is because part of the sneaky and controlled feeling of movement comes from keeping the height level once the character places their foot down.
Download all walk cycle Maya files:
Jacobian Transpose Method
For the second task, I decided to implement a Jacobian transpose IK. I decided to write a script in Maya that would do this. The video below demonstrates the script with a rigged tentacle model.
How to use
1. Create a cube called pCube1 in the scene. This will be the target.
2. Select end effector of the joint chain.
3. Paste the script file (I am using Charcoal Editor for Maya)
4. Run the script.
5. Move pCube1 around to pose the tentacle.
- I calculated the Jacobian analytically by calculating the rotation axis needed for the effector to reach the target. We were advised to try calculating it numerically first, but because I would have to move the end effector to compute this, we would end up seeing a lot of jittering in Maya and I wanted to avoid that.
- Do not normalize the vector from joint to end effector.
- I did all computations in world space up until the Jacobian. However, when applying the rotations, I converted the rotation axis to object space and applied the rotation in object space.
- alpha value needs to be changed depending on the length of joints. In this tentacle example, I used alpha = 0.001, but in another test that I did with smaller joints, the alpha needed was larger.
- I implemented a simple check for points that are unreachable because they are too far by snapping the target to a radius of maximum joint chain length.
- There is a tendency for a rig to become twisted, as shown in the video.
- For the future, I want to try to extend this for multi-effector, as well as to use pseudo-inverse and inverse methods, and explore damping.