Publications

A Mass-Spring Model for Hair Simulation

[pdf]  [video]

Selle, A., Lentine, M., and Fedkiw, R.
SIGGRAPH 2008, ACM TOG 27, 64.1-64.11 (2008).

Our goal is to simulate the full hair geometry, consisting of approximately one hundred thousand hairs on a typical human head. This will require scalable methods that can simulate every hair as opposed to only a few guide hairs. Novel to this approach is that the individual hair/hair interactions can be modeled with physical parameters (friction, static attraction, etc.) at the scale of a single hair as opposed to clumped or continuum interactions. In this vein, we first propose a new altitude spring model for preventing collapse in the simulation of volumetric tetrahedra, and we show that it is also applicable both to bending in cloth and torsion in hair. We demonstrate that this new torsion model for hair behaves in a fashion similar to more sophisticated models with significantly reduced computational cost. For added efficiency, we introduce a semi-implicit discretization of standard springs that makes them truly linear in multiple spatial dimensions and thus unconditionally stable without requiring Newton-Raphson iteration. We also simulate complex hair/hair interactions including sticking and clumping behavior, collisions with objects (e.g. head and shoulders) and selfcollisions. Notably, in line with our goal to simulate the full head of hair, we do not generate any new hairs at render time.

Other Research

Data-Driven Skin Deformations

Generating realistic human animation has been a big problem in computer graphics. Animation is usually generated in the form of joint angles but this leaves out much of the subtleties of human motion such as breathing. There have been some approaches to capture this. Muscle-driven techniques are quite successful but take a long time to construct and are quite slow. Data-driven techniques usually require a very large amount of input data. This project aims to reduce both the complexity of the model and the amount of input. The idea is to use a database of detailed motions that include subtleties such as skin deformations to create a model of motion. Using this model, we can then create new animations using minimal motion capture data. This is a collaboration with Sang Il Park and Jessica Hodgins.

Visibility in recognizing human motion

Computer animation is striving to attain characters that are as realistic as possible. However limitations with both algorithms and processor power make this a difficult problem. This research attempts to help with this problem by determining what animations are most important to get as realistic as possible. To do this we examine the correlation between how much a character is similar to a human and realism. The hypothesis is that the less human-like a character is, the more realistic it will be even with lower quality animation. This is due to humans having a much better model of human motion than other types of motion. We experimented by showing motions of different characters behind different sized fences so that the character would be more or less obstructed by the fence. This is a collaboration with Jessica Hodgins and ATR in Japan.

Determining human characteristics from size and speed

Character design is something that individuals spend many hours on. They have to design a character that conveys a certain amount of realism and/or a certain amount of intelligence. The goal of this project is to find the correlation between a human's size and speed and these characteristics that designers attempt to convey. Previously, studies were done to determine characteristics of an amorphous blob but these results were inconclusive as humans don't have a good model of how a blob moves. This project used motions of a human performing a back flip to determine these characteristics while varying both speed and size of the human. This can then help designers convey the characteristics they would like in a human character. This is a collaboration with Jessica Hodgins, Sara Kiesler, and Jodi Forlizzi.

Motion alteration from observance

Human motions are usually generated independently without regard to the other figures in a science. However, when humans move they take into account the way those around them are moving. The goal of this project is to determine how much an individual's motion does affect another's with simple tasks. Here we tell subjects to simply move their arm up and down or left and right and then display an animation of the opposite. We can then see how much the subjects deviate from the up/down or left/right motion. This is a collaboration with Jessica Hodgins, Denny Proffitt, and others at UVA.

Other Projects

These are course projects and/or projects just for fun that I have done while at CMU. Although they may not be research, they were very interesting and fun to work on. These are the more recent projects I have worked on (2006 and beyond).

Thin Shells

Physical simulation has been a large interest of mine. My first attempt at physical simulation was a basic cloth simulation. It was a standard particle spring system that was used as a cape on an articulated character. Although I liked doing this, it has many limitations. The discrete shells paper from CalTech fixes many of these problems. I implemented this using both explicit and implicit integration. This was a really fun project to work on and it works well for deformable body simulation.

Anatomical Breathing

As I mentioned above, modeling skin deformations is a problem in graphics. This project attempted to use a muscle model to accurate model breathing. The goal was to use a sparse marker set (~3) to drive the breathing system. This used a system of procedurally generated muscles along with a skeletal mesh that the muscles are attached to. Although this was a very interesting project, part of the motivation for the data-driven skin deformations project came from the early discovery that breathing is low dimensional (fewer than five dimensions).

Photon Mapping Ray Tracer

This is my one stab at implementing a rendering project (simple opengl rendering excluded). This was an interesting project that I worked on. This is one of my very few projects that have not concentrated on animation. The algorithms I used are from Herik Wann Jensen's techniques. The basic idea is that we first shoot photons out of light sources and allow them to bounce around the scene. We then calculate a ray for each pixel and determine where it intersects the scene. We can then examine the amount of photons that landed in that space to generate the intensity of the light that lands in that pixel. Although I prefer animation, it was interesting to be able generate images of this level of realism. Ideally, I would like to develop animation techniques and be able to render them in more complex ways that simply using OpenGL.

Subdivision Surfaces

This is a implementation of the subdivision surfaces algorithm originally developed by Pixar Animation Studios for Geri's Game. In this algorithm, each primitive piece of geometry is divided into pieces. The mesh is then smoothed to create a more detailed mesh. I implemented this technique using a half-edge data structure. This is another project I did that's not an animation project but was still interesting.

Motion Retargeting

This was a small project for a class that I took. The basic idea was to make one person say something another one said. Taking an input video from person A, we can create a motion graph that allows transitions between frames in which lip positions are close to each other. For each frame, we can take input video from a second person B and extract the lip positions, matching the closest lip positions of person A, but only allowing transitions that follow the motion graph that we constructed. At first we tried to use a naive method (pixel colors) for extracting lip positions but quickly realized this method was too unreliable. I managed to improve this a great deal but one of the drawbacks to doing a project for a course is you have very limited time and we weren't able to get the entire process completely working. Nevertheless it was a fun project and gave some interesting results. This is a collaboration with Jimmy Andrews.

Some of the older projects I have worked on included an IK Solver, a program for interpolating human motion, a texture generator, and others.