Home | Lehre | Videos | Texte | Vorträge | Software | Person | Impressum, Datenschutzerklärung | Blog
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.