Animating Realistic Cloth
Digital animation has come quite a long way in the past decade or so. The field of digital effects has been completely revolutionized, and, for character animators, there are new methods for bringing characters to life. These advances have come quickly, but even with this tremendous progress, we're still at the base of a very long road. A number of very difficult problems still need to be solved. One of the more vexing of these has been the simulation of cloth and realistic clothing.
Cloth is a tough nut to crack. When simulating cloth, a number of very sticky problems come into play. Cloth can be simulated using physical equations, but the equations are quite vexing and complicated to solve. A good example might be the cloth in a dress. The legs collide with the dress and push it around, but as the dress folds, the cloth of the dress collides with itself, geometrically increasing the number of collisions that need to be solved. Cloth also has elastic properties that can vary, depending on the weight and cut of the fabric. A fabric such as leather is fairly stiff, holding its shape much more than a loose fabric such as cotton or silk.
The problem has to be tackled on two fronts. The first is with sheer brute force. As machines get faster, it becomes easier to simply solve for all the collisions. The second tactic is to simplify the simulation so that you don't have to solve as many collisions, thus reducing the amount of brute force required.
Several commercial cloth plug-ins are on the market. Most of these plug-ins are still quite pricey, although costs are coming down. The big advantage to using a commercial cloth plug-in is that it is tuned for calculating the physics required for realistic simulation. So many of these plug-ins are available that it's hard to concentrate on one. Generally, however, these have a number of features in common.
All cloth software needs to calculate collisions between the cloth as well as other objects. The software also needs to create many different types of materials by varying the stiffness and elasticity of the cloth. This is usually created by simulating springs between the vertices of a fabric, much like a virtual box spring. When one vertex collides, it reacts and pulls the vertices around it. Those vertices pull their neighbors, and so on. Again, this adds to the number of equations that need to be solved. Finally, cloth needs to be capable of interacting with the environment. This means reacting to forces such as wind and gravity.
If you need to simulate cloth only occasionally, or if your cloth animation is simple (such as billowing flags or drapery), there are a number of tricks and ways of simulating cloth without using a fancy plug-in.
The simplest way to create fake cloth is to simply animate it. This is certainly not as easy as it sounds because the shapes involved can be quite complex. Still, for simple animations, you can use some simple tricks. Software with morphing capabilities is one good option because it allows for the seamless transition from one complex shape to another.
Consider a pair of bellbottom pants. Pants themselves are fairly easy to animate, but the motion of the bellbottoms can be tricky. There's also the issue of how the fabric of the pants stretches and creases as the legs move. If the character performs simple motions, such as walking or running, the motion of the pants is fairly simple as well.
Typically, if the character is walking forward, there will be only a few positions of the pants—when the leg is forward (see Figure 1), back (see Figure 2), and somewhere in the middle. The motion of the fabric is simply a classic case of secondary motion. When the leg is moving forward, it pulls the pants forward, causing the fabric to be mostly behind the leg. When the leg is moving back, the fabric is mostly in front of the leg.
Figure 1 When the leg moves forward, it pulls the pants forward.
Figure 2 As the leg plants, the cloth of the pants continues forward.
Getting the bottoms of the pants to move convincingly simply involves modeling the extremes. To add a natural touch, the targets should be modeled with folds and creases. The animation is then created by morphing between the targets as the character walks.
The walk, however, will probably be animated using bones, which, in turn, deform the mesh. The morphing of the bellbottoms needs to happen after this deformation. The best way to do this is with an object-oriented animation system. A package such as Maya, Max, or Houdini would fit the bill. The software would deform the pants mesh, and the morph is then applied after the deformation, either to the entire pant mesh or to just those vertices close to the bottom.
You can also approach the same problem with clusters. A cluster is simply a group of vertices that can be controlled through one set of keyframes. You could then animate the bottom of the pants forward and back. However, this will not be as convincing because little details such as folds and creases of the fabric are difficult to achieve.