-
Step #3
-
Configure mtorFur.
-
Once mtorFur is attached to an object, it needs to be
configured. mtorFur needs to output temporary files during the RIB
generation process, and it is necessary to provide a filename for the
output file. Usually, the default filename
($PROJ/rmantmp/mtorFur.$o.$F4) will be fine - this will result in the
temporary files being placed in the rmantmp subdirectory of your
project.
If you render the scene now, you should see some ugly purple fuzz
growing from your NURBS.
|
The striking purple stubble default.
|
Step #4
Tweak Parameters.
The next step is of course to change the short purple
fuzz to long curly hair. By editing the parameters of mtorFur, you can
create a wide variety of different looks. The density of the fur can
be defined in U and V parametric space. The width, color, opacity, and
curl of the base of the fur can be defined independently from the
settings for tip of the fur. Scraggle can be added to the fur, and the
fur can also be made to lean over. Simple scripts can be added to
mtorFur parameters in order to animate the fur over time, to create
waving fur, for example.
|
A product of fiddling.
|
A Closer Look at the mtorFur
Parameters:
Note that many of these parameters function in the same way as the
Maya Fur parameters, in order to mimic the functionality of the mtorUltraFur plugin, which is why
some of these parameters have nonintuitive numeric ranges.
FileName - the file name for temporary fur
data. The default value of $PROJ/rmantmp/mtorFur.$o.$F4 is usually
sufficient, since it stores files under the current project and names
them according to the object the plugin is attached to.
CleanupFile - causes fuzz files to be
immediately removed after use.
LazyEvaluate - if a fuzz file exists, it will be used
rather than regenerated. Only meaningful when OutputToFile is
enabled.
FurInU - the number of hairs to generate per
unit measure in the u parametric direction of your NURBS.
FurInV - the number of hairs to generate per
unit measure in the v parametric direction of your NURBS.
FurPlacementJitter - the amount of randomness
applied when choosing a location to emit hair. If set to 0, hair will
be evenly spaced; if 1, hair will be fully jittered within a cell the
size of which is determined by the FurInU and FurInV parameters.
FurJitterSeed - a seed value for the randomization
parameters. Typically you'll want this constant over an animation for a
particular surface.
CastShadows - toggles whether your hair will be
rendered into shadow maps.
FlipNormals - if your hair appears to be
nothing more than specks on the surface, it may be because they're
actually growing on the wrong side of the surface. In that case you
can toggle this option to flip the direction in which they grow.
UseRATFuzz - controls whether to attach the ratFuzz
surface shader to the hairs. Use the six parameters below to control
the shader.
FurBaseColor - the color at the root of the
hairs.
FurTipColor - the color at the tip of the
hairs.
FurSpecColor - the specular color of the
fur.
FurKa - when using the RAT fuzz shader, this
parameter modulates the effect of ambient light.
FurKd - when using the RAT fuzz shader, this
parameter modulates the effect of diffuse light.
FurKs - when using the RAT fuzz shader, this
parameter modulates the effect of specular light.
FurRoughness - controls the spread of the
specular highlight.
FurSegments - the number of segments for each
hair. mtorFur uses Catmull-Rom splines as opposed to linear segments
to draw each hair, so you will not require a large number of segments
in order to create smooth hair. However, if you want to have your hair
change direction frequently (with a high FurScraggle parameter), then
you will require more segments.
FurLength - the length of each hair, in object
space coordinates. (Note: currently this is not in world space
coordinates, unlike Maya Fur. If you need to match a Maya Fur length,
you will need to freeze the transformation on the underlying NURB
surface.)
FurBaldness - this is another control over hair
density. When set to 1, there is full hair density (as determined by
the FurInU and FurInV parameters). When set to 0, the surface is
completely bald.
FurInclination - the "tilt" of the hair. 0
means fully erect along the normal, and 1 means the hair inclines
along the U tangent.
FurPolar - the "direction" of the hair
inclination. If FurInclination is 0, the hair points along the normal
and you won't notice the effects of changing the Polar
setting. Otherwise, the inclination will be along the U tangent if the
polar is set to 0.5 (the default). Setting polar to 0 means a -180
degree rotation, while 1.0 means a +180 degree rotation.
FurBaseOpacity - the opacity at the base of the fur.
FurTipOpacity - the opacity at the tip of the
fur. For a thin fur like appearance try setting the tips to be
slightly transparent.
FurBaseWidth - the width of the base of each
hair, in object coordinates.
FurTipWidth - the width of the tip of each
hair.
FurBaseCurl - the amount of curl in the hair at
the base. By default (0.5) the hair does not curl. If you set this to
0, the hair will do a half-circle curl at the base to one side; if set
to 1, the hair will curl the other way.
FurTipCurl - the amount of curl in the hair at
the tip. By default (0.5) the hair does not curl. If you set this to
0, the hair will do a half-circle curl at the tip to one side; if set
to 1, the hair will curl the other way.
FurScraggle -The scraggle of your fur. Scraggle
causes your fur to randomly change direction with each segment. When
set to 0, the fur will be straight; when set to 1, the new direction
is very random, causing a very scraggly look.
|
|
mtorUltraFur is the preferred plugin if you have Maya Fur. Not only
does it automatically use Maya Fur data (allowing the use of Maya for
visualization for your fur), but it is also more efficient to render
than mtorFur. Rather than writing all hairs at
RIB generation time to very large RIB files, mtorUltraFur will take
advantage of the mtorFurProcedural plugin which runs at rendering time
automatically. This allows the renderer to take advantage of bounding
box information in order to avoid the expense of actually rendering
hair unless truly necessary.
Again, if you're a developer, source code for both the mtorUltraFur
RIBGen plugin and the mtorFurProcedural hair DSO is provided in the
devkit/examples/ribgen subdirectory of your RAT installation.
|
-
Step #1
-
Check the Geometry.
-
Like mtorFur, mtorUltraFur must be attached to NURBS or
subdivision surfaces; it will not work properly with polygonal meshes.
|
|
-
Step #2
-
Set up Maya Fur attributes and attractors.
-
Set up your scene with Maya Fur attributes. Typically
this means you attach a Fur Description to the geometry, edit the
attributes of the Fur Description, and attach and edit Fur Attractors
as needed; you can also use Maya Artisan to paint fur attributes.
|
A NURBS plane with Maya Fur combed in Artisan.
|
-
Step #3
-
Perform a Maya Fur Advanced Fur Rendering.
-
Now, you need to have Maya Fur export some data files.
Open the Advanced Fur Rendering dialog box, which can be accessed from
the Fur menu, and make a note of the "Put Fur Files here" directory;
you will need to tell mtorUltraFur about this directory in the next
step. You will only need to create "Fur Files", so select that option,
and then push the "Create Files" button.
The Maya Fur renderer should now create a set of text
files which describe the fur descriptions and fur attractors in your
scene. It will also create .IFF texture files which describe baked fur
attributes (including data painted with Artisan). mtorUltraFur will
use all of these files in order to generate fur for RenderMan. You
need to repeat this step every time you change an attribute of the fur
description or attractor set in order for mtorUltraFur to pick up the
changes correctly.
|
The Advanced Fur Rendering dialog box.
|
-
Step #4
-
Import and attach mtorUltraFur.
Import mtorUltraFur into a Slim palette. The
specific name of the file to import is mtorUltraFur.so on
Unix, or mtorUltraFur.dll on Windows, and it should be
located in /lib/plugins/ under your RAT installation
directory. The mtorUltraFur RIB generator can now be attached to the
geometry (to which the fur description has been attached) like an
ordinary surface shader. Like mtorFur, note that this plugin only adds
fur to an object, and it will not affect the color of an object's
surface, so attach a surface shader in order to define the color and
texture of the surface of the object.
|
|
-
Step #5
-
Configure mtorUltraFur.
You now need to configure the mtorUltraFur
settings. Again, like mtorFur, mtorUltraFur needs to output temporary
files during the RIB generation process, and it is necessary to
provide a filename for the output file. Usually, the default filename
($PROJ/rmantmp/mtorFur.$o.$F4) will be fine - this will result in the
temporary files being placed in the rmantmp subdirectory of your
project.
More importantly, you will need to ensure that the RenderFile setting
matches the directory in which the Advanced Fur Rendering process
placed its files.
|
|
-
Step #6
-
Render.
You should now be able to do a render with RenderMan
and see the fur attached to your surfaces. If tweaks are necessary,
make sure that you remember to redo a Maya Fur Advanced Render if you
change a Maya Fur attribute.
|
The results of mtorUltraFur
|
A Closer Look at
the mtorUltraFur Parameters:
You'll notice that the number of parameters in mtorUltraFur is a lot
less than in mtorFur. This is because the values for these parameters
is grabbed directly from data written by the Advanced Fur Render from
Maya. In addition, mtorUltraFur will automatically take into account
Maya information about noise, attribute maps, and fur attractors (of
any type) when computing the output fur.
Most of the other parameters remain unchanged between
mtorFur and mtorUltraFur, although you should be aware of some details
about the integration with Maya Fur:
FurInU, FurInV - the number of hairs to
generate per unit measure in the u and v parametric direction of your
NURBS. mtorUltraFur ignores the density attribute of the fur
description.
FurBound - generally, this needs to be set to the
maximum length of your fur. This information will be used to compute a
bounding box, which is necessary for the renderer to accurately invoke
the mtorFurProcedural plugin at render time to compute the
fur information. If you are getting large square pieces missing from
where your hair should be, chances are that your FurBound is set too
low.
FurRoughness - controls the spread of the
specular highlight. At the moment, mtorUltraFur ignores the Maya
Specular Sharpness attribute.
FurSegments - the number of segments for each
hair. mtorUltraFur ignores the Maya Segments attribute because
mtorUltraFur uses Catmull-Rom splines as opposed to linear segments to
draw each hair. Therefore, you can usually use less segments than
required in Maya Fur to create smooth hair. However, if you want to
have your hair change direction frequently (with a high FurScraggle
parameter), then you will require more segments.
RenderFile - specify the directory in which the
Maya Fur Advanced Render places its files.
|
|
Current mtorUltraFur
limitations:
-
The scraggle frequency and scraggle correlation attributes are not
yet supported.
-
Several Maya Attractor attributes are not yet supported,
including: Power, Influence, Start Length, End Length, and Threshold
Length.
-
The noise implementation used in mtorUltraFur is different from
that used in Maya Fur. As a result, you should not expect any fur
attribute which make use of noise to necessarily match the
computations from Maya Fur.
-
mtorUltraFur differs significantly from Maya Fur in its
interpretation of the behaviour of attractors over hair. We believe
that our implementation better follows the "spirit" of their
documented intended behaviour, but in many cases this can be quite
different from the way in which Maya Fur behaves.
-
Maya Fur equalizer maps are not supported. This means that the
density of mtorUltraFur's output will vary with uneven surface
parameterizations.
|
|