Computer Animation

 

 Computer Animation

These five programming projects demonstrate the principles behind modern kinematic and physics-based animation techniques. It includes keyframe animation, differential equations, particle dynamics, 3D orientation, rigid body simulation, collision and contact, character animation, inverse kinematics, motion capture, motion control, and reinforcement learning.

Tools: Python, Runs on Google Colab (Interactive Environment)

P1: Keyframe Animation

This programming project demonstrates three different types of interpolation - Bezier Curves, B-spline, and Catmull-Rom spline. These splines describe various aspects of animation, including motions or geometry.

Bezier Curves (red), B-Splines (green), and Catmull-Rom Splines (blue) plotted all together.

 

P2: Integrators & Free Fall Simulation (Differential equations)

This programming project implements the analytical solution and four numerical integration methods: Explicit Euler and Midpoint. It shows three objects (of different colors representing the different methods) side-by-side, falling from the same height at the same time with zero initial velocity.

  1. Galileo’s experiment free-fall system: I wrote the code defining the "system" of each free-falling object and implemented integrators that work for dynamic systems in general. I implemented the Explicit Euler method and Midpoint method.

  2. Visualize trajectories and we get and compare methods. (Animation of free falling objects.

 
 

Plot of heights over time

 
 

P3: Tinker toys (Constrained dynamics)

This programming project simulates two beads under gravity where one bead stays on a circular wire and the second bead is connected to the first one by a fixed-length rod. It implements one constraint that keeps a bead on the circle and another that keeps two beads a fixed distance apart. This program simulates the motion of the beads under gravity and draws the beads as they move.

animation

plotting

 

P4: Rigidbody (Constrained rigid body dynamics)

This programming project implements a rigid body simulator which is able to compute rigid body motions and handle collisions. To demonstrate my simulator, I simulated the process of dropping several spheres and cubes onto a fixed plane under gravity.

 

P5: Twister (Motion capture and inverse kinematics)

This programming project builds a virtual Twister game by developing an Inverse Kinematics solver.