Just an image of me, from a couple years back.


I'm a first year Master's student at the University of Toronto. I study computer graphics, animation, and geometry processing under the co-supervision of professors Alec Jacobson and Eitan Grinspun. I'm interested in modelling beautiful patterns and phenomena we see in nature such as lightning and crystal growth and using them to create rich digital worlds.


We speed up rigid body simulations, with no visible artefacts, by grouping similarly moving bodies into collections, and relaxing the contact solver within these collections.

Projects and Interests

Dendritic Growth Phenomena and the Stefan Problem
One of the most fascinating patterns found in the winter are caused by some form of dendritic growth. Frost patterns on a windshield, snowflakes, icicles, they almost make winter seem worth it! These dendritic patterns have been extensively studied by many different communities : physicists, metallurgists, geologists, aero-space engineers, geometers... the list is endless. Modelling them is important in graphics precisely because they are important to all the aforementioned fields. Being able to simulate these phenomena visually would be valuable for measuring out understanding of them, visuallizing new theories, and educating eager students. Also, they're just pretty and we want to put them in movies, like when dementors are approaching.

In graphics, these melting/freezing/growth effects are usually simulated using an Eulerian method, either phase field or MPM or a combination of both. This means that we put a grid on our domain, and calculate physical quantities on the cells of that grid (like how much energy that cell currently stores). We can then label these cells as liquid or solids with a careful set of criteria (if a cell has low thermal energy, it is labelled as a solid etc.) While this solution is very attractive for a wide range of simulations we might be interested in, in graphics, because it requires computing the physics on a grid, it can be detrimental to applications where the representation of the geometry is important. For example, if one had a mesh and wanted to see how that mesh melts or freezes, transferring information from the mesh to the grid and back again at the end of each timestep incurs a loss and is inconvenient. Thankfully, the Stefan problem can help treat this specific case. The Stefan problem describes the motion of an interface between a solid and a liquid as temperature is applied/removed from the system. It can be described by three simple equations:
\[\Delta T(\textbf{x}) = 0, \quad \textbf{x} \in \Omega \] \[ V_n(\textbf{x}) = \nabla T(\textbf{x}), \quad \textbf{x} \in \Gamma \] \[T(\textbf{x}) = T_m, \quad \textbf{x} \in \Gamma \]
Where the first equation is the steady state heat equation and describes the temperature across both solid in liquid domains, the second equation describes the normal velocity for points on the interface, and the third equation is a boundary condition on the temperature of the interface, mainly stating that that temperature is equal to the melting temperature. Adapting this with FEM to work on triangle meshes gives:

Some of this work was presented at GRAPHQUON 2020, and I am still working on related projects. Please feel free to e-mail me if you want to discuss any work related to this topic!

Deep Learning and Inverse Graphics for Geometry Reconstruction
This work was done for my undergraduate honour's thesis which was co-supervised by professors Brett H. Meyer and Derek Nowrouzezahrai. This was a difficult two semesters, being my final year at McGill University, while juggling another project I was working on with professor Paul Kry and his post-doctoral researcher Eulalie Coevoet. Also, COVID-19! The ambitious goal of this work was to see how much of an image's geometry we could reconstruct with only a single image, intially this included having multiple objects in the scene, reconstructing both their geometry and their pose. This proved to be too ambitious, and most my time was spent reading and implementing a much smaller problem. The smaller problem I ended up investigating was about using an inverse rendering pipeline for simple pose optimization. Essentially, the idea is to figure out the pose (position + orientation) of an object given a single input image of that object alone. By using a differentiable renderer, you can ask, "how should I move my object so that the next image looks more like the target image?". Here we see a table on the right slowly being moved/rotated so that it matches the image on the left.

You can read my honor's thesis here.


I got into this field because I love visual storytelling. Out of high school, however my parents didn't let me take film studies as a major in college, and so I ended up studying electrical engineering at McGill University for my undergrad. It was okay, and after sitting in on some film studies courses and trying my hand at actually directing a group of actors, I'm glad I was talked out of committing to it. But electrical engineering itself wasn't satisfying for me, and so I stayed an extra year to explore different more CS related topics. After taking a graphics course taught by prof. Paul Kry, and a rendering course taught by Derek Nowrouzezahrai, I was hooked. Now I count myself lucky to be in a field that combines my affinity for math and logic with creative artistic endeavors.