SIGGRAPH 2022 Course
Description: Efficient simulation of contact is of interest for numerous physics-based animation applications. For instance, virtual reality training, video games, rapid digital prototyping, and robotics simulation are all examples of applications that involve contact modeling and simulation. However, despite its extensive use in modern computer graphics, contact simulation remains one of the most challenging problems in physics-based animation.
This course covers fundamental topics on the nature of contact modeling and simulation for computer graphics. Specifically, we provide mathematical details about formulating contact as a complementarity problem in rigid body and soft body animations. We briefly cover several approaches for contact generation using discrete collision detection. Then, we present a range of numerical techniques for solving the associated LCPs and NCPs. The advantages and disadvantages of each technique are further discussed in a practical manner, and best practices for implementation are discussed. Finally, we conclude the course with several advanced topics such as methods for soft body contact problems, barrier functions, and anisotropic friction modeling. Programming examples are provided in our appendix as well as on the course website to accompany the course notes.
Teaching assistant at New York University (Fall 2019)
Description: This course provides an introduction to the field of Computer Graphics. We will cover the basic mathematical concepts, such as 2D and 3D transformations, study the interaction of light with geometry to derive shading models, and implement rendering algorithms such as ray tracing and rasterization. We will investigate how these fundamental components are integrated into current graphics processors and study the corresponding programming APIs.
Outcomes: Be able to explain and apply the fundamental mathematical concepts used in image synthesis algorithms. Implement a basic rendering system based on ray tracing and rendering pipeline based on rasterization. Develop simple graphics programs in C++ using OpenGL and GLSL.
Instructor at iD Tech (Summer 2015)
Description: Design and develop your very own mobile game with the power of the Unity game development tool, one of the most popular tools for independent game developers. The engine is accessible to beginners, but powerful enough for professionals. The next blockbuster indie game has your name on it!
Outcomes: Learn to create games optimized for mobile devices; receive input from players; modify and manipulate game objects; use Scenes in Unity to create levels, menus, and coherent polished projects; and program with C#, utilizing object-oriented programming design methods.


Project volunteer at the Summer Geometry Initiative (Summer 2023)
Description: The Summer Geometry Initiative (SGI) is a summer research program introducing undergraduate and graduate students from around the world to the field of geometry processing. SGI is dedicated to the inclusion of individuals of all backgrounds at all levels of geometry processing research, and strongly encourages women and students from underrepresented and underserved groups to apply. Participants attend hands-on tutorials introducing the theory and practice of geometry processing. Participants then work in teams on research projects led by faculty and research scientists.
Project Abstract: Many geometry processing algorithms require that meshes have “good quality” triangles, e.g., no large obtuse angles or small slivers. However, meshes in practice can have arbitrarily bad geometry. This project explores a simple but elegant trick for guaranteeing that all triangles have good shape, without changing the mesh connectivity or using special data structures. The starting point is to observe that one can implement many standard algorithms using only the edge lengths of a mesh, rather than the vertex positions. Hence, we can simply lengthen all edge lengths simultaneously until all triangles meet a target quality measure. This technique is called “intrinsic mollification,” and was recently introduced by Sharp and Crane [2020].
We introduce a variety of novel intrinsic mollification schemes, including local schemes that operate on each face independently and global schemes that formulate intrinsic mollification as a simple linear (or quadratic) programming problem, and benchmark these approaches on a set of common algorithms in geometry processing.