Adding Fuzz to Your NURBS


Introduction

The mtorFuzz RIB generator is provided primarily as an example for custom rib generators. Nonetheless it can create striking images of NURBS surfaces with added fuzz or stubble. mtorFuzz comes precompiled for use by artists and, for developers, in C++ source and .sli form.

The image above was created by attaching mtorFuzz to a strange shaped NURBS.

  1. In Slim: File->Import Appearance
  2. Load the mtorFuzz DSO, located in the lib/plugins subfolder of your RAT installation, and named mtorFuzz.so on UNIX or mtorFuzz.dll (on Windows)
  3. select the surface you want fuzzed
  4. attach mtorFuzz to the surface via Appearance->Attach
  5. (tweak mtorFuzz parameters)
  6. Render

The image below-right is a dump of mtorFuzz's parameters. MTOR fuzz only puts fuzz on NURBS because the parameterization on NURBS is well defined. The basic idea is to choose fuzz density, randomness and coloring parameters. You can also use Artisan to paint a fuzz-mask and fuzz-length map to control location and length of the fuzz over your surface.

Fuzz Parameters

Now let's look at the specifics of each parameter of mtorFuzz.

Fuzz Object - the name of the object to foliate. When blank, fuzz is created for the objects that the RIB generator is attached to.

FuzzInU - the number of hairs in the u direction of your NURBS.

FuzzInV - the number of hairs in the v direction of your NURBS.

FuzzPlacementJitter - the amount to randomize the location of the hair within a hair cel.

FuzzWidth - the width of each hair.

FuzzLength - the length of each hair.

FuzzLengthJitter - the randomness associated with the hair lengths.

FuzzMaskVariable - the name of a scalar vertex variable attached to your surface (perhaps created with Artisan). Zero values indicate where fuzz is to be masked out. This is useful to reduce the size of the results passed back and forth via Mel.

FuzzLengthVariable - the name of a scalar vertex variable attached to your surface (perhaps created with Artisan). Gray values are used to multiply hair lengths.

FuzzDirectionJitter - the amount to randomize the hair direction. When set to 0, the fuzz direction represents the normal of your nurb at that point.

FuzzJitterSeed - a seed value for the randomization parameters. Typically you'll want this constant over an animation for a particular surface.

CastShadows - choose whether your fuzz casts shadows.

OutputToFile - choose whether to transmit fuzz data via file or via Maya return values. For large datasets Maya return values is very inefficient, so you'll want to output the data to file.

FileName - choose the file name for fuzz data. Only used if you've enabled Output to File. To store a file under the current project and name it according to the object we're attached to, try something like: $PROJ/rmantmp/fuzz.$o.$F4

CleanupFile - causes fuzz files to be removed after use. Only meaningful when OutputToFile is enabled.

LazyEvaluate - if a fuzz file exists, it will be used rather than regenerated. Only meaningful when OutputToFile is enabled.

UseRATFuzz - attaches the ratFuzz surface shader to the fuzz. Use the parameters below to control the shader.

FuzzKa - when using the RAT fuzz shader, this parameter multiplies the effect of ambient light.

FuzzKd - when using the RAT fuzz shader, this parameter multiplies the effect of diffuse light.

FuzzKs - when using the RAT fuzz shader, this parameter multiplies the effect of specular light.

FuzzRoughness - controls the spread of the specular highlight.

FuzzRootColor - the color at the root of the hairs.

FuzzTipColor - the color at the tip of the hairs.

FuzzSpecColor - the specular color of the fuzz.

Painting Fuzz with Maya Artisan

In the images below we used Maya Artisan to paint a customer RenderMan vertex variable named fuzzLength. The image on the left shows the contents of the fuzzLength channel. In this example we used the same channel for our fuzz mask and our fuzz lenght multiplier. The image on the right is the result.

 

Pixar Animation Studios
(510) 752-3000 (voice)   (510) 752-3151 (fax)
Copyright © 1996- Pixar. All rights reserved.
RenderMan® is a registered trademark of Pixar.