A 2D story-based puzzle game produced by Team Potato Lab (Aaron Villalpando, Cindy To, Katie Park, Ronald Yam, and yours truly) for UT Austin's Fall 2014 2D Game Development Capstone. Check out the trailer below! Visit our website for more info and to play the game.
Ronald Yam and I created most of the animations for the game. I rigged the character while he animated it. Cindy To created most of the base artwork for animated assets.
To make our character's cloth animate seamlessly, we created a MEL script for Maya that loops nCloth simulations (view on GitHub).
Water drop demo simulated with the plugin (play on Vimeo).
Based on Jerry Tessendorf's ocean simulation course notes from Siggraph 2004. Both the Maya and 3ds Max plugins support generating ambient waves on an open ocean.
At the heart of the process, they use an FFT to sum many individual waves constructed from a statistical model. The 3ds Max version also supports dynamic interaction with collision objects using a convolution kernel over a grid of wave points (Tessendorf's “iWave” method).
The terrain outside the window is completely procedurally generated in 3ds Max (play on Vimeo).
These plugins implement the diamond-square algorithm. It generates terrain of varying roughness, from deserts to mountains.
A Rube Goldberg machine in Houdini using rigid bodies, wires, and FLIP fluids. 100% simulated; no keyframes (except for the motion of the camera). Houdini Apprentice / rendered in Mantra (play on Vimeo).
A simple animation of a cloud creating a heart shape. Uses volumetric cloud simulation in Houdini, with blendshapes (morph targets) driving the heart animation. Houdini Apprentice / rendered in Mantra (play on Vimeo).
This Windows Phone app (view on GitHub) transmits your phone's physical 3D orientation. Make a MoBu object mimic your phone's rotation in realtime!
The matching TCP server and MotionBuilder plugin (view both together on GitHub) run on a local computer to receive the phone's orientation, letting you control objects in MotionBuilder by physically rotating your phone.
The TCP server runs on the same computer as MotionBuilder and simply relays orientation data from the phone to the MotionBuilder plugin. (This made testing easier!)
Implemented in Scala using OpenGL via the Java OpenGL libraries (view on GitHub). Simulates a simple mass-spring cloth system using Verlet integration. It supports cloth collision with a sphere.
Screenshot of the simulation running in realtime (video on Vimeo).
Implemented in C++ using OpenGL shaders (view on GitHub). Uses a “shell” shader method, based off of Catalin Zima's article for the XNA game engine. This implementation uses OpenGL 3.3 Core with GLSL shaders, and it also works well for rolling grass.
Screenshot (video on Vimeo).
A micropolygon renderer written in Scala (view on GitHub).
Sample rendered video using toon shading and shadow mapping (play on Vimeo).
A micropolygon renderer that roughly follows the Reyes algorithm by splitting and dicing primitives into micropolygons before shading. After the splitting step, the rest of the pipeline is parallelized thanks to Scala's parallel collections.
It supports Bézier patches, displacement mapping, lighting with attenuation and shadow maps, toon shading, and more. Most parameters are fully-animatable (although it currently only supports linear interpolation of parameters).
Thanks for visiting! I last updated my homepage on 4 December 2014.