Those projects were mainly about physically-based modeling for animation and computer graphics. I implemented Particle Systems, Flocking Systems, Flocking, Rigid Body Simulation, and Fluid Simulation. Those projects required implement those scenarios with the knowledge of Calculus, Physics, Linear Algebra, Numerical Methods, and Interactive Graphics. All the programs were written in C++ using OpenGL, GLM, and GLSL to do the graphics and interaction. The projects were guided by Prof. Donald H. House.
* * *
Bouncing Ball: Toy Story
This is a fundamental project for physically based animation class. It contains a box with six sides, but some faces are culled based on view angle. The box is texture-mapped with "Toy Story" wall paper. There is a 3D spherical ball bouncing inside the box. The ball's speed is determined by wind and gravity. There is a triangle under the bottom of the box, and the ball is able to bounce with it as well. To interact with the simulator, users can change the wind speed, ball speed, fraction coefficient, wind coefficient etc. The whole scene is lighted by three point lighting setup.
* * *
Particles System: Fountain
This project extend bouncing ball to a large-scale particle system simulation. The idea is using particles to represent a water fountain. Each particle ball is drawn with billboard technique. I activate the blend functions to blend the alpha channel so that all the particles look more like water. The water fountain has 4 generators. Totally random generator, fountain generator, irrigation generator, and no generator. The water particles can be effected by wind and lights. The water also can be sucked into a vortex.
* * *
Flocking: Finding Nemo
It's time for exploring the deep ocean! The main theme of this project is Finding Nemo. This project simulates the flocking system. There are thousands of fish in the scene. In order to optimize the running speed, I used OpenGL instance to draw a fish once and distribute this fish object to each particle. The group of fish can steer by themselves to avoid spheres. Depending on modes set by users, the fish will circle around the sea, flee away, or school together.
* * *
Springy Structures: Kung Fu Panda
"Everybody was kung-fu fighting! Woo-ha!" Po follows the instructions of the master Shifu and studies so hard so that he can become a real "Dragon Warrior" earlier. Po is made from spring mesh structures. When the program is run, Po will fall off until he hits the "floor", and then he will bounce back and forth. Once Paul settles down, users can turn on the flashing mode, Po will get "Qi" from the universe due to the "Yin" and "Yang".
* * *
Rigid Body: Falling Brick
The rigid body is a cuboid. When the program is run, the cuboid will drop off due to the gravity and will bounce on the floor until it hits the resting position. The rigid body involves point to point, point to face, and face to edge detection. The integration scheme that be used is Runga-Kutta fourth-order.
* * *
Disney Theme clips
This was the final project for the class. I regenerated the Disney opening theme clips, however, the shot was guided by physical principles. The flag on the top of the castle was a spring system. The flag could be blown in wind. The fireworks were particle system, which appeared with random colors and at random positions. The Disney castle was painted in the substance painter. I also choreographed the camera movement so that it matched the original clips.