Tony Chai  
 
   
     
 
 

 

Android Application Development

[Java]

With smartphones constantly on the rise, I thought it'd be useful to pick up mobile app development. Along with my colleague Kevin Chang, we create apps catered to specific niche markets, focused on useful and intuitive design.

Website: Top Tier Studios

 

 

Rigid Body Simulation

[C++ OpenGL]

Simulated an impulse-based rigid body system, including broadphase and narrowphase collision detection, collision resolution, contact resolution, gravity, and friction. Player can shoot balls in various levels containing spheres/cubes.

Narrowphase collision detection follows SIGGRAPH 2003 paper "Nonconvex Rigid Bodies with Stacking."

Broadphase collision detection follows sweep-and-prune method.

 

 

BVH Player with FK/IK

[C++ OpenGL]

Implemented a BVH motion-capture file importer with forward kinematics, inverse kinematics, and keyframe interpolation.

User can stop the animation at any time and move joints around using keyboard and mouse commands. Inverse kinematics used Cyclic Coordinate Descent approach. Heavily used quaternions/matrix/euler angle conversions for calculations of FK/IK.

 

 

Particle Systems

[C++ OpenGL]

Implemented a physically-based particle system with rockets/sparks to simulate fireworks. When rockets reach the maximum height, sparks explode out from the rocket and bounce off the ground. Wind can also be set by the user to affect the rockets accordingly.

State vectors (position/orientation/velocity/force) were calculated using Euler integration.

 

 

Curve Editor

[C++]

Curve Editor for Bezier Curves, Hermite Curves, and B-Splines. Blue points show interpolated points and yellow points can be toggled to show the control points. User is able to move around control points and see how it affects the interpolated points accordingly.