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 Autodesk.
Symposium on Computer Animation
I helped organize SCA 2011, August 5-7 in Vancouver, just before
SIGGRAPH: www.siggraph.org/sca2011
Past Industry Work
I cofounded Exotic Matter,
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,
2012,
The Boat that Rocked/Pirate Radio,
Inkheart,
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.
I've supplied preprints in most cases, which may be missing figures or
include typos etc. Please see the publishers' websites for the official
versions.
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.
Refining
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.
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.
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
competition.