Variational Stokes: A Unified Pressure-Viscosity Solver for Accurate Viscous Liquids

This year I co-authored a SIGGRAPH paper with Christopher Batty and Robert Bridson on improving the accuracy of viscous liquid simulations. We also implemented our method as a Houdini plugin. See our Project page for more details. Paper: [PDF] SIGGRPAH2017 Trailer: [YouTube], Video: [MP4], [YouTube] Supplemental Notes: [PDF] Supplemental Video: [MP4] Source: [C++ Plugin for Houdini] »

Surface Tension Liquids

Liquid simulation has been an interest of mine for some time now. Water, maybe the most ubiquitous liquid familiar to us, exhibits many fascinating visual properties. This makes water simulation a very hot topic in the visual effects industry. In the history of liquid simulation, there hasn't been one single efficient, clear cut method for simulating water in all its capacity. Each method has its advantages and disadvantages. In the visual effects industry, prominent methods for liquid simulation are grid-based (e.g. Houdini, Blender). These methods tend to have poor support for stable surface forces, because they typically lack an »

Notes on Transient Imaging

In fall 2014, I took a seminar course in computer graphics, where we reviewed an emerging technology of capturing the propagation of light pulses. This work was sparked in recent years by the work of Velten, Raskar and Bawendi from MIT in their 2011 paper titled "Picosecond camera for time-of-flight imaging". In response to this work, a team at the University of British Columbia (UBC) developed a much cheaper alternative (with certain limitations) to the hardware setup originally proposed by Velten et al. In their 2013 SIGGRAPH paper titled "Low-budget Transient Imaging using Photonic Mixer Devices", Heide et al. developed »

Weighted Lloyd's Method for Voronoi Tesselation

This summer, I developed an algorithm to tesselate an image with Voronoi regions. I used a weighed Lloyd's method to distribute the Voronoi regions evenly throughout the image. You can now see the method on an example image animated on my homepage as well as on a dedicated static page. The implementation is done entirely in JavaScript using the three.js library as well as dat.gui for exposing different parameters controlling the generated image. After seeing a series of lectures given by Craig Kaplan on computational stippling methods, in particular on Weighed Voronoi Stippling, I gained an interest in »

SPH for Weakly Compressible Fluids

In winter 2014, I took a course on physically-based simulation, and had the opportunity to work on a fluid simulator project. I finally found some time to organize my work and upload it to GitHub. The project outlines two notable methods in fluid simulation using Smoothed Particle Hydrodynamics (SPH): "Particle-Based Fluid Simulation for Interactive Applications" by M. Muller, D. Charypar and M. Gross "Weakly Compressible SPH for Free Surface Flows" by M. Becker, M. Teschner A partial implementation of the Implicit Incompressible SPH method developed by M. Ihmsen et al. can also be found in the codebase. I'm not planning »

Implicit Surface Method for Shape Reconstruction

A few months ago I wrote an implementation of an implicit surface method for shape reconstruction developed, in part, by H. Zhao, S. Osher, B. Merriman, and M. Kang, in their paper (2000) titled "Implicit and Non-parametric Shape Reconstruction from Unorganized Data". This paper describes a level-set method for reconstructing a surface given a collection of points, curves and surface patches. My implementation deals with points alone and it is written entirely for MATLAB. You can download my code and examples of generated images here. This download package also includes a brief 11 page writeup, explaining the details of the »

Slides for Papers on Motion Tracking and Surface Reconstruction

CS 870 is a course at the University of Waterloo that briefly covers numerical PDE solutions, especially to the level set PDE developed by Stanley Osher and James A. Sethian in a paper called "Fronts propagating with curvature-dependent speed" from 1988. I presented two papers for this class (with links to slides): Implicit Shape Reconstruction Using a Level Set Method (2000) This paper presents a level-set based method to tightly wrap a 3D surface around a set of data points. Level Set Approach for Motion Detection and Tracking (1998) Here, the authors extend the geodesic active contour model, which segments »

Notes on Numerical Analysis

I decided to typeset the course notes for the Numerical Analysis course (AM740/CM770/CS770) at the University of Waterloo for fall 2013 taught by Hans De Sterck. Use them at your own risk, since they may contain errors: »