Source Code and Exe (260KB)

Article in PDF format

3D Morphing Demo

Inverse Kinematic solution in 3D. I didn't include a demo of the 3D technique because the user interface is pretty

complicated. At least more complicated then I wanted to build up for the magazine. But I promised I would post the

code to make it work. So this is it:

As I said in my talk at the GDC, to extend the CCD method to 3D from the 2D system in November's

Game Developer is quite easy. In the 2D method, I used the dot product to find the angle needed to

rotate the link by to reach the end effector and the cross product to determine which way to rotate.

However, remember that the cross product actually gives the AXIS of rotation. This axis can be an

arbitrary axis in 3D. So, the same technique works. The cross product returns the axis about which to

rotate and the dot product gives the angle. I convert these numbers to quaternions, and multiply them into

the current link state. Damping is handled the same way using the dot product value. However, the DOF

restrictions are a problem. I don't know how to do DOF restrictions in Quaternions so I must conver to Euler

angles using the routine below. Once that is done the restrictions are inforced, convert back to Quaternions

and all is well.

First thing you need for the DOF restrictions in 3D is to convert Quaternions back into Eulers.

This is the only way I know of to do this right now, but I am investigating other methods that stay in

Quaternion space. This routine converts from Quaternion to Euler angles using my order of rotations

and my matrix layout. It has all the problems associated with conversion back to Euler angles but works

for my limited scope. Can be optimized greatly but is easy to read as is. Better ideas for DOF restrictions

in Quaternions are welcome :)

Next thing you need is to modify the 2D CCD Routine to work in 3D directly with Quaternions.

This is actually almost identical to the November source code with a few modifications. The main

one being the change to a 3D distance error estimation and a change in the DOF restriction method.

This file contains the two routines needed to handle 3D CCD IK. The first handles the DOF restriction

and the second is the CCD algorithm itself. This is the code used in the 3D demo that was shown at the GDC

Source Code and Exe (490KB)

Article in PDF format

General Inverse Kinematic Solver in 2D

Source Code and Exe (178KB)

Article in PDF format

Analytical Inverse Kinematic Solver in 2D

New V1.1 Fixes a bug in the Source see the readme for details

Source Code and Exe (150KB)

Article in PDF format

Set up and edit a Particle System

Article in PDF format
Source Code (70KB)
Application (152KB)
Deform a single mesh object with a skeletal system

Individually weight each vertex to either bone

Also and example of Feedback and Ortho projections for picking vertices.

Article in PDF format
Source and App (192KB)
Builds on the Quaternions in the March issue from a character animation perspective.

March, 18, 1998: The magazine is out so here is the Source and Application for the April article

Also contains examples of Interleaved vertex arrays and Drawlists in OpenGL.

I had an error in my comments for the SLERP code, it is corrected here also.

Article in PDF format
Source & Application (158KB)
Builds on the info on Quaternions in the February issue from a character animation perspective.

Feb, 16, 1998: The magazine is out so here is the Source and Application for the March article

Also contains examples of Interleaved vertex arrays and Drawlists in OpenGL.

Word Doc File (40KB)
Alan Watt was kind enough to send me an Errata to his excellent book

**Advanced Animation and Rendering Techniques**

It contains the arctan() fix that I noted in my April article.

Article in PDF format
Application and Source and sample motion files (480KB)
The January issue is out. Get Version 1.02 Code and Application now with .bva and .asf readers and sample motion files.

This updated version has the code for BVH and AMC file loading.

Also available is additional Acclaim format documentation.

I just found out that all the Acclaim docs with a bit of background is available in the Siggraph 94 Course notes #9

for those of you that have access.