Character Rigging

I am now working on an animation project called skyline talking about the sun god Helios who grants his only mortal son one wish at a cost. Inspired by ancient Greek pottery we will use 3D animation with special 2D shader to portray the fathers emotion visually and through narrative.

In this project, I take the role of 3D technical artist in charge of character modeling, texturing and rigging. Moreover, I work with technical director to determine a feasible technical pipeline for the animation. The animation will be published on May.

As technical rigger, I implement the following character rigs points beyond the basics:

  • 1. Counter-twist system for the thighs and shoulders.
  • 2. Preserving volume in the buttocks, knees and elbows.
  • 3. dynamically parenting the legs and arms.
  • 4. Auto Clavicle system which allow the clavicle  to follow the arm controls
  • 5. IK/FK switching for the arm control

The Demo Reel for rigging part will be rendered out soon...

Computer Graphics/OpenGL Programming

Geometry Subdivision and Shader Programming

In this project, I implement a very simple reflection shader. I am given a scene witg a geometry and an enviroment map. This reflection shader will reflcet a ray from the camera off of a point on the object to a point on the envoroment map. Then shader will then sample the enviroment map at that point, in order to determine the reflected light color.

I also implement the Loop subdivision algorithm for this project. It is a two-pass algorithm: the first pass creates all the new points and triangles, and the second refines all the old points that were not created during the first pass. It is an approximating algorithm, which means that the existing vertices are modified during subdivision. Boundary and interior edges are handled differently in order to preserve the features of the boundary.

I also use halfedge data structure and hashmap to increase the subdivision speed and fulfill the 6th iteration of complex model (around 4 million polygons) in under 2 seconds.

Basic OpenGL

1. Object Creation:
1.1 create the pool object by using the .obj data. I tried to use the GLBegin/End and Vertex Array method to create the model. And I am still working on the VBO method and it requires different light model.
1.2 Manully calculate the water surface on the X-Z plane and translate it to the specific position by using gltranslatef/glrotatef/glscalf. Using push and pop matrix to integrate pool and water surface together.

2. Normal Calculation:
2.1 implement the per vertex normal to make sure lighting model works correctly. and material
3.1 use the basic lighting model and material to give the object some realistic look
3.2 I also noticed that the light will change position with camera, I repositioned the light source every source every frame to make it relative static to eye system coodinate system.

4.Computing the heightmap
4.1.base on the water suface x and z coordinates, compute the y coordinate amd draw the animate water surface.


Augmented Reality Demo

Augmented Reality (AR) is a live, direct or indirect,, view of physical, real world environment whose elements are augmented by computer-generated sensory input as sound, video, graphics or GPS data. As a result, the technology functions by enhancing one's current perception of reality.

The reason I am interested in AR technology is that it has a bright future because of many applications and many areas can benefit from the use of AR technology. I am working with AR for industrial areas, especially for training and demonstration. However,  I do believe AR will do well for commercial and entertainment areas. For example of gaming, AR allows gamer to  experience digital game play in a real world environment.

All the functionality were implemented using C# under Unity3d platform. The explosion and flame effect are created with particle system. The metaio SDK was utilized for Augmented Reality development. Metaio SDK requires OpenGL to render the camera image, but Unity defaults to using Direct x on Windows, thus adding the additional parameter in order to build the desktop application,