Mass-Spring Model

Particle Grid

Our mass-spring model consists of a square grid of particles, each with unit mass and at (initially) unit distance away from the adjacent particles in its row and column. The cloth is then drawn as opaque polygons (triangles) that pass through the particle positions (although the grid can be viewed without the cloth overlay in order to see the inner workings of the cloth model).

Spring Connections

Holding the masses in the grid formation are three types of springs, as seen in the diagram below. Vertices that are adjacent along column or row lines are connected by structural springs, and springs that connect two vertices at opposite corners of a grid square are shear springs. Structural springs serve to hold the cloth in its natural square state, but translational forces on the cloth as a whole are not adequately transmitted through the cloth by a model that breaks oblique forces into orthogonal components along a small number of nodes. Naturally, a model connected only by structural springs but with a large number of component particles would model the real forces at work in a cloth very well, but since computational costs greatly restrict the number of nodes we can use, shear springs are necessary to aid the realistic appearance of force propagation. Additionally, as discussed below, shear springs can be used to easily effect certain desired cloth appearances.

Spring Graphic

Bend springs extend in the same directions as structural springs but connect nodes that have one node between them. Keeping these springs stiff restricts the cloth from bending too much out of the original plane of the grid. Notice that shear springs act in a similar way, since they skip over one node and thus prevent "bending" along a different axis -- namely, they prevent the cloth from tearing in the plane.

All of these interconnecting springs are realized as simple, damped Hooke's Law springs -- the restoring force in each spring is directly proportional to the displacement of the endpoints of the spring beyond its resting distance, modified by a damping factor proportional to the relative velocity of the cloth vertices. Thus, external forces or perturbations against the cloth cause the cloth to react exactly as the viewer would expect. For instance, if one corner of the cloth is pulled, the rest of the cloth is dragged along too. As another example, if the cloth is falling through the air, and one point is suddenly snagged by, say, a fishhook, the cloth will drape down around that point, and will even bounce a little at the bottom of the downward swing before coming to rest.

A brief look into our force calculations: at each timestep we loop over every vertex in the cloth, determining all the forces contributed BY that vertex, through the springs, to all of the vertex's neighbors (or two-node-away neighbors, in the case of bend springs). Forces are calculated through an explicit Euler method solution to the Hooke's Law differential equations that relate force, velocity, and position over the springs. Self-intersection handling (decribed directly below) takes place in a separate loop over the cloth.

Self-Intersection

We now have a rudimentary 3-D cloth model. Imagining this cloth moving in three dimensions, it is easy to see that nothing in particular about the model restricts one subset of the cloth vertices from passing through the plane of some other section of the cloth. That is, the springs themselves are only modeled as forces, not as actual objects. Thus, to make the cloth look even feasible, some form of self-collision detection and handling is required in the model.

While many previous models have resorted to standard point-plane and edge-edge intersection tests, McDonald and Welland [4] describe a complex model for very accurate cloth-cloth interaction that avoids costly intersection tests and unrealistic intersection handling. We implement only a limited version of their model, but the key principle remains intact: since intersection testing is so expensive, and the offending nodes/planes must still be handled in some manner after the intersection has been detected, we simply apply the "handling" effect to all nodes that are within a certain radius of one another. That is, we simply apply a universal repulsive force that drops off in inverse proportion to the square of the distance between each pair of cloth vertices. Using a small coefficient for this repulsive force, most nodes are not affected at all by the repulsion, but nodes that come too close to each other are strongly restrained from coming any closer. Depending on the other cloth parameters and how fast the interacting components are approaching one another, this feature can result in a highly realistic sliding, rolling, or bouncing effect.

Environment

Around this cloth foundation, we have constructed a 3-D cage that is controlled by a quaternion-based trackball. Inside the cage there is a strong gravitational force which helps avert excessive cloth floatation (and can be used for other purposes, such as to create wind). With the trackball interaction of the mouse, the user can apply point forces to the cloth in any direction. Additionally, the user can effect the aforementioned "fishhooking", such that a moving cloth can be suspended in midflight in any number of positions.

Cloth Types

By varying the springs' resting lengths, restoration constants, and damping coefficients, along with the coefficient of global repulsion, the user can create cloths that vary widely in appearance, response to external forces, and interaction with itself and the 3D cage. Please view several examples and experiment with the Windows application we have created on the next page:


Main Page

Results and Executable


This page last updated: Tuesday, March 15, 2000.
E-mail the authors: Will Portnoy and Dan Grossman