3D Artist
Apr
8

7 Pro Tips For Perfecting Hair & Fur in Maya

Tips & Tutorials
by
Dom Peppiatt

Part 2 of our complete Maya masterclass features the most useful tips for anyone that wants to master the tricky art of modelling hair and fur onto their projects.

022_3DA_091

To help artists do what they do best, 3D Artist has gathered together a broad range of tips so you can stay on top of your game and master tools – some of which you may not have heard of, and others you may be aware of but have not got to grips with quite yet.

Over the course of the next week, we’ll be publishing modelling tips from Jeanne Lin; rigging and nCloth advice from Andrea Goh; Molly Meyer shares her Lighting and Rendering know-how; Rachel Davidowitz provides her wisdom for working with Bi Frost; we’ve got Animation shortcuts from Taran Matharu; XGen guru Michael Todd helps you with Hair; and Alexandr Novitskiy give a step by step overview explaining how he created his stunning desert dune buggy images.

The full set of tips (along with more in-depth tutorials focussing on Maya) can be found in issue 91 of 3D Artist magazine, on sale here, or available for your digital devices here.

So, onto today’s masterclass:

Screen Shot 2016-04-07 at 15.57.41

Hair & Fur Effects

  1. $cLength Colour Modulation

    Expert: Michael Todd

    You can control primitive colours based on length:

    $mult = ccurve($cLeng th,0,[0,0,0],4,0.958537,[1,0.74902,0.215686],4,0. 534884,[0.878431,0,0],4,0.244186,[0.439216, 0,0],4);
    $clump=$mult*$cLength;
    Expand ($clump,0,1)

    This expression uses a colour ramp and the $cLength parameter to control the primitive’s colour.

     

  2. Animated Archive Frame Offset Expression

    Expert: Michael Todd

    When using animated archive objects, you can use an expression to offset and randomise the animation at a given frame:

    $startFrame=1.0000;
    $endFrame=120.0000;
    $cyc=13;#0,120 (cycle($frame,$startFrame,$endFrame))+(rand(($ aIndex+$id),$cyc))

    This expression cycles the archive object animation and adds a random offset based on the object’s index and ID number.

     

  3. Remove Colliders, Emitters & Accelerators

    Expert: Rachel Davidowitz

    When a previously assigned collider is removed, the Bifröst attributes will no longer be connected in the Node Editor, but they still exist on the Collider Shape Node and appear active in the Attribute Editor and Channel Box. Bifröst attributes can’t be eliminated from meshes after creation.

     

  4. Bifröst High-Quality Mesh

    Expert: Rachel Davidowitz

    Bifröst particles are assigned a liquid shader by default that can be rendered using mental ray. More control of the final look of the liquid can be achieved by enabling Bifröst Meshing in the bifrostShape node and adjusting the mesh settings. Increasing Droplet Reveal Factor, decreasing Surface Radius, decreasing Kernel Factor and Increasing Resolution Factor will all increase detail.

     

  5. $cLength Noise Modulation

    Expert: Michael Todd

    XGen’s in-built expression language, seexpr, can use the final calculated length of the primitives as an input in expressions. Using $cLength, you can have a noise modifier that has more (or less) of an effect on hairs, based on the length of the primitives:

    $mult=0.6850;#0.00,1.00
    $clump=$mult*$cLength;
    expand($clump,0,1)

    This expression multiplies the magnitude of the noise by the hair’s length so that shorter hairs are less affected.

     

  6. Stray Hair Usage

    Expert: Michael Todd

    You can utilise expressions to affect a given percentage of hairs in one way and then affect the rest of the hairs in another way. For instance, you can create a global (float) expression by making use of the Expressions tab to set a percentage value of hairs that are designated stray:

    $percentStray=5;#0,100
    rand() < $percentStray/100.0 ? 1 : 0
    Then use an expression to affect those stray hairs more in the magnitude of a noise modifier: $min=0.0100;#0.00,0.20 $max=1.5750;#0.20,10.00
    $seed=5;#0,10
    $strayMin=0.4550;#0.0,5.0 $strayMax=2.4000;#1.00,20.00 $strayNoise=rand($strayMin,$strayMax,8); $mag=rand($min,$max,$seed);
    $noise=strays() ? $strayNoise : $mag; $fitMax=5.6850;#0.00,20.00
    fit($noise, 0,1,0,$fitMax)

  7. Groomable Spline Mirroring With Masks

    Expert: Michael Todd

    You can use the Mask brush in the groomable spline to mirror chosen areas of the groom. Paint a mask on the splines you want to reflect across the x-axis and then flip to the appropriate side. Only the masked area will be flipped.