Rendering of animated characters
This articles is about how an animated character is being rendered with a software rasterizer
Introduction
Animated characters are as important in CGI animation and interactive environments same way as real actors in movies. This is the necessary tool to convey a story or to show a dynamic battle scene. As well as movies, virtual worlds use close detailed shots of a character’s facial expressions, medium shots of a character to capture general movement, or long shots capturing thousands of animated characters. In spite of different settings, all these tasks can be solved by using skeletal animation method first introduced in 1988 by Nadia Magnenat Thalmann, Richard LaperriÃĺre, and Daniel Thalmann.
This article decomposes what animated characters consist of and describes rendering of many animated character with a software rasterizer.
Skeletal Animation
Complex meshes are hard to animate directly without supporting structures and descriptions. Skeletal animation method first introduced in 1988 is the industry standard when it comes to animating characters or mechanical objects in 2D and 3D graphics. The method uses several concepts to abstract from animating complex mesh directly, and provides more intuitive and efficient tools to manipulate and animate a complex mesh.
The method utilizes two main concepts for a character: surface and skeleton (See Figure 2).
Figure 2: Rig and Mesh
Surface is a visual part (mesh, geometry or skin) of a character, while skeleton provides information of higher abstraction and describes hierarchy of bones of a character.
Rigging
The process of creating skeleton and defining the hierarchy of the bones is called rigging. After this an artist can define which parts of the mesh will be controlled by certain bones.
Skinning
In some cases several bones can control same part of a mesh. It usually happens in the areas near joints. For example, neck skin depends on right shoulder, left shoulders, head and chest, with different "weights". The process of defining bones and how strong they influence on certain areas of the character’s geometry is called skinning. On this stage, when an artist has a rigged skinned character, the pose of the character is easily controlled by manipulating the created bones.
Animation
Now an artist is free to capture necessary poses of the character or create series of keyframes to animate it. With this description of the character (complex mesh, skeleton, information about skinning and keyframes), it is possible to render animated characters. The following chapters present more details about storing, interpretation and rendering of animated character
So, to summarize, any animated character should consist of:
- Mesh
- Skinning information
- Rig (bones / joints)
- Keyframes (animation)
This should be enough to render any animated character.
Rendering
Rendering pipeline defines a series of steps the program performs to render a 3D object to a 2D screen. To render animated characters the standard pipeline has to be extended (See Figure 4).
Figure 3: Rendering pipeline.
Figure 4: Extended Rendering pipeline.
Main change of the extended pipeline is in newly introduced forward kinematics shader, which supplies additional transformation matrices to modified vertex shader. Apart from pipeline modification, the asset format is extended to contain animation data. Along with mesh, new asset contains animation data.
The pipeline calls its stages for every instance of the asset. With this approach many characters can be rendered in different locations of the scene and with shifted animation time. In the following sections the asset format description and more details on Vertex and Forward Kinematics shaders are given.