|
Skinned Avatars |
|
A traditional AW avatar is a hierarchical model of "clumps". Each clump is a rigid body representing some portion of the avatar's anatomy, such as an arm, leg, or head. Clumps are connected to each other by "joints". When an avatar animates, the clumps are rotated relative to each other around the joints. Taken together, all of the rotations around all of the joints simulate human-like motion. Unfortuantely, since each clump consists of a rigid set of polygons, the avatar's surface breaks at the joints between clumps when they move, creating a very unrealistic effect. Skinned avatars solve this problem by taking a slightly different approach. The avatar still consists of a hierarchical set of rigid "bones" that are connected by rotating joints. Thus, animation data that works with traditional AW avatars would also work with skinned avatars. However, skinned avatars are different because the polygons representing the surface, or skin, of the avatar exist as a single polygonal mesh, rather than as separate discrete clumps. Each vertex in this mesh is associated with one bone, and it moves rigidly with that bone. The trick is, some polygons have vertices on more than one bone, so when those two bones move relatively to each other, that polygon literally stretches between them, keeping the surface of the avatar intact and preventing any cracks from forming. This is the essence of "skinned avatars" and is why they look so much better than traditional rigid-body avatars. RenderWare (the 3D rendering engine used by Active Worlds) already has support for skinned avatars, so this would not be a terribly difficult feature to add. The one real challenge is providing an easy way for users to *create* skinned avatars. For RWX files, some sort of extension would have to be added to support the concept of associating different vertices in a continuous polygonal surface with the different clumps representing each bone.
|