3D Mesh Processing and Character Animation focusses specifically on topics that are important in three-dimensional modelling, surface design and real-time character animation. It provides an in-depth coverage of data structures and popular methods used in geometry processing, keyframe and inverse kinematics animations and shader based processing of mesh objects. It also introduces two powerful and versatile libraries, OpenMesh and Assimp, and demonstrates their usefulness through implementations of a wide range of algorithms in mesh processing and character animation respectively. This Textbook is written for students at an advanced undergraduate or postgraduate level who are interested in the study and development of graphics algorithms for three-dimensional mesh modeling and analysis, and animations of rigged character models.
The key topics covered in the book are mesh data structures for processing adjacency queries, simplification and subdivision algorithms, mesh parameterization methods, 3D mesh morphing, skeletal animation, motion capture data, scene graphs, quaternions, inverse kinematics algorithms, OpenGL-4 tessellation and geometry shaders, geometry processing and terrain rendering.
Author(s): Ramakrishnan Mukundan
Edition: 1
Publisher: Springer
Year: 2022
Language: English
Pages: 213
Tags: Computer Graphics; 3D Mesh Processing; Character Animation; OpenGL; OpenMesh; Assimp
Preface
Contents
1 Introduction
1.1 Contents Overview
1.2 Prerequisite Knowledge
1.3 Software Libraries
1.4 Supplementary Material
References and Further Reading
2 Mesh Processing Basics
2.1 Mesh Representation
2.2 Mesh File Formats
2.3 Polygonal Manifolds
2.4 OpenMesh
2.5 Mesh Data Structures
2.5.1 Face-Based Data Structure
2.5.2 Winged-Edge Data Structure
2.5.3 Half-Edge Data Structure
2.6 Mesh Traversal
2.6.1 Iterators
2.6.2 Adjacency Queries
2.6.3 Circulators
2.7 Surface Normal Computation
2.8 Bounding Box Computation
2.9 Triangle Adjacency Primitive
2.10 Chapter Resources
References and Further Reading
3 Mesh Processing Algorithms
3.1 Mesh Simplification
3.1.1 Error Metrics
3.1.2 Vertex Decimation
3.1.3 Edge Collapse Operation
3.1.4 Mesh Simplification Using OpenMesh
3.2 Mesh Subdivision
3.2.1 Subdivision Curves: Interpolation Versus Approximation
3.2.2 Subdivision of Polygonal Elements
3.2.3 Butterfly Algorithm
3.2.4 Charles-Loop Subdivision Algorithm
3.2.5 Root-3 Subdivision
3.2.6 Catmull–Clark Subdivision
3.3 Mesh Parameterization
3.3.1 Barycentric Coordinates
3.3.2 Barycentric Embedding
3.3.3 Spherical Embedding
3.4 3D Morphing
3.4.1 Shortest Distance and Projection
3.4.2 Point Correspondence
3.4.3 Projective Mapping
3.4.4 Barycentric Mapping
3.5 Chapter Resources
References and Further Reading
4 The Geometry Shader
4.1 General Properties
4.2 Backface Culling
4.3 Surface of Revolution
4.4 Billboards
4.5 Modelling Trees
4.5.1 Leaves
4.5.2 Stem
4.6 Non-photorealistic Rendering
4.7 Chapter Resources
References and Further Reading
5 Mesh Tessellation
5.1 OpenGL-4 Tessellation Stages
5.1.1 Patches
5.1.2 Tessellation Control Shader
5.1.3 Dynamic Level of Detail
5.1.4 Tessellation Evaluation Shader
5.1.5 Blending Functions
5.1.6 Lighting Calculations
5.2 Terrain Rendering
5.2.1 A Patch-Based Terrain Model
5.2.2 Micro-level Cracking
5.2.3 Vertex Normal Computation
5.3 Procedural Heightmap Generation
5.3.1 Sum of Sinusoids
5.3.2 Perlin Noise
5.3.3 Diamond-Square Algorithm
5.4 Bezier Surface Patches
5.4.1 The Teapot
5.4.2 The Gumbo
5.4.3 Mesh Explosion
5.5 Chapter Resources
References and Further Reading
6 Quaternions
6.1 Generalized Rotations
6.1.1 Euler Angle Rotation
6.1.2 Angle-Axis Rotation
6.2 Overview of Quaternions
6.2.1 Quaternion Algebra
6.2.2 Quaternion Transformation
6.2.3 Quaternion Rotation
6.3 Rotation Interpolatio
6.3.1 Linear Interpolation of Rotations
6.3.2 Quaternion Spherical Linear Interpolation (SLERP)
6.4 Quaternion Derivative
6.5 GLM Quaternion Class
6.6 Assimp Quaternion Class
6.7 Chapter Resources
References and Further Reading
7 Character Animation
7.1 Scene Graphs
7.1.1 Model Transformations
7.1.2 A 2D Skeletal Structure
7.2 Assimp
7.3 Motion Capture Data
7.4 Skeleton Animation
7.4.1 Updating Node Matrices
7.4.2 Updating the Display
7.4.3 Quaternion—Euler Angle Conversion
7.5 Bones
7.5.1 Offset Matrix
7.5.2 Vertex Transformation
7.5.3 Keyframe Interpolation
7.6 Vertex Blending
7.7 Animation Retargeting
7.8 Chapter Resources
References and Further Reading
8 Kinematics
8.1 Forward Kinematics
8.2 Inverse Kinematics
8.2.1 Cyclic Coordinate Descent
8.2.2 Skeleton IK
8.2.3 FABRIK Algorithm
8.3 Chapter Resources
References and Further Reading
Index