Join Our Research Group!

I am always looking for talented students and postdocs to join our lab, the Computational Motion Group, here in the School of Computer Science at the University of Waterloo. Consider applying, and help contribute to exciting, high-impact research advances in computer graphics and scientific computing!

In addition to working with my students to publish high quality research in leading conferences and journals, I aim to help them find success beyond their degrees: students that I have mentored have, for example, done internships or taken full-time positions at: Side Effects Software, Weta Digital, Snapchat, Waymo, Google, Ubisoft, PointWise, Ziva Dynamics, Facebook Reality Labs, and Vital Mechanics, among others. Graduating students have also carried on to pursue Master's, PhD, or postdoctoral studies at other top academic institutions in Canada and abroad.

(Potential) Graduate students: If you have strong mathematical and programming skills, and are interested in simulating physical processes in the world around us, I encourage you to apply to the University of Waterloo Computer Science program as a Master's (MMath thesis) or PhD student. In your application, be sure to specify computer graphics and/or scientific computing among your research interests, and list me as a potential supervisor. The application process is competitive, and preference will be given to individuals with strong academic records, research experience, or industry/personal experience relevant to our group's areas of interest. Information about the School of Computer Science, its graduate program(s), and the admissions process can be found here. All accepted students receive RA and TA funding, and the CS website gives information about typical funding amounts, tuition and typical cost of living in Waterloo, and potential additional funding sources.

Undergraduates: If you are a current undergraduate student at Waterloo with a strong academic record and interest in physics-based animation, there may be paid research opportunities in the lab (e.g., a part-time Undergrad Research Assistantship (URA) or one-term full-time NSERC USRA or CS URF). Send me an email describing your research interests and relevant background knowledge/skills, and we can go from there. If you want to do a URA, I typically recommend that you contact me 2-3 weeks before the start of the term in which you would like to do a URA, because that's when I begin making decisions for the coming term. If you are an undergraduate at another university, I unfortunately cannot offer internships and usually will not respond to email requests on this subject.

(Potential) Postdocs: If you have a record of research excellence in computer graphics (e.g., publications in SIGGRAPH (Asia), ACM TOG, Eurographics, TVCG, SCA, SGP, etc.) or a related relevant field (e.g., computational physics, computational mechanics, applied math, etc.), feel free to get in touch by email, and we can discuss any possible opportunities.

By the way, whether you are considering joining my lab or not, there are some useful things to consider in the article How to Pick a Graduate Advisor.

Disclaimer: In general, if you contact me by email but give little or no indication that you are aware of or share my research field/interests, I'm afraid I will not respond.


2017: Michael, Jade, Ryan, Christopher, JC, Yu (missing: Yipeng).

2018: Christopher, JC, Nathan, Ryan, Jonathan, Michael, Yu (missing: Jade).

2019: Yu, Christopher, JC, Nathan, Jonathan (missing: Ryan, Sina, Michael.)

FAQ (to be expanded over time, maybe)

Q: What kind of projects do group members work on?
A: I'm interested in basically anything to do with physics-based animation, computational physics, and various aspects of geometry processing often related to (re-)meshing. A great deal of our work to date is related to fluids in some fashion: viscous liquids, surface tension, granular materials, non-Newtonian fluids, geometric representations of deforming surfaces (meshes, level sets, particles), fluid interaction with deformable objects, hair, cloth, or rigid bodies, spatially adaptive methods (quad/octrees, triangle/tetrahedral meshes), etc. The best way to get a sense is to watch the animations and read the papers on my home page. You can also contact me to find out about our ongoing projects. However, I'm always happy to entertain new ideas and directions!

Q: What kind of technical background is required to work with you?
A: Generally the kinds of skills that are most relevant are those from computer science, applied math, and/or engineering, so things like (partial) differential equations, linear algebra, calculus, algorithm design, geometry, numerical methods, optimization, basic physics, strong coding ability (often C/C++ and Matlab/Python, etc.), basic graphics programming (e.g. OpenGL). This discussion from Greg Turk gives a good sense for some fundamental skills that are useful for graphics in general. You certainly need not have all these skills at the start, since you will learn many of them during your degree, but all of them can eventually be useful. A great way to get started specifically in physical simulation is to read Bargteil and Shinar's An Introduction to Physics-Based Animation" and the associated video, and to watch David Levin's Physics-Based Animation YouTube course.

Q: Must I have done a Computer Science undergraduate or Master's degree to study with you?
A: Not necessarily! Past graduate students have had undergraduate degrees in CS, pure math, applied math, physics, engineering, etc. Computer graphics and numerical simulation tend to be somewhat interdisciplinary in nature, and your particular background may be uniquely valuable. However, programming and mathematical skills are absolutely necessary. (If your previous training is not in CS, you might be required to take one or more "remedial" CS courses to demonstrate and/or strengthen those skills.)

Q: Do you do research on visualization or rendering?
A: Most often, no. My main work is focused on generating the underlying geometry and motion via physical simulation. Many other graphics researchers (e.g. Waterloo's own Gladimir Baranoski and Toshiya Hachisuka) study aspects of rendering, the process of taking a scene description and generating a realistic image of that scene. For the most part I use either simple special-purpose OpenGL visualizations for debugging, or 3rd party rendering software for the final videos, such as Houdini, Renderman, Mitsuba, etc. This allows us to focus on physics/animation.

Q: If I want to pursue graduate studies, should I go straight into graduate school after my Bachelor's or work in industry for a while first?
A: There are pros and cons to each. Gaining practical industry experience is a valuable way to sharpen some of your skills and possibly learn more about different potential research areas that might interest you. Industry is often also more financially lucrative than grad school, at least in the short-term. On the other hand, if you are out of the academic sphere for a significant period of time (let's say, >3-4 years) it can sometimes be tougher, though certainly not impossible, to return to a student lifestyle for a variety of (personal, financial, geographic, etc.) reasons. There are often also co-op/internship opportunities available during grad school, so one can still gain industry experience as a grad student. While many students thrive in an academic research environment, others find working in industry to be equally or more rewarding, so I usually recommend finding ways to explore both paths if you can. In the end, there's no wrong answers and it will depend on your interests, personality, and particular circumstances!