Demo Reel Breakdown
1. Jello Simulation: A Mass-Spring System Jello Mesh. C++, Mel Script. 2013
This project started with a minimal amount of base code in C++ provided by the course CIS563: Physically Based Animation. The framework supplied a simple scene description loader, method stubs, and RK4 integration. From there, I implemented Euler integration, Midpoint integration, collision and penetration detection and response for spheres, cubes, cylinders, and planes, internal spring forces, and support for structural, shear, and bend springs. Furthermore, I wrote from scratch a Mel Script program that enables my physical simulation of the Jello to be imported into Maya for shading, lighting, and animating. My C++ jello simulator runs in near real time for a single Jello mesh and all final renders were done with Maya’s mental ray.
2. Cloth Simulation: A Particle Based Dynamic System Cloth Simulation. C++, Mel Script. 2013
This project also started with a minimal amount of base code in C++ provided by the course CIS563: Physically Based Animation. The framework supplied a simple scene description loader, method stubs, and the cloth structure. From there, I implemented fixed point constraint, stretch constraint, real bend constraint, collision constraint, sphere collision detection, velocity damping, friction and restitution, and Verlet integration based off of the Position Based Dynamics paper by Matthias Mueller. I used a slightly modified version of my Jello Simulation Mel Script program to import my cloth simulation into Maya. My cloth simulation runs in near real time and all final renders were done with Maya’s mental ray. The cloth in my reel seemingly collides with a skull, but in actuality, its interacting with two well-placed spheres in my physical C++ simulation.
3. Ray Tracer: A Recursive Ray Tracer With Blinn-Phong Light Model. C++. 2012
My ray tracer is coded entirely from scratch. I first coded a 3D scene graph that reads from a file and draws in OpenGL. It supports basic primitives such as spheres, cubes, cylinders, chairs, tables, cabinets, and lamps as well as arbitrary meshes such as surface revolutions and extrusions read in through a file. The user can interact with the scene and apply simple transformations. When satisfied, the user can then recursively ray trace the scene. The output image name, resolution, camera position, view direction, up vector, fovy, light position and color, ambient color, and each material’s diffuse color, specular exponent, reflectivity, and transparency can all be specified by the user and read in through a file.
4. Volumetric Renderer: Clouds Rendered With Perlin Noise. C++. 2012
My volumetric renderer was also built entirely from scratch. However, the perlin noise applied to the clouds was supplied by the course CIS560: Computer Graphics. I coded a 100x100x100 voxel grid and I implemented the ray march and density accumulation/lighting attenuation based off of Beer’s Law necessary for the voxel renders. My renderer can then generate volumetric clouds using simplex/perlin noise sampling, which can conform to preloaded primitives such as spheres, quads, pyroclastics, and simple clouds. The user can also specify in a text file each voxel size, voxel grid dimensions, background color, material color, output image name, resolution, camera position, view direction, up vector, fovy, and multiple distinct light positions and colors.
5. Minimaya: Implementation of Catmull-Clark Smoothing Algorithm. C++, QT. 2012
The clip in my demo reel shows only the Catmull-Clark Smoothing Algorithm that I programmed for a group project where we implemented a mini-Maya program. I also implemented the base code for our group which included the construction of the base cube mesh, simple camera movement, basic vertex, face, and edge selection, movement of vertices, adding and deleting vertices and edges, and splitting quad faces.
6. GameCube Controller: 3D Modeling. Maya, Premiere Pro, Mental Ray. 2012
This was actually my first ever 3D modeling project in Maya. I modeled, shaded, lit, rendered, and composited everything in the scene. The texture for the body of the controller is very finely bump mapped with Maya’s perlin noise. The buttons are simple tweaked blinn shaders with bump mapped letters. The “START/PAUSE” engraving was achieved through a displacement mapping. The final render was rendered with Maya’s mental ray with Final Gathering and Global Illumination. I then composited that with an ambient occlusion pass in Premiere Pro.
7. Mario and Luigi: 3D Figure Modeling. Maya, Premiere Pro Mental Ray. 2012
This was my first attempt at modeling humanoid figures in Maya. I modeled, shaded, lit, rendered, and composited everything in the scene. The textures of my Mario and Luigi are not very complex as I tried to embody the simplicity of these iconic nintendo characters.
Loading more stuff…
Hmm…it looks like things are taking a while to load. Try again?