Notes for Monday Nov 16 and Wednesday Nov 18 classes -- Inverse Kinematics

Monday class

On Monday we introduced 2 link inverse kinematics.

The basic idea of IK is that you specify the position of a joint at the end of a kinematic chain, and the computer then does the work for you of figuring out how to do all the intermediate rotations to position that joint.

This is in contrast to "forward kinematics", in which you need to provide all of those intermediate rotations yourself. IK is extremely important both in robotics and in character animation.

In this case we just showed in class a way to implement the special case of 2-link IK. We went over this in class, and implemented an example.

At the end of class we watched The VR scene from Johnny English Strikes Again

 

Wednesday class

On Wednesday we built upon 2 link inverse kinematics, used the mouse to track the wrist position of the arm, and built a table to steer the preferred direction of the elbow.

We also a head to the arm, and arranged for the head to look at the moving wrist.

 

Homework

Due next Wednesday before the start of class

Start with the included code in hw11.zip. Create your own scene in a way that makes use of inverse kinematics. Here are some ideas:

  • Add the other arm. Remember to reverse the sense of x when using the aim table for the elbow direction.

  • Use Splines to create a predetermined animated path for one or both hands.
Feel free to try something that you came up with to show that you can do animation or other interesting things with inverse kinematics, if you feel inspired to do so.

For example, you might create and animate a four legged creature, or a desk lamp that feels alive and likes to look at things, like in Luxo Jr.

Or you might want to try extending the matrix library to add mAimX() and mAimY() functions`,

Or you can add a second argument to the mAimZ() function in which you explicitly give a hint direction for the X vector. If I had added that, I could have kept the head upright when I was using the mAimZ() function to make the head look at the wrist in class.