Have you noticed that animations created in Poser and uploaded in Second Life often yield avatars whose feet sink into or float above the ground?

This is because avatars in Poser and Second Life can be thought of as being suspended in the air by their hips. The height at which the hips are suspended is set to be the sum of the foot, shin, and thigh heights, giving the illusion that avatars are standing.

Thus, an animation created to make the default Poser 2 Male Casual figure sit on the ground, will translate the hips down the height of the Poser figure's foot, shin, and thigh heights to make the hips touch the ground plane. Let's call this vertical translation distance in Poser Yp.

When this animation is imported into and run in Second Life, the avatar will move its hips down exactly this fixed distance (Yp) regardless of the height of the avatar. Let's let the actual Second Life avatar have a combined foot, shin, and thigh height of Ys. The distance the avatar's hips will be off of the ground in Second Life is given by Y = Yp - Ys. This error can be significant if the Second Life avatar is much shorter or much taller than the default Poser figure.

Below are several examples of this effect.

Test 1 - Vertical Translation


In Poser a pose is created which moves the avatar down exactly one meter. Frame one has a hip yTrans of -0.789751 cm and frame two has a hip yTrans of -100.0798751 cm. The yTrans value given for frame one is the default value after doing an Edit->Restore->Figure in Poser. After exporting the bvh file, it can be seen in the "MOTION" section that the hips translate in the Y direction -39.48916 in (-100 cm). (Poser uses centimeters and BVH files use inches.)


A 100 cm tall block is placed next to the avatar as a reference. The avatar should sink into the ground exactly the height of this block regardless of the avatar's height. This avatar has a both body height and leg length of 0. As one can see, the avatar sinks 100 cm into the ground as expected.


The same animation is run again with a tall avatar with body height and leg length of 100. Again, regardless of relative height, this avatar also sinks 100 cm into the ground.

The result is that avatars of different heights will appear to hover above or sink into the ground in sitting or laying animations.

Test 2 - Squat

What about the problem with feet floating or sinking?

In this instance the designer of a pose or animation translates the hips up or down while keeping the feet on the ground plane.


In Poser a pose is created which moves the avatar down exactly 50 cm. Frame one has a hip yTrans of -0.789751 cm and frame two has a hip yTrans of -50.0798751 cm. The feet are then moved upward (automatically using inverse kinematics) a height of 50 cm, yielding the squatting pose shown on the right. Note by the relative position of the shadow and feet that in Poser the figure looks like it's standing. The exported BVH file can be downloaded here.


Here it can clearly be seen that the short avatar's feet are sinking into the ground.


Here it can clearly be seen that the tall avatar's feet are hovering over the ground. The distance the feet travel into the ground is more complicated than the example above. In this case it is the sum of the dot products of the foot, shin, and thigh vectors with the y vector. (Don't ask.)

Walking

Note that this problem only shows up if one is modifying the height of the hips (scripted furniture and balls do not count). Provided the hip heights aren't modified, this error will not be seen. In complex moves such as fighting and dancing this problem will be obvious.

It gets worse though. When walking, the feet of an avatar with long legs will appear to move across the ground at a greater forward velocity than one with short legs. This is because the forward velocity of the body (hips) and rate of leg movement are recorded in the animation file. Depending on the height of the avatar with respect to the default Poser figure, the feet can appear to move too slowly, just right, or too quickly over the ground. (An example of this can be seen with a careful eye in the dancing animations on the Thriller page.)

Imagine making an animation of a rolling wheel. If the wheel in SL were very small with respect to the one used in Poser to create the animation the small wheel would appear to skate over the ground, not spinning nearly fast enough for its forward movement.

Solutions

The only way to fix this is to use a Poser model whose bones exactly match your SL avatar or to compensate by exaggerating or reducing translations and rotation rates. Even using Linden Lab's Poser models will not solve the problem. This also means that, due to the customizability of SL avatars, it is impossible to make static animations that are perfect for everyone. One would have to have the ability to create a dynamic animation which changes rates as a function of bone sizes to get it perfect.

The good news is that Poser does provide a way to modify the size of the figure to help with the customization. Under the menu Figure->Figure Height are several different sizes for a given figure that should speed development of animations for avatars of all sizes.