Technical Art Demo Reel
Houdini Motion Smear Tool

Motion Smear HDA tool in Houdini using Vex. It uses the previous two frames as sample points to generate a curve going through the three points. It displaces vertices along said curve using the dot product between normals and the direction of its previous position. Go to my 'Animation' page to see it applied to my personal project "Termination Test"!

Futurism Sculpture Tool - SIGGRAPH Submission
This project builds upon my motion smear tool to produce futuristic sculptures. I wrote a poster for SIGGRAPH 2021 that has been accepted. I wrote a longer paper for SMI 2021 in which I am still waiting for a response.

This work presents the concept of multi-material futurist sculpting. Inspired by works of Italian Futurist artists such as Umberto Boccionni. It uses an animated mesh with color data as an input to produce stylized sculptures free from artifacts like clipping and degenerate polygons. I convert the mesh into a volume of voxels to apply filters like dilation and smoothing to clean the mesh. I use a volume wrangler to apply scripting and used attribute data stored in vertices (based on proximity to voxel positions) to apply stylization. I create ripple effects by applying custom expressions using the motion data and normal data from each vertex.

Exploded Snapshot

Speed-Lines

These are alternate ways of sampling the motion curve to create unique looking sculptures.
Houdini 3D Barrier-Grid Animation Sculpture

Exploring a phenomena of Barrier-Grid animation or "Scanimation", I decided to make a 3D version in Houdini using Booleans, Vex, and VDB for cleaning up the original mesh. I had help with tweaking the model for each frame to make it more abstract. I did everything else.

Phenomena: This illusion, known as "barrier-grid animation" or "picket-fence animation" takes advantage of our minds completing the silhouette when the vertical bars cover most of the image, revealing only the parts that pertain to one frame of animation. This illusion has only been done in 2D images. This simulation/tool serves as a template for a theoretical 3D-printable version of this illusion.

Process: The idea is to only show 1/n of the full sculpture at a time, where n is the number of frames in the animation loop. The vertical bars therefore had to be n-1/n units in width. Perspective had to be accounted for, so I used Vex to draw lines from the eye point and through each side of each bar. Using those lines I generated triangles which were extruded into wedges. Those wedges were used to find the intersection boolean between the sculpture for that frame and the wedge, resulting in the pieces of the mesh that would be seen from that perspective. This process is iterated per frame to generate the final sculpture. 
Other Vex operations were used to generate the vertical planes holding up the otherwise floating mesh pieces which would have ideally been used as the base when printing the object.
Houdini Crowds Simulation of Cats Landing on Their Feet

The cats use keyframed animation as torque drivers for the joints on the active ragdolls (as you can see, some cats use a little too much force when pushing themselves off the ground).  The timings and animations pulled from are randomized but they all land on their feet. Force feedback threshold was used for triggering the state from keyframed animation to active ragdoll state. Cat rig was made in Houdini.

Maya Crystal Lizard Rig
A rig for a Crystal Lizard used in TAMU's Summer Industry Course. It has a universal SDK controller for subtle driven animation on the body crystals. Each cluster also has handles for additional control. Blendshapes were used for breathing and for eyes closing.
Maya MEL Procedural Walk->Trot->Run Animation

The only keyframed animation is the slider that controls the speed of the gaits animation. I interpolated through different variations of sine/cosine based expressions to create this motion. To avoid certain issues resulting in unwanted additional acceleration or negative acceleration, I stored a value as an attribute and incrementally added the output of the expression to the attribute for every frame instead of changing the overall value. The explanation for the unwanted acceleration has to do with how changing the frequency of a sine or cosine wave can shift the current value at the current point in time.

Houdini Procedural Crystal Cluster Tool

A Crystal Cluster Generator HDA made in Houdini. These crystals were used in my team's Summer Industry Course Animation. The crystals were UV unwrapped in Houdini as well. These clusters were generated using a mix of platonic solids, intersection booleans, for loops, point scattering with randomized attributes per point, and so on.

C++/CUDA Realtime Ray Tracer
Ray tracer programmed from scratch using C++ and CUDA. In the example above, a texture was used to offset the direction of the rays, giving a sort of shattered look that I thought was neat.
Houdini/Vex Procedural Lightning Mesh Tool

A Lightning mesh generated procedurally from scratch using Vex. Lines were drawn between points, subdivided, and given noise to displace the points. The secondary rays (tendrils? bolts?) are triggered once random points in space are close enough to the ray. These points change over time resulting in the flicker effect. Dot product was used to keep the secondary tendrils at a max downward angle to keep the overall shape of what we think of for lightning. A wire node was passed through the generated lines to generate the polygon mesh while tapering towards the ends.  Definitely a fun project!

Houdini Dust Simulation

I used Houdini's particle system to generate dust effects. The dust particle shape is very flat to shine and flicker light as it rotates. I used Houdini's POP network tools for controlling the forces and movement of each particle. The final animation was exported to the Maya scene as an fbx cache. The scene depth values and cryptomattes mask data was passed through the render data for applying a depth-of-field effect in Nuke.

UE4 Tile-Based Workflow
A tile-based workflow for building maps in Unreal Engine 4. It features a special material that can blend a different texture on each side of the tile with complete control. This, alongside the uvs being based on absolute world position, allowed for tiles to be seamless.

Unity Pixel Art CG Workflow

A proposal for having CG animated characters with pixel-art style. My team opted for a different style so this workflow was not used. This method used a combination of cel shading and downscaled render textures without anti aliasing. The cel shading allowed us to limit colors without the need to do any color quantization. The idea of using downscaled textures was inspired by the game Dead Cells.

2D Style Expressions on 3D Rig

An idea I had for animating pupil-less eyes with a 2D style in Blender. I rigged a grease pencil object which had masks to hide portions of the filled eye to create expressions. The eyes are rendered separate from the robot head to show the eyes despite these objects overlapping. To prevent the profile view from showing two eyes, a middle masking plane is used to hide the other eye.

Blender3D Buzzsaw Stylized Motion Blur

The before and after comparison of the giant buzzsaw blade animation. The original had a major temporal aliasing issue where the saw blade was rotating, but with its rotational symmetry, it's hard to get a feel of how fast it's moving. My compositing solution was a mix of motion blur and swapping out the poly mesh with a distorted 2D .svg file created in Adobe Illustrator. Using the motion blur on its own didn't match the style of everything else.

Image I made in Adobe Illustrator. Doesn't have the same rotational symmetry issue.

Simple Panda Rig

Rig I made for an animation commission.

Back to Top