This **3D Computer Animation** course teaches the computational methods for real-time animation and deformation of 3D shapes used in *video games, special effects, and animated films*, or more generally in **animated and interactive virtual worlds**. The course details **geometric-based animation** approaches such as procedural animation, manual 3D deformers, and character animation, as well as **physically-based simulation** for particle systems, cloth and fluid simulation.

The class has a strong focus toward programming application. Enrolled students will therefore not only be able to understand these approach, but also to fully implement them in C++/OpenGL in an interactive context.

The **applications** illustrated throughout the class will be mostly related to the field of entertainment (animated films, video games, virtual and/or augmented reality), or real-time simulation for modeling physical phenomena. The underlying mechanisms can further be applied in other scientific disciplines (medical sciences, biology, etc.).

*Examples of cases treated in the lectures and practical exercises*: Implementing animation and interactive deformation of an articulated character, Modeling the deformation of a garment and managing collisions in real time, Simulating the surface of a moving fluid, Managing crowds of characters moving coherently, etc.

**Geometric Animation**- Kinematics: Procedural, Keyframing
- Geometric deformations
- Articulated characters, Skinning
- Production Pipeline (cinema, VFX)

**Physically-based Simulation**- Simulation models (particles, rigid, continum)
- Elastic deformation, Clothes
- Fluids (grids and particles)

1.a Introduction

1.b Procedural Animation

2.a Interpolation Position

2.b Affine Transforms

Reminder on relation between affine transformation and their parameterization as 4x4 matrices. Focuss on affine transform inversion.

Reminder on rotation parameterizaion using matrices, euler angle, axis angle, and quaternion.

Interpolation between rotation and affine transform using polar decomposition.

2.c Volume Deformation (I)

3.a Volume Deformation (II)

3.b Surface Deformation

4.a Character Animation

Skin deformation using Skinning. Presentation of Rigid skinning, Linear Blend Skinning, and improvement using Dual Quaternion Skinning.

Encoding and animating a skeletal structure using Forward Kinematics and Inverse Kinematics.

Motion synthesis and design: Motion Graphs, Controlers, Learning-based approaches, User control.

Crowd animation using Boids models.

4.b Animation Pipeline

5.a Simulation Models

Presentation of the fundamental models of physically-based simulation. Particle based models; Rigid bodies: angular velocity, inertia, dynamics of forces and torques; Continuum material: Notion of stress and strain; Lagrange representation and fundamental equation of dynamics, Euler representation and derivation of Navier-Stokes equation.

5.b Rigid Spheres

6.a Elastic Models

6.b Fluids (I)

7 Fluids (II)

The pracical session are done in C++ and OpenGL using a dedicated library to facilitate the scene display.

The first step is to make sure that you can compile and execute some code using the first tutorial. Then all the exercises will follow the same principle.

Compilation tutorial

Steps to follow to compile the code used in the various exercises. These steps will need to be reproduced for each exercise.

1.a Introduction

Introduction to the use of the code to handle basic shape primitives and transformations.

1.b Procedural motion

Exercise on simple procedural motion applied to particles displayed as spheres and billboards.

2.a Blend Shapes

Facial deformation using blend shape interpolation.

2.b Interactive procedural deformers

Facial deformation using blend shape interpolation.

3.a FFD

Implementation of a Free Form Deformation for interactive volume deformation.

3.b Laplacian and ARAP deformation

Implementing Laplacian deformation with hard and soft positional constraints on a surface using Eigen. Extention to As-Rigid-As-Possible deformation.

4 Skinning

Implementing a Linear Blend Skinning, followed by Dual Quaternion Skinning.

5 Collising Spheres Simulation

Implementing a box filled with colliding spheres using numerical integration. Handle collision betwenn spheres and the box as well as between spheres.

6.a Cloth Simulation

Cloth simulation using mass springs: generate spring topology and compute spring forces, handle collisions with surrounding elements.

6.b Stable Fluids

Implementing a stable fluids simulation on a grid: Compute diffusion and divergence free constraint in solving a Poisson equation using Gauss Seidel method.

7 Smoothed Particle Hydrodynamics

Implementing a SPH fluid simulation: Compute the density, pressure force and viscosity.