Monday, August 24, 2009

Case Study: Limiting animation distortion

With any 3d model, if you are using a bone only animation, there will be a certain amount of distortion at the joints. This is quite apparent with low poly models. Although there is an acceptable limit, based on how small the part will be on the screen and how much the bone bends, it is good to know how to set up things to limit said distortion. In this example we will look at the fingers on Ethan's hands. In the left example, you can see that when the fingers bend, they begin to thin, while on the right, a technique was used to make the fingers stay close to their original thickness. Lets look at that now.

Here we have the original bone setup: bone joints in the center of the vertexes that bend.
As you can see below, one method of removing part of the distortion was to add another layer of vertexes, and make sure the part of the finger stays the same size. This works to an extent, but with a way that I found, I create a better look with less vertexes.

Below, you can see the new bone set up, and the vertexes are assigned to the new bones. The bones originate from the center of the joint, and extend to the top of the joint. A constraint is added to make the bones rotate 50% of the old bones, and then the length of the bone (local-y) is scaled as the bone rotates to compensate for the distortion caused by the rotated vertexes. At this point, I am not sure of the ability to export local bone scaling, however if the current format doesn't allow it, I can always create my own. Right before export, the bones that don't have any vertexes assigned to them are removed, to make sure they do not affect the speed of the model.

No comments:

Post a Comment