One of the most important aspects of character-related FX systems, like a stream of drool hanging from a dog’s mouth, is control. More often than not, animators will want to be able to control the effect without needing a degree in fluid simulations. This set-up combines nCloth and nParticles for an animator-friendly system.
The approach is simple. For the drip that hangs suspended from the dog’s mouth, I decided to use nCloth because of its easy-to-control dynamic properties, such as Stretch, Stickiness and Bend Resistance. For the drips that come off of the end of the stream, when the dog is moving its head and the drool is whiplashing around, I decided to use nParticles emitted from the nCloth surface.
Starting inside the dog's mouth, draw a curve that is roughly the length you want your drool stream to be. Rebuild the curve with 30 or 40 spans - so that your final surface can deform freely - and a parametric range of 0 to 1. The nParticles will move along the final surface according to its parameterisation, and values from 0 to 1 will help simplify things. Now draw a profile curve, and extrude it along the first curve to produce a poly mesh. Scale the profile curve down to about 0.01 to make your extruded surface very skinny. This will cause your emitted nParticles to travel in a very tight stream.
Now convert the extruded surface into nCloth. The stream of drool needs to conform to the shape of the dog’s mouth, so convert the dog's teeth and gums, etc, into passive colliders. It's not a bad idea to create a custom piece of geo for just the collision area to reduce simulation time. Advance the simulation a few frames, to allow the nCloth to conform to the shape of the collision objects and then set the initial state. Finally, apply an nCloth Transform constraint to anchor the nCloth to the dog's mouth.
Once you have the nCloth hanging from the dog's mouth it’s time to start adjusting the nCloth Settings. I found that the default settings were pretty close to what I needed, but reduced Stretch Resistance to 3, and Compression Resistance to 10. Critical attributes, such as Rest Length Scale, can be connected to custom attributes on a Locator, to provide easy control to animators.
Once you have the drip swinging below the dog's chin, it's a good idea to cache the nCloth. If all you wanted was drool that dangled from the dog's chin, but never detached, you could just render your nCloth surface.
This article originally appeared in 3D World issue 173.