Human Skeleton System Human Skeleton System Animation Stephanie Cheng Zagreb, June 2017 . ......
date post
28-May-2020Category
Documents
view
5download
0
Embed Size (px)
Transcript of Human Skeleton System Human Skeleton System Animation Stephanie Cheng Zagreb, June 2017 . ......
UNIVERSITY OF ZAGREB
FACULTY OF ELECTRICAL ENGINEERING AND COMPUTING
MASTER THESIS no. 1538
Human Skeleton System Animation Stephanie Cheng
Zagreb, June 2017
SVEUČILIŠTE U ZAGREBU
FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA
DIPLOMSKI RAD br. 1538
Animacija skeletnog modela čovjeka Stephanie Cheng
Zagreb, lipanj 2017
Table of Contents 1. Introduction .......................................................................................................... 1
2. Skeletal animation theory .................................................................................... 2
3. Used tools ............................................................................................................. 5
3.1. OpenGL ..................................................................................................................... 5
3.1.1 Libraries ................................................................................................................... 8
3.2. Assimp ...................................................................................................................... 8
3.2.1. Assimp Data Structure ..................................................................................... 8
3.3. Blender ................................................................................................................... 10
3.4. Library Linmath ...................................................................................................... 11
4. Implementation .................................................................................................. 12
4.1. Classes .................................................................................................................... 12
4.2. Basics of OpenGL .................................................................................................... 14
4.3. Shaders ................................................................................................................... 15
4.4. Importing through Assimp ..................................................................................... 16
4.5. Assigning bones to vertices .................................................................................... 17
4.6. Drawing the skeleton ............................................................................................. 18
4.7. The leaf bone problem ........................................................................................... 21
4.8. Animating and interpolation .................................................................................. 25
4.8.1 Interpolation .................................................................................................. 27
4.9. Adding masks ......................................................................................................... 29
4.10. Blending animations ........................................................................................... 29
4.10.1. Animation Blend ............................................................................................. 30
4.10.2. Transitions ...................................................................................................... 31
5. Application Use ................................................................................................... 33
5.1. Foreword on importing the model ........................................................................ 33
5.2. Application Features .............................................................................................. 33
5.3. Application manual ................................................................................................ 36
6. Conclusion .......................................................................................................... 37
7. BIBLIOGRAPHY .................................................................................................... 38
iv
1
1. Introduction
Skeletal animation is a technique in computer animation in which a character or other
articulated object is represented in two parts: a surface representation used to draw the
character called skin or mesh and a hierarchical set of interconnected bones called the
skeleton or rig used to animate (pose and keyframe) the mesh [1].
Skeletal animation has become the industry standard way for animating organic models such
as characters and nonorganic 3d models.
The technique was introduced in 1988 by Nadia Magnenat Thalmann, Richard Laperrière, and
Daniel Thalmann [ref]. This technique is used in virtually all animation systems where
simplified user interfaces allows animators to control often complex algorithms and a huge
amount of geometry; most notably through inverse kinematics and other "goal-oriented"
techniques. In principle, however, the intention of the technique is never to imitate real
anatomy or physical processes, but only to control the deformation of the mesh data [1].
This project explores building a system that reproduces animations based on a skeleton
system, allows masking and blending of animations, and displaying the skeleton. It has been
built from the ground up using OpenGL to render the scene.
This paper will explain the features and techniques used in our application, the various
libraries, animation theory behind the scenes.
2
2. Skeletal animation theory
Skeletal Animation is a technique in computer animation in which an animated object
represented by a mesh is animated using a hierarchical structure of bones called a Skeleton
or Rig.
Figure 1 A completed Skeleton
Rigging is a process of building the skeleton which will drive the animation for a chosen mesh
or meshes, thus making the mesh able to move (Figure 1). It includes linking the bones in a
hierarchy, setting constraints on the bones' movement, and setting up controls which are
aids for the animator.
The bones are organized in a hierarchical manner, this means the bones have child/parent
relationships, every bone except the root has one parent. When a bone moves it also moves
all its children, but not the parent. This means that when calculating transformations of a
bone, we need to combine the transformations of all the parent bones up to the root [2].
Even though most SDKs and game engines define a skeleton as having bones, that's incorrect.
It has joints. The bones are the implied connections between joints.
3
A bone is usually visualized by its head and tail, the head is in place of the joint it represents,
transforming the bone does not move the head, while the tail represents the next joint this
bone is connected to or if it is a leaf bone it does not represent anything and essentially does
not exist. That’s why most file formats for storing skeletal and animation data do not store
the placement of the tail. However, many rigging programs use this kind of visualization since
it is easy to perceive and control the transformation using the tail.
Skinning is the process of attaching vertices to the bones, an artist does this using a process
called weight painting, where for a select bone the artist assigns weights to the mesh ranging
from 0.0 (no influence) to 1.0 (full influence). A vertex can be influenced by multiple bones
with different weights, the total sum of weights on a vertex should be 1, this is handled by
the modeling program (Figure 2).
Figure 2 Skinning a mesh to the skeleton, the colors indicate weight values, with red being 1 (full influence) and blue being 0 (no influence)
Once the rigging and skinning procedures are complete, the skeleton can be posed to deform
the mesh, bone movement influences assigned vertices multiplied by weight.
The Bind pose of the skeleton is the transform (position, rotation and scale) of the bones in
which no deformation occurs on the mesh. Movement from the bind pose deforms the mesh.
To animate a vertex, we need to transform it with the bone transformation. Each bone has
its local space called bone space, the transformation for each bone is in that space, to
transform the vertex we first move the vertex into bone space, then we transform it with the
transformation obtained by combining the transformations of all the parent of the bone and
the bone itself.
4
The approach we take when building the application is to first calculate the final transform
matrix of a bone and pass it into the shader that will then transform the vertex. The final
transform matrix is applied to the vertex with a weight of influence that bone has on the
vertex.
A keyframe in 3d animation is a location on an animation timeline that stores transformation
information such as scale, rotation and position of that point in time of the animation. It can
also store other information that is animated in time, such as slider values on various
modifiers, but in this project, we are working with bone keyf
Recommended