Adjunct professor in the
SCL labs, UBC
Ph.D. Stanford '03, MMATH Waterloo '99, BMATH Waterloo '98
email rbridson @ cs.ubc.ca
office ICICS/CS X663
mail Dept. Computer Science, UBC
201-2366 Main Mall
Vancouver, V6T 1Z4, Canada
As of August 2013 I am no longer a full-time professor at UBC, but retain adjunct status.
I am now a Senior Principal Research Scientist for Visual Effects at
Symposium on Computer Animation
I helped organize SCA 2011, August 5-7 in Vancouver, just before
Past Industry Work
a graphics company which made physical simulation software for the film
industry. Our Naiad software, acquired by Autodesk in 2012,
has featured in some of the most impressive
liquid effects to date, including films such as Avatar,
Narnia: Voyage of the Dawntreader,
X-Men First Class,
Harry Potter and The Deathly Hallows Part 2,
Pirates of the Caribbean 4,
Rise of the Planet of the Apes,
and many others. It is currently used at studios around the world.
My official screen credits are for
The Hobbit: An Unexpected Journey,
The Adventures of Tintin,
The Rise of the Planet of the Apes, and Inkheart,
but I have helped write in-house software at studios used in
many other films. Most recently I spent ten months as part of R&D at
Weta Digital in New Zealand following earlier
visits. Before that I co-wrote the Squirt fluid simulator for
Double Negative Visual Effects,
seen in many films for smoke, water, fire, clouds, ink-in-water, etc. including
Harry Potter and the Half-Blood Prince,
The Boat that Rocked/Pirate Radio,
Quantum of Solace,
The Dark Knight,
and Hell Boy II: The Golden Army. Even further back I helped out with
cloth simulation code used for Star Wars Episode II: Attack of the Clones
at Industrial Light and Magic, as one of the
original contributors to the PhysBAM project,
under my Ph.D. supervisor Ron Fedkiw.
Animations and Images
I've supplied preprints in most cases, which may be missing figures or
include typos etc. Please see the publishers' websites for the official
The Discretely-Discontinuous Galerkin coarse grid for domain decomposition,
E. Edwards and R. Bridson, arXiv:1504.00907, 2015 April 3.
Simulating rigid body fracture with surface meshes,
Y. Zhu, R. Bridson, and C. Greif, Proc. SIGGRAPH 2015. ( project)
Restoring the missing vorticity in advection-projection fluid solvers,
X. Zhang, R. Bridson, and C. Greif, Proc. SIGGRAPH 2015. ( project) A PPPM fast summation method for fluids and beyond, X. Zhang and R. Bridson, Proc. SIGGRAPH Asia 2014.
Ocean waves animation using boundary integral equations and explicit mesh tracking, T. Keeler and R. Bridson,
ACM SIGGRAPH/Eurographics Symposium on Computer Animation (Best Technical Paper award!)
and ACM SIGGRAPH 2014 Posters Program, 2014.
Detailed water with coarse grids: combining surface meshes and adaptive discontinuous Galerkin, E. Edwards and R. Bridson,
Proc. SIGGRAPH 2014.
Isosurface stuffing improved: accute lattices and feature matching, C. Doran, A. Chang, and R. Bridson,
ACM SIGGRAPH 2013 Sketches Program, 2013.
Synthesizing waves from animated height fields, M. B. Nielsen,
A. Soderstrom, and R. Bridson, ACM Transactions on Graphics, 2013.
animation with vortex sheet meshes, T. Brochu, T. Keeler, and
R. Bridson, ACM SIGGRAPH/Eurographics Symposium on
Computer Animation 2012. ( movie)
Multiphase flow of
immiscible fluids on unstructured moving meshes, M. K. Misztal,
K. Erleben, A. Bargteil, J. Fursund, B. Bunch Christensen,
J. A. Bærentzen, and R. Bridson,ACM
SIGGRAPH/Eurographics Symposium on Computer Animation 2012.
(best paper award)
Ghost SPH for animating
water, H. Schechter and R. Bridson, Proc. SIGGRAPH 2012.
Exact Continuous Collision Detection, T. Brochu, E. Edwards, and
R. Bridson, Proc. SIGGRAPH 2012. ( open-source code,
Steady state Stokes flow
interpolation for fluid control, H. Bhatacharya, M. Nielsen, and
R. Bridson, to appear in Eurographics 2012, short papers.
MultiFLIP for Energetic Two-Phase
Fluid Simulation, L. Boyd and R. Bridson, ACM Trans. Graph.
A high-order accurate
particle-in-cell method, E. Edwards and R. Bridson, to appear in
Intl. J. Num. Meth. Engr.
Guide shapes for high
resolution naturalistic liquid simulation, M. Nielsen and R. Bridson,
Proc. ACM SIGGRAPH 2011.
Computational physics in film, R. Bridson and C. Batty, Science 24 December 2010: Vol. 330 no. 6012 pp. 1756-1757.
A simple finite difference method for time-dependent, variable coefficient Stokes flow on irregular domains, C. Batty and R. Bridson, 2010, arXiv preprint.
Optimization-based fluid simulation on unstructured meshes,
M. K. Misztal, R. Bridson, K. Erleben, A. Baerentzen, and F. Anton,
in Proceedings of Virtual Reality Interaction and Physical Simulation (VRIPHYS), 2010.
Matching fluid simulation
elements to surface geometry and topology, T. Brochu, C. Batty, and
R. Bridson, Proc. ACM SIGGRAPH 2010, 9 pages. ( project)
SpikeNav: using stylus tilt in three-dimensional
navigation, R. Bridson, ACM UIST 2009, poster session.
Animating smoke as a surface,
T. Brochu and R. Bridson, Symposium on Computer Animation 2009, poster
session. ( movie)
Robust topological operations
for dynamic explicit surfaces, T. Brochu and R. Bridson,
accepted in SIAM Journal on Scientific Computing 2009. (for related software, see the
Evolving sub-grid turbulence for smoke animation,
H. Schechter and R. Bridson, Symposium on Computer Animation 2008. ( full movie)
Accurate viscous free surfaces for buckling, coiling, and rotating liquids,
C. Batty and R. Bridson, Symposium on Computer Animation 2008. ( movie,
Animating developable surfaces using nonconforming elements,
E. English and R. Bridson, Proc. ACM SIGGRAPH 2008. ( movie)
Fast Poisson disk sampling in arbitrary dimensions,
R. Bridson, ACM SIGGRAPH 2007 Sketches Program. (download the curl-noise
example code for a public-domain implementation).
A fast variational framework for accurate solid-fluid coupling,
C. Batty, F. Bertails, and R. Bridson, Proc. ACM SIGGRAPH 2007. ( movie,
Curl noise for procedural fluid flow,
R. Bridson, J. Hourihan, and M. Nordenstam, Proc. ACM SIGGRAPH 2007. ( movie
and public domain example code available.) See also Ivan DeWolf's technical report
Divergence-free noise for a slightly
Fluid animation with explicit surface meshes,
T. Brochu and R. Bridson, Symposium on Computer Animation 2006, poster session.
Cloth animation through unbiased strain limiting
and physics-aware subdivision, D. Tsiknis and R. Bridson, Symposium on Computer
Animation 2006, poster session.
A multi-preconditioned conjugate gradient algorithm, R. Bridson
and Chen Greif, SIAM Journal on Matrix Analysis and Applications, 2005, vol. 27, no. 4, pp. 1056-1068.
Animating sand as a fluid,
Y. Zhu and R. Bridson, ACM SIGGRAPH 2005. (see below
for code) Adaptive physics based tetrahedral mesh generation using level sets,
J. Teran, N. Molino
and R. Fedkiw,
Engineering with Computers 2005.
Nonconvex rigid bodies with stacking,
E. Guendelman, R. Bridson, and
ACM Transaction on Graphics, vol. 22, no. 3, Proc. ACM SIGGRAPH 2003, pp. 871-878.
Simulation of clothing with folds and wrinkles,
R. Bridson, S. Marino, and
R. Fedkiw, Proc.
ACM/Eurographics Symposium on Computer Animation 2003, pp. 28-36.
A crystalline, red green strategy for meshing
highly deformable objects with tetrahedra, N. Molino, R. Bridson,
J. Teran, and
Proc. International Meshing Roundtable 2003.
treatment of collisions, contact and friction for cloth animation,
R. Bridson, R. Fedkiw
and J. Anderson, ACM Transactions on Graphics, vol. 21, no. 3, Proc.
ACM SIGGRAPH 2002, pp. 594-603.
approximate inverse preconditioners, R. Bridson and W.-P. Tang,
SIAM Journal on Scientific Computing, vol. 23, no. 2, pp. 463-479.
structural diagnosis of some IC orderings, R. Bridson and W.-P. Tang,
SIAM Journal on Scientific Computing, vol. 22, no. 5, pp. 1527-1532
an approximate inverse, R. Bridson and W.-P. Tang,
Journal on Computational and Applied Math, 123 (2000), Numerical
Analysis 2000 vol. III: Linear Algebra, pp. 293-306.
anisotropy and factored approximate inverses, R. Bridson and W.-P. Tang,
SIAM Journal on Scientific Computing, vol. 21, no. 3, pp. 867-882.
asymptotic regimes of tilted Bianchi II cosmologies, C. G. Hewitt, R. Bridson, and J.
Wainwright, General Relativity and Gravitation, vol. 33, no. 1, pp. 65-94.
Fluid Simulation, SIGGRAPH 2006 and 2007 courses.
Cloth collisions, SIGGRAPH 2005 course slides (w/o movies).
Computational aspects of dynamic surfaces,
my PhD thesis, supervised by
Ron Fedkiw, Stanford University,
Multiresolution approximate inverses,
my Masters thesis, supervised by Wei-Pai Tang. University of Waterloo, 1999.
Ordering for Factored Approximate Inverse Preconditioners,
with Wei-Pai Tang. This is an extended abstract for the
1998 Copper Mountain Conference on Iterative Methods.
Athena Chang (BSc)
Crawford Doran (MSc - NSERC)
Essex Edwards (PhD - dept. scholarship) Todd Keeler (PhD)
Xinxin Zhang (PhD)
Yufeng Zhu (PhD)
All files in this section are in the public domain unless otherwise indicated.
Many of my or my group's projects use a variety of files from a "common" directory: not
exactly a proper library, but a collection of occasionally very useful files for C++ hacking.
Some of the more stable members are available in the public domain here:
Here are some more specific projects, organized by topic:
Linear Algebra and Optimization
maxmin1.tar.gz, a very simple program for solving tiny linear max-min problems (a variant of simplex for LP).
Quern, a sparse QR library for direct and iterative solvers.
KKTDirect, a direct solver package for saddle-point matrices.
MPCG, MATLAB source for the multi-preconditioned conjugate gradient algorithm.
ainvInC.tar.bz2, a C implementation of "matrix-free" SAINV, a factored approximate inverse preconditioner which doesn't require a matrix, only a linear operator.
sainvmex.tar.bz2, a CMEX version of SAINV, callable from MATLAB (but with the speed of admittedly unoptimized C)
etree_balance.m, a MATLAB m-file for postordering a symmetric-structure sparse matrix to give a balanced (minimum height) elimination tree.
etree_unbalance.m, a MATLAB m-file for postordering a symmetric-structure sparse matrix to give an unbalanced elimination tree.
imatrix.m, a MATLAB m-file for converting a matrix into an I-matrix (all entries bounded by 1 in magnitude and with unit diagonal).
metismex.c, a MATLAB CMEX interface to the Metis graph partitioning and matrix ordering library. (Note: somewhat out of date - see David Gleich's update for a version that works with Metis v5.0) Geometry
Exact CCD, stand-alone library for exact continuous collision detection.
Tunicate, a library of robust computational geometry predicates in floating point.
El Topo, a robust surface tracking library that maintains an untangled high quality triangle mesh even in the face of topological changes.
mesh_query, example code for robustly checking inside/outside and segment intersection with a mesh. Graphics
SpikeNav example 3D navigation user interface.
curl-noise example code (also includes fast Poisson disk sampling in arbitrary dimensions).
simple_flip2d.tar.gz, old code for a simple PIC/FLIP 2d water simulation.
gridimplicit.cpp, a shape plug-in for the pbrt ray-tracer, providing implicit surfaces sampled on a grid.
sculpt.tar.bz2, a C++ simple sculpting program based on level sets, multi-resolution point splatting, etc. See my PhD thesis for a write-up on it. Miscellaneous
DumpPDFAnnotations.zip: a command-line application for Mac OS X to dump the annotations contained in a PDF file.
infix.c: a really simple example of parsing infix expressions (no parentheses or functions, just basic calculator functionality)
CPSC 426, Computer Animation, September-December 2011
CPSC 314, Computer Graphics, January-May 2012
I have taught in the past:
CPSC 314, Computer Graphics, September-December 2009
CPSC 542G, Scientific Computing (Graduate Breadth), September-December 2009 CPSC 548, Directed Studies (physics-based animation)
CPSC 314, Computer Graphics, September-December 2008
CPSC 542G, Scientific Computing (Graduate Breadth), September-December 2008
CPSC 426, Computer Animation, January-May 2008
CPSC 542G, Scientific Computing (Graduate Breadth), September-December 2007
CPSC 542G Scientific Computing (Graduate Breadth), September-December 2006
CPSC 533D Animation Physics, September-Decemeber 2005
CPSC 426 Computer Animation, September-December 2005
CPSC 533D Animation Physics, January-April 2005
CPSC 426 Computer Animation, September-December 2004
CPSC 533B Animation Physics, January-April 2004
Here's some music I've written (more to come as I typeset it):
I also wrote a little duet part for the Bach "Minuet No. 3" in Suzuki
Viola Book One:
MIDI output from LilyPond too).
A little poem:
A few tracks I recorded:
My son's first movie is
(I got to have a supporting role, and served as technical consultant :-)).
Some other short animations, from a traditional animation class with Lorie Loeb:
Surfacing (listen to this with Otis Redding's
"Sittin' on the Dock of the Bay" playing)
Here's source code for a simple
2D fluid simulator I wrote for a course project once.
I did a hectic project involving digital sculpting, environment map acquisition from
uncalibrated photos, fast ray-tracing of micro-facet textured level sets, and compositing
(producing images like
this) for the
Stanford cs348b rendering
Here's source code for a 3D first-person video-game,
Spaceman Spiff: Escape from Zorg,
which I wrote for the Stanford
cs248 video game competition.
A word-for-word translation I made of the sung parts of the Latin mass:
invaded my left ear.
And like the book says, we might be through with the past, but the past, it ain't through with us.