Behavioral Animation System for Vehicle-Like Walking Agents - CIS-562 Computer Animation Project / December 2014
Implemented a behavioral animation system for vehicle-like walking agents in C++. Six individual agent behaviors are included: seek, flee, arrival, departure, wander, and obstacle avoidance. There are also five group behaviors: separation, cohesion, alignment, flocking, and follow the leader. The user is able to configure many different parameters of the animation. They have access to the velocity, force, mass, torque, and inertia of the walking agents. They also have access to tunable parameters for all the behavior types, as well as the control vectors.
Fireworks Particle System Simulation - CIS-562 Computer Animation Project / November 2014
Implemented a fireworks particle system simulation in C++. The particles in the simulation include rockets, which fire off into the air in random directions from fixed starting locations, and sparks, which emit from the rockets when they explode after a set time. The user fires off rockets from specific positions by pressing corresponding keyboard keys.
I also implemented a fireworks simulation from scratch in Houdini using split, group, and collect nodes, as well as the geometry, particle operator, and shader operator networks.
BVH Motion Capture Animation Player - CIS-562 Computer Animation Project / November 2014
Implemented a BioVision Hierarchy (BVH) motion capture animation player in C++. Forward kinematics are used to animate the character given its skeleton and the motion capture data. Key frame data can be interpolated using both quaternion and Euler angle representations. Blending is also supported to transition between two sets of motion data using either cubic, SLERP, or SQUAD interpolation. Finally, individual joins of the character can be selected and positioned using the Cyclic Coordinate Descent (CCD) inverse kinematics algorithm.
Curve Editor - CIS-562 Computer Animation Project / September 2014
Implemented a curve editor in C++ that allows a user to place interpolation points that are then used to generate curves. The user can then specify the implementation of the curve. The options are Bezier Bernstein, Bezier de Casteljau, Bezier Matrix, BSpline, and clamped and natural Hermite Splines.