The star of the film had 1,150,070 hairs (and it wasn’t Linguini).
Thanks to Pixar, I’m going to be sharing several look-backs at some VFX and animation projects where RenderMan has played a key role over the years.
This week, we’re going back to Brad Bird’s Ratatouille. One of Pixar’s key challenges on the film included crafting hair/fur, mainly for the rats, of course, but also the human characters. By going back into some previously published Pixar materials, here’s the retro RenderMan perspective on how the studio solved those hair and fur challenges for the 2007 film.
The groom started at Pixar with establishing the overall flow and length of the fur. The layout was sketched over the top of a photo of the maquette (or other concept art), then implemented as a sparse representation in Maya, using Maya nurbs curves.
From this sparse guide hair representation, Pixar used a proprietary RenderMan procedural DSO, gofur, to generate in-between hairs. These being based on the guide hair and texture maps painted to control hair properties (i.e. clumping, frizz, etc). The same DSO guts were integrated into a Maya plugin so the artists would have visual feedback on their groom while in their working environment.
Other smaller features, adding life and believability to the shading of a rat, include the small peach fuzz that appears on the ears. Many shading tricks were tried to produce the fuzzy appearance (facing ratios, etc). In the end, nothing worked as well as actually rendering thousands of tiny, semi-transparent hair on the ears.
The Colette character ended up having 176,030 hairs (a real human generally has between 100,000 and 200,000 hairs on their head). Remy easily beat this with over a million hairs – 1,150,070 to be exact. This hair count multiplied across large numbers of rats became a scary rendering problem.
‘Cheating’ would clearly be an option here, so a number of tricks were tried out to reduce the hair count on the rats. For example, reducing the hair count but giving the base texture a rendered fur appearance. However, the quality was not there so a deeper solution had to be found: enter stochastic simplification, or procedural LOD.
Level of detail
Level of detail is simply a way to reduce the complexity of an object, as it takes up less space on the screen. RenderMan has built-in level of detail support which works well for hard surfaces, or models, that can be manually reduced to lower-resolution representations. But what about geometry that is generated procedurally, like fur? As it is generated by a DSO, it is easy to be naive and simply reduce the number of hairs the DSO generates, as the object recedes in screen space. This introduces problems with fur coverage and exposes too much of the skin beneath.
Pixar had done substantial work for Cars and Ratatouille using something known as stochastic pruning. It describes techniques for maintaining consistent screen appearance, as procedural complexity is reduced. Beyond simple reduction in the object count (fur, leaves, etc), it presents techniques for compensating for area loss, maintaining visual contrast and saturation.
In addition to reduction solely based on distance, the technique also reduces based on screen importance, meaning objects that are heavily motion-blurred or blurred, through depth of field, can have their complexity reduced. A shot from Ratatouille, below, shows the areas where reduction can occur.
This last image, below, shows the use of stochastic simplification. At full complexity, the rats in the scene produced 240 million hairs and were therefore un-renderable without simplification. With stochastic simplification techniques added to the fur DSO, the total hair count was reduced by 94% to approximately 14 million hairs.
Check back soon for more Retro RenderMan stories.