Portfolio Gallery
Welcome to my portfolio gallery! Some of these demos are parts of my projects, and others are animation studies. They cover mass-spring systems, motion capture interpolation methods, simulation with OpenGL, inverse kinematics, and parts of my game applications.
This demo shows novel-view rendering samples from the RenderPeople dataset. Each subject includes horizontally rotated views at different azimuths and inclinations, and all subjects are rendered under the same lighting settings. This novel-view human body dataset is rendered with Blender, and it includes multi-view human body images, camera calibrations, depth maps, and normal maps. If you want to know more about the rendering implementation, check the code here.
This demo is a galaxy roller coaster simulation based on Catmull-Rom splines, with OpenGL lighting and texture mapping. Inspired by the Space Mountain roller coaster, I used a galaxy dome as the sky texture and added texture-mapped wooden crossbars. The Catmull-Rom spline is constructed from a control matrix, with subdivision used to generate points between control points. You can also see clear velocity changes with height: the roller coaster slows down going uphill and speeds up going downhill.
This demo is a fancy jello cube! The jello cube bounces off the walls, and you can drag it with the mouse for convenient interaction. The simulation uses a mass-spring system containing structural, shear, and bend springs along with damping forces; the external force field is applied via trilinear interpolation. With mouse-drag forces applied to selected simulation points, the jello cube bounces off the walls using box collision detection. It also supports inclined-plane detection and rendering.
This motion capture video shows the outputs of three different interpolation techniques. The green skeletons are driven by the original motion capture file, while the red skeletons are driven by new motion capture files generated with different interpolation methods. In this project, I implemented three interpolation techniques: Bezier Euler, linear quaternion, and Bezier quaternion interpolation. The output video shows the comparisons pair by pair.
Inverse kinematics is useful for making animations and also plays an important role in robotics. This demo shows how to implement forward kinematics, inverse kinematics, and skinning with OpenGL. As you can see in the video, each avatar's rendered skeleton has several IK handles, which you can use to move the avatar. I implemented two skinning algorithms and made a comparison between linear blend skinning and dual quaternion skinning. If you want to know more about the implementation, check the code here.
Glass shattering. This animation can be used in many game scenes. For the implementation, I used Blender to design two versions of the glass object: one intact, and one composed of numerous glass fragments. The animation is built with Unity, and each glass fragment has its own kinematic information; when triggered under certain conditions, it falls due to gravity. If you want to check the code, click here.
When you want to open a door, what do you need? Normally, a key or a keypad. This demo shows a keypad application: when you press the keypad buttons, the display screen shows the input numbers. Each key button is covered by a box collider; clicking a button triggers the next step and gives the user feedback. Enter the correct password, and the door opens! If you want to check the code, click here.