# Bones

• Idea: Deform a complex object using a simple skeleton, similar to a skin that is deformed by bones (hence: "skinning"). This is the standard method to animate limbs such as arms and legs.
• The bones of the skleleton are pseudo-objects. They are not visible in the final rendering, but rather control the deformation of the skin (which is visible). The bones are animated, the skin follows.
• Each bone knows its rest position and orientation and its current position and orientation. The deformation of the skin depends on how and how far the bone is moved from its rest position and orientation.
• The skin must not tear open at joints. Thus, there has to be an elastic connection between bones and skin ("soft skinning"). Around a joint, all neighboring bones have to influence the skin. But how strongly?
• Solution 1: Compute the influence of a bone onto a given vertex using the distance of both. This, however, leads to effects such as the index finger deforming the skin of the middle finger.
• Solution 2 (the standard way): With every vertex store the data which bones influence that vertex by which percentage. Typical 3D software offers painting tools to define this.
• Computation: For each bone we can compute a 4x4 matrix which transforms the bone from its rest position and orientation ot its current position and orientation. To deform a vertex of the skin, determine the new positions of that vertex using every such matrix of the bones that influence this vertex. Form the weighted average of the results, using the given influence percentages as weights.
• A similar feature of graphics cards is "Matrix Palette Skinning". The collection of matrices is the matrix palette. Per vertex, one may for instance select four entries of this palette plus corresponding percentages.

# Inverse Kinematics

Consider the hierarchical structure of skeletons: The lower arm inherits translation/rotation/scaling from the upper arm, the hand inherits from the lower arm and so on (simply products of matrices!). A basic way of animation is to set the rotation for the upper arm, then for the lower arm, then for the hand ("Forward Kinematics", FK). It is hard to reach a given target such as a coffee cup using FK. "Inverse Kinematics", IK, is a standard way to solve this problem. Here the software simulates how a chain of limbs would behave if one drags the final element. Typically, one can set limits for angles.

# Morphing

In order to animate a face, one typically stores several versions ("morph targets", "blend shapes") of its geometry and blends them in different percentages, storing only these percentage values as animation. Typical morph targets are "visemes" (mouth shapes for particular sounds; compare "phonemes") plus facial expressions such as similing, frowning, etc. Advantages: much less memory comsumption than recording all vertices; much easier to handle. Typcially, all morph targets have to have the same mesh structure, differing only in the positions of the vertices. To blend several shapes, form a weighted average vertex by vertex. The weights control the balance of the shapes. Negative weights and weights in excess of 100 % are interesting, though most 3D software doesn't offer them.