Ever since I saw a demo of ZBrush 4's FiberMesh feature, I've been itching to try it out on some 3D art. When I finally got my hands on the release I decided I should do a project using FiberMesh. At first I wanted it to be just a character with fur sitting on a rock, but I soon found myself expanding the environment and adding detail.
I'm amazed how quickly you can create fur and hair with FiberMesh. At the studio where I work, I've often struggled with hair and the fact that you can't really see the result until you render out an image, which can take a while. With FiberMesh you have a great representation in the viewport and can render out an image really fast. Another useful aspect of FiberMesh is the front collision tolerance feature. This helps to avoid intersection between your growth mesh and the FiberMesh, something that happens way too often by mistake in other 3D applications when you try grooming.
This tutorial will focus on grooming in ZBrush, and how I created the fur in this issue's cover image. The grass in the final render was FiberMesh and the leaves combined FiberMesh and MicroMesh, while the plants were done in ngPlant.
- Find the supporting files for this ZBrush tutorial here.
01. Polygrouping the growth mesh
FiberMesh inherits the polygroups of the geometry that the FiberMesh was created from. In order to work easily with the fur of different body parts, it's crucial that you separate the limbs into different polygroups. This means that you can work with the fur on the arm with a big brush size without having to worry about messing up the fur on the torso.
I'll also look at different masking and selection tools that can help you create polygroups fast. Setting up hotkeys for frequently used commands is also covered in this tutorial.
05:50 The polygrouping workflow
Go down to the lowest subdivision (Shift+D) and use masking with Transpose and/or the Mask Pen to mask a limb. Hide the unmasked polys via Tool > Visibility > HidePt. You can set this to a hotkey by holding Ctrl+Alt and clicking the button, and pressing a key on your keyboard. I’ve set it to H.
Adjust the visible polygons by masking, inverting the mask (click on the document) and hiding unmasked polygons. You can also grow and shrink visibility in Tool > Visibility (I've set hotkeys for this using + and -). Another great tool is the Select Lasso brush, which you can choose from the Brush menu. Use the Select Lasso brush (Ctrl+Shift-click and drag) and set it to hide polygons (Alt). You can also invert your visibility by Ctrl+Shift-clicking and dragging on the document outside the geometry.
Group visible polygons via Tool > Polygroups > Group Visible. I've set Shift+G as a hotkey for this command. (In the process I removed the hotkey for Projection Master, which has the default hotkey Shift+G.) Repeat these steps for all limbs and desired polygroups.
02. The FiberMesh settings
There are a lot of functions and sliders in the FiberMesh settings. The most important settings to get right when creating fur are MaxFibers, Coverage and Segments. Be clear what settings you need before you start - they can't be changed after you hit the Accept button. However, you have procedural control over Root and Tip Anisotropic, Subdivisions, Sides and Radius.
Since there are quite a few settings for FiberMesh I won't go over each and every one, but you can use ZBrush's built-in documentation to get further information: just hover your mouse pointer over the setting and press Ctrl, and a small window with information text about the settings will be shown on your screen.
07:53 Change the Gravity setting
The Gravity slider in the FiberMesh settings controls how much the FiberMesh will bend towards the centre of gravity (down). Remember that gravity direction is defined by the orientation of the camera. If you rotate the camera - so that your character's head is pointing down - the fibres will also point in that direction when changing the Gravity settings.
03. Masking the character
FiberMesh growth is determined by the mask intensity of a character. Mask out the area where you wish to grow fur with the Mask Pen. Blur your mask (Tool > Masking > BlurMask) to get a better transition between the skin and fur areas of the model. When painting thin geometry areas, activate backface masking on your brush so you don't paint on both sides of your model by accident. Hold down Ctrl (Mask Pen) and activate backface masking via Brush > Auto Masking > BackfaceMask.
03:26 Paint the masks
It's easier to see where you've painted masks if you temporarily deactivate polypainting on the model. This is done by clicking the Brush icon in Tool > SubTool. I've also turned on surface noise on the model (Tool > Surface > Noise).
04. The initial settings for FiberMesh
You may be used to other kinds of hair and fur systems, but FiberMesh is different. With FiberMesh you start by changing procedural settings such as Coverage, Length, Twist, Segments and so on. In order to groom the hair with a brush you press the Accept button and the FiberMesh is converted to its own subtool.
The only procedural settings that you can change after this stage are Root and Tip Anisotropic, Subdivision, Sides and Radius. You do, however, have a large amount of control with ZBrush's groom brushes. ZBrush also tracks the shape of other subtools, so the fibres are groomed along the shape to avoid intersection.
03:58 Choose your FiberMesh settings
Test rendering is a great way of getting a better representation of fur while working with your settings. The hotkey for rendering is Shift+R. Don't forget to change the SubPixel Antialiasing Render Quality to 1 or 2 to get rid of the jagged look of the fibres. I usually have this setting at 3 when rendering the final image, but 1 or 2 is good for test-rendering fur.
05. The grooming tools
Before you start grooming, it's important to get an understanding of the grooming tools. Grooming in other 3D applications can be time-consuming. One issue that can arise is intersection between the growth mesh (the body, in this case) and the fur. ZBrush developer Pixologic has solved this by adding a new feature to the Brush menu called Front Collision Tolerance.
This samples visible subtools and tries to groom the fur so that it's on top of those subtools. By increasing this value the fur gets more volume, and if you lower it the fur will be tightly groomed to the body. These settings are global, so you change them for all brushes at once.
00:22 Start grooming
When it's time to start grooming I usually double the size of my document (Document > Double) and turn on AAHalf (Document > AAHalf or Ctrl+0) to get a smoother representation of the fur in the viewport. It slows down the system, though, so if you decide to turn this on you should set SubPixel Antialiasing Render Quality to 0.
It's also good to activate Fast Preview in the FiberMesh settings when you're creating fur. By doing this you're only affecting the curves of the FiberMesh and not the actual geometry.
06. The first grooming pass
Select the GroomHairLong brush and scale up your brush size. It's best to just start by grooming the general direction of the fur. Use the masking brushes and isolate polygroups so you don't groom an area by mistake. It's the face that needs the most attention when it comes to general direction. Don't forget to change the Front Collision Tolerance in the Brush settings to make the fur look just the way you like it.
01:30 General grooming
Since the FiberMesh inherited the same polygroups as the original mesh, you can mask out all fur but the head with the following workflow. First, you need to Ctrl+Shift-click the fur on the head to hide all other fur, then Ctrl-click on the document to mask all visible. Ctrl+Shift-click the document to show all hidden fur in the subtool, and Ctrl-click on the document to invert the mask. You can press Ctrl+H to hide the mask if you wish. If you only wish to mask a part of the fur and not isolate by visibility, you can choose the Move tool (W) and then Ctrl-click the polygroup. This will mask all polygroups but the one that you clicked on.
07. The second grooming pass
Now make the fur on the cheeks longer to match the concept drawing. For this you'll use the Groom Lengthen brush. It doesn't add any more segments to the fibres, it just makes them longer. You'll also create a random masking brush with a Spray stroke and a small Alpha to mask strands of fur. Using layers and morph targets when grooming is a great non-destructive workflow.
When using Fast Preview in the FiberMesh settings (only showing the curves of the FiberMesh), the colour will turn black when you create a new layer. This is easily fixed: just go to Color > Fill Object and the FiberMesh will get a new colour.
03:01 Create a mask brush
To create a new mask brush you can select the Mask Pen brush and then choose Clone in the Brush menu. This will make a new copy of the brush that you can edit without messing up the original. Change your stroke to Spray, then maximise Placement in the Stroke menu and minimise Flow. Choose Alpha 40 in the Alpha menu.
Don't save the brush in the ZBrush Installation folder - this can cause problems when installing a new release of ZBrush, removing any custom brushes that have been saved. Instead, I save the brushes in another location, create a shortcut and put that shortcut in the ZBrushes folder in the Installation folder.
08. Adding clumps
Next I'll start grooming clumps. It's important to remember that because FiberMesh isn't procedural after you click the Accept button, the clumps will disappear if you continue grooming with a common groom brush such as GroomBrush1. Therefore it's crucial to create the clumping on a separate layer. If you need to work on the general grooming, just turn off the clumping layer and groom. When you display the layer once more, the clumps will be shown.
00:00 Create clumps of fur
If you've created clumps and want to try to groom the fur a bit differently, you can easily turn off the clump layer and then groom the fur just the way you like it. Remember to do your test grooming on a separate layer in case you want to go back. A handy trick is to turn off the layer with the new grooming, create a snapshot (Shift+S) of the character on the document and then turn on the layers once more. Using this workflow, you can easily check the difference between the old grooming and the new grooming. Afterwards you can clear the snapshot by pressing Ctrl+N.
09. Creating the fur on the tail
Now you'll create fur for the end of the tail; this is a good opportunity to repeat everything you’ve learnt so far. I'll show you the first pass, second pass and clumping of the fur on the tail in this video. The difference in the FiberMesh setting is mostly that the fibres are longer. If I were to repeat the process, I think I'd add more segments to the FiberMesh, as it's much longer than the fur on the body.
03:10 Add the tail fur
I created a new layer before I started grooming the clumps. After I finished grooming, I wanted to decrease the intensity of the clump but retain the overall shape of the fibres.
To do this, I increase the fibre layer's intensity and adapt the shape to match what it was before. This is useful if you happen to drag the slider and don't remember the original intensity. To make a new layer with an Intensity of 1 and the desired shape, do the following: create a new layer and put it beneath the layer in question, then merge the original layer down on the new layer. You'll end up with the correct shape, but with an Intensity of 1 on your layer.
10. Tweaking the character's fur
Next, you'll add some final tweaks to the character's fur. The fur on the ears is tightly groomed to the skin, so you'll break up the profile a bit. Use the random masking brush you created and mask out random strands of fur, then invert the mask. You can also groom some stray hairs that seem messy and throw the creature's profile off. If you use the Mask Pen or your random mask brush, the masking will be applied to the entire fibre that's affected by the mask brush. If you use the Mask Lasso brush, you can mask out single vertices of the fibres. After masking and inverting the mask, you can use the GroomHairLong brush to groom the stray hairs tighter to the body.
14:32 Final changes
When polypainting in ZBrush, I usually paint the big colour tones first as a base, and then add small details and variations on separate layers so I can dial them up and down. When painting the fur on a new layer, you'll see that a strange effect is created. To fix this, go to the FiberMesh settings and deactivate Fast Preview. Now you can paint on the fur using layers without a problem.
11. Exporting to another 3D app
There are three options for exporting FiberMesh. First is an OBJ version, which is an exact mesh version of your FiberMesh. This can be accessed via Tool > Export. You can also export the FiberMesh as curves. In my opinion this is the best export option when working with fur, because other fur and hair systems can use these curves as guides. If you go to Tool > FiberMesh > FastPreview you can view the FiberMesh as curves and the PRE Vis slider determines what percentage of the fibres should be visible and exported. The third option is to export the FiberMesh as vector displacement.
02:18 Vector displacement
If you choose the option to export the FiberMesh as vector displacement, it creates an OBJ with no UV overlapping where every fibre is represented by a triangular polygon with four vertices.
It also exports a vector displacement map, which can be either world or tangent coordinates and 32 or 16-bit.
Words: Daniel Bystedt
Daniel Bystedt studied CG at Digital Graphics, Nackademin in Stockholm. When he graduated he got project employment at 3D animation company Milford Film & Animation, and was later promoted to lead modeller.
This article originally appeared in 3D World magazine