This course introduces technologies and mathematical tools for simulating, modeling, and controlling human/animal/robot movements. Students will be exposed to integrated knowledge and techniques across computer graphics, robotics, machine learning and biomechanics. The topics include human kinematic modeling, numerical integration, multi-body simulation, muscle dynamics, keyframe interpolation, trajectory optimization, reinforcement learning, feedback control for motor skills, motion capture, data-driven motion synthesis, and differentiable physics simulation. Students who successfully complete this course will be able to use and program physics simulator for character animation or robotic applications, to design/train control policies for locomotion or manipulation tasks on virtual agents, and to leverage motion capture data for synthesizing realistic virtual humans. The evaluation of this course is based on five programming projects.
List of topics:
Rigid body simulation
Contact and collision
Articulated rigid bodies
Learning motor skills
Muscles and skins
Differentiable physics simulation
The course grade is based on the following five programming projects:
Project 1: The Twister Game (20%): Implemtn an inverse kinematics solver for a human figure by formulating and solving a multi-objective optimization problem.
Project 2: Rigid Body Sento (16%): Augment a rigid body physics engine with a simple fluid model to simulate (articulated) rigid bodies in a swimming pool.
Project 3: Diving into the Deep End (16%): Create a keyframe animation of platform diving and control a physically simulated character to track the diving motion using PD feedback control.
Project 4: Rise Up! (24%): Formulate and solve a trajectory optimization problem that maximizes the height of a vertical jump on the diving board.
Project 5: Sink or Swim (24%): Learn to use the toolchain for deep reinforcement learning to train the character to swim back to the surface after the dive.