From BlenderWiki

Jump to: navigation, search

This documentation is valid up to Blender version 2.45. We have documentation for a more recent Blender version: Particles

Blender Hair/Fur & Feathers

Overview

Blender has an awesome particle generator that is not only capable of generating particles, but is also capable of creating hair-strands that can be used to create either hair, fur, or even feathers. This is achieved by converting the particles to renderable polygon strands. The polygon strands never go below 1 pixel in size, and this helps keeping rendering artifacts at bay when the rendering engine renders the strands.

Let us begin by taking a look at the particle generator and how it works. This is how the particle generator looks in Blender 2.44:

The particle generator

As you can see in The particle generator you have many options. To find this particle menu you must first create a particle emitter. The particle emitter must be an object of type Mesh. Let's just start by adding a sphere: SpaceAddMeshUVsphere. Give the sphere around 20 segments and 20 lines. Exit to object mode (⇆ Tab).

Now go to your menu section and press F7 to get to the object menu. The object menu has two option buttons: Object (Manual-Part-I-Interface-Context-Object.png) or Physics (Manual-Part-I-Interface-Context-Object-Physics.png). Click the Physics button. There you will find a tab called Particles. Press NEW and you will see the menu just as in fig-1 (except that by default, the two tabs are stacked).

Since we're about to create hair-strands or fur we need to make the particles static. Press static followed by animated if you plan to animate these later on. To draw strands between each particle generated we need to activate vector under the display section - press Vect. If you want the mesh to show during the generation of particle strands you simply press Mesh under the display section.

We need to see the particles now but we haven't informed our generator how to emit these from our mesh-object. To see these - go to the Particle Motion tab and set normal to 0.010. Your sphere should look something like in fig-2. If not, then press the Z key to enter shaded view.

fig-2
fig-2b

They look quite boring don't they? That's because they're just a bunch of strands sticking out of a round ball, you can of course add these to any object you please.

Emitting strands From the mesh

The mesh Emits particles. These particles are like photons; a certain amount of them are emitted, and they have a speed, direction, and life time. The more Amount that are emitted, the denser the hair will be. The longer these particles live ((have a height Life:)}, the longer the hair will be. These particles are packed very close together; many can fit inside a single pixel. It is a wasted of CPU time to calculate redundant particle locations, so set Step: at a low value ((5 is the default).In the 3D views, you do not need to display/calculate 100% of the particles: a lesser percentage in Disp: will speed up your display.

You can also specify where to emit strands From: the entire object, or from just a certain portion of the object. There are two selections here in this section of the panel: Verts (vertices) and Faces. Select one or both as you wish. Verts emits strands only from the mesh's vertices. By default, all verticies emit strands. To emit strands only from a portion of the mesh, define a vertex group (see Manual-Part-I-Interface-Context-Editing.png Editing(F9)) and type the name of the group in the VGroup input box (case sensitive). For example, if you had a human head, you would define a vertex group of Scalp and then enter that here. If you want to also emit hair from the spaces between the vertices (the faces of the mesh) select Faces. You will then get to choose between Random and Even distribution of hair/particles. For more natural/organic hair, choose Random. Dithering is a process of overlaying dots on top of one another to blur and soften. Choose a different dither to suit your hair style.

Let's make the strands better looking! To do this we will need to make the strands ease out and anti-alias into the environment around the object. We can even change the size of the hair strands and how the tip will look like, but more about that later, let's take a look at how we map the strands to look real soft and fluffy.

Strand Shader

The strand shader has been implemented to follow the direction of the new strand polygons. In other words if you select strand and place a texture or a gradient - it will follow the direction of the strands. And we're going to use gradients to shade the strands so they fade out to nothing - giving us an illusion of a much higher resolution, this is known as anti-aliasing. You can't really render smaller than one pixel anyway - so we use this "trick" to make the hair-strand tips smaller and fade into oblivion.

fig-3

As you can see from fig-3 you're now in the material menu (F5). From there you need to create a new material and add a texture, actually it would be practical if you create 2 materials if you intend to keep the original mesh-object as well as the particle strands, but for now we will concentrate on shading the particles. Please make your selection exactly as shown in fig-3. Strand activates strand mapping and Alpha activates the alpha channel. The alpha channel contributes to making textures opaque and the texture background invisible. This is the trick we discussed earlier to make the texture fade out to nothing.

Let's go work on the "fading texture". We're going to add a Blend gradient to our texture slot-1. Check out fig-4.

fig-4

Now we're going to add color gradients to our blend-gradient texture, press Colorband, in the Colors tab. Change the default color of the first line marker to white with an alpha of 1.0 by LMB Template-LMB.png-clicking on it and moving all the color sliders to 1.0 and the Alpha slider to 1.0. Make the second line marker black in the same way, this time making the alpha 0.0. Make sure that you have the Alpha button selected in the Preview panel. If you've done everything correctly - things should look as in fig-5.

fig-5
fig-6

Ok, now that we've made the gradients ready to help create our fade effect on the particle strands, go back to (F5) the material menu and untick the COL button from the Map To tab (fig-6). The reason we do this is to use our own colors instead of the color gradient we made earlier. We just wanted to use that as a fade gradient from 100 % opaque to 0.

Now we're going to make a "hair" color, just go to the material menu and adjust the colors as you see fit and slide the Alpha slider (A) to zero. We do this to make the alpha channel gradient we made in fig-4 control our alpha 100%. You can of course adjust this here to your liking if you don't want 100% alpha, but do this for now.
fig-7


If you did everything as described above and press F12 to render, your render should look something like fig-8.

As you can see - we now have soft "fluffy" hair strands, but we can do even more yet before we add more particles. Blender has yet another option under the material menu, Links and Pipeline tab, Strands button, called tangent-shading. The tangent-shader creates a thicker/thinner hair/fur-strand curve depending on the length of your particle strands. You can adjust it to make the strands start out or end thicker/thinner and how sharp/rounded they will be.

I've set the shape to -0.900 (fig-9) so it's really "spikey".

fig-9
fig-8
fig-10
And if you render it, fig-10 shows how it would look.


Now that you've done all the footwork you're ready to have a LOT of fun with hair/fur, let's go back to the particle editor and create a lot of fur.

In your particle menu - let's add a lot more particles...say 20000 of them, if you don't have a very strong computer you can change the DISP value to display 20 percent or so and when you play with particles, only 20 percent of them will show up in your viewport but at rendertime - all particles will be present.

Now that we have a lot of particle strands let's add some weight to it. As we know...gravity goes downwards so we change the z-force value to about -0.02 and to make our fur a bit frizzy and random looking - add 0.005 to the Random widget under the Velocity: section. To create an even better looking distribution of our fur we could get our particles to emit from vertices (Verts) and Faces both randomly and evenly, you can set this as in fig-11 under from.

fig-11
fig-12

If you render this, it will look something like in fig-12. If it doesn't, then it's possible that your light setup is very different from the one used in the example. Lights are very important to particle-strands, obviously because of shading. If you need to do proper lighting then check out the lighting tutorials or lights section in the manual and do this tutorial over again, you can get awesome results if you do your homework when it comes to proper lighting.

Let's make hair with hairguides

That's remarkably easy to do with the new guides, all you have to do in order to guide the hairs in your new hairball is to add a curve and tell it it's a curve guide. To do that SpaceAddCurveBezier Curve and with the curve selected go to your F7 menu and take a look in the dropdown menu found under the fields and deflection menu:

fig-13
fig-13b

Now that you have selected it to become a curve guide you will see that it instantly affects your particle furball. As you also might see - the shape of the hair is now conformed to the guide. You're of course free to shape the curve any way you see fit, Blender will real-time update when you move the bezier curve segments around and add new segments with E for extrude.

Again I cannot stress enough how important lights and shadows are to get quality hair, learn to do your light setup well and you will be rewarded with lush and beautiful looking hair. A good way to get shiny clean hair is to reduce specularity just a tad and increase the hardness value to about 70-100.

A thing you might want to do in order to render more lush "fluffy" hair is to select the Ztransparency (ZTransp) option found in the Material buttons (F5), Links and Pipeline tab. This will render the strands in alpha layers with transparency making it antialias even better and give you totally awesome results, of course...this WILL cost you render time but it's well worth it. You can use Ray-Transparency (Ray Transp, Mirror Transp tab) and set depth to whatever you see fit - and it will render somewhat faster, but it won't look nearly as good as with Ztransparency.

fig-14

Nice hair huh? Want to see the settings for it? Here you go, check out fig-15.

fig-15

Let's take a look at what we've done to get that nice hair. I made the previous object a bit smaller by scaling it so the start-emitter of the hair would be smaller (just for effect - really). Then I blew up the Normal (speed) value found under the Particle Motion section (Velocity:), gave it a little random-life (0.4) to vary the speed a bit. I also scaled and moved around the bezier curve guide to affect the hair try these variations - you'll be surprised how flexible it can be and how many variations you can make.

Want to get even more advanced? Read on...

Advanced hair

fig-16
You can use multiple curves to guide your hair around. Make a duplicate of your curve and tilt them both slightly as shown on fig-16.
fig-17
Now check out the F7 menu - fields and deflections again and press the Additive button. This button creates an approximation field with your curve guides so when you blend two or more together - it will affect parts of your hair-strands depending on your settings in MinDist and Fall-off. Make a small MinDist value such as shown in fig-17 for both curves and experiment with the Fall-off values (small numbers to start with). If you now mix these two curves together placing them close to the hair emitter you can see the effect real-time and adjust the Fall-off/MinDist/MaxDist values accordingly. These values will depend on your curves, number of segments and emitter size etc, so in other words they will vary with your own creations.

If you've done everything correctly - you should be able to control your hair splitting it into sections such as shown here:

fig-18

As you can see from fig-18 you now have full control over where you put your hair. You can even vary the length of each "curve" so it will affect the length of the hair that are near the curve.

It doesn't end here - not by a long shot! There's nearly no end to how much you can control your hair with Blender. You can twist it around, knit it, swirl it, toss it and yes do anything you want with it. Become a world famous hairdresser - your characters will never go bald again.

Tommy Helgevold (JoOngle)

Hair tutorials

See Also



Introduction
What is Blender?
Introduction
Blender’s History
License
Blender’s Community
About this Manual
What's changed with Blender 2.4
Installing Blender
Introduction
Python
Installing on Windows
Installing on GNU/Linux
Installing on Mac
Installing on other Operating Systems
Configuring Blender
Directory Layout
Starting
The Interface
Introduction
Keyboard and Mouse
Window System
Arranging frames
Headers
Console window
Window Types
Screens (Workspace Layouts)
Scenes
Configuration
Modes
Contexts
Menus
Panels
Buttons and Controls
Internationalization
Your First Animation
1/2: A static Gingerbread Man
2/2: Animating the Gingerbread Man
The Vital Functions
Quick render
Undo and Redo
Default scene
Screenshots
Help!
Setting Preferences
Configuring Preferences
Interface
Editing
Themes
File
System
Interaction in 3D
Introduction
Introduction
Navigation
Introduction
3D View
3D View Options
3D View Usage
Camera View
Layers
Local or Global View
Sketch in 3D Space
Introduction to Grease Pencil
Drawing sketches
Layers and Animation
Converting sketches to geometry
Transformations
Introduction
Basics
- Grab/Move
- Rotate
- Scale
- Gestures
Advanced
- Mirror
- To Sphere
- Shear
- Warp
- Push/Pull
Transform Control
Introduction
Precision of Transformations
Numeric Transformations
Transform Properties
Reset Object Transforms
Manipulators
Transform Orientations
Axis Locking
Pivot Point
- Active object
- Individual Centers
- 3D Cursor
- Median Point
- Bounding Box Center
Snapping
Snap to Mesh
Proportional Edit
Data System and Files
Blender's Data System
Blender's Library and Data System
Blender's Datablocks
Scenes
Working with Scenes
The Outliner Window
Appending and Linking
File operations
Introduction
Opening blender files
Saving blender files
Modeling
Introduction
Introduction
Objects
Objects
Selecting Objects
Editing Objects
Groups and Parenting
Tracking
Duplication
- DupliVerts
- DupliFaces
- DupliGroup
- DupliFrames
Mesh Objects
Meshes
- Mesh Structures
- Mesh Primitives
Selecting
- Selectable Elements
- Selection Basics
- Advanced Selecting
- Selecting Edges
- Selecting Faces
Editing
Basic Editing
- Translation, Rotation, Scale
- Adding Elements
- Deleting Elements
- Creating Faces and Edges
- Mirror editing
Vertex Editing
Edge Editing
Face Editing
Deforming Tools
- Mirror
- Shrink/Fatten Along Normals
- Smooth
- Noise
Duplicating Tools
- Duplicate
- Extrude
- Extrude Dup
- Spin
- Spin Dup
- Screw
Subdividing Tools
- Subdivide
- Subdivide fractal
- Subdivide smooth
- Loop Subdivide
- Knife Subdivide
- Bevel
Miscellaneous Tools
Retopo Tool
Sculpt Mode
Multi Resolution Mesh
Vertex Groups
Weight Paint
Mesh Smoothing
Curve Objects
Curves
Selecting
Editing
Advanced Editing
Surface Objects
Surfaces
Selecting
Editing
Text Objects
Texts
Editing
Meta Objects
Metas
Editing
Empty Objects
Empties
Group Objects
Groups
Scripts
Modeling Scripts
Modifiers and Deformation
Introduction
Introduction
Modifiers Stack
Modify
UVProject
Generate
Array
Bevel
Booleans
Build
Decimate
EdgeSplit
Mask
Mirror
Subsurf
Deform
Armature
Cast
Curve
Displace
Hooks
Lattice
MeshDeform
Shrinkwrap
SimpleDeform
Smooth
Wave
Simulate
Cloth
Collision
Explode
Fluid
Particle Instance
Particle System
Soft Body
Lighting
Introduction
Introduction
Lights
Introduction
Light Properties
Light Attenuation
Light Textures
What Light Affects
Lights In Other Contexts
Shadows
Introduction
Shadow Properties
Raytraced Shadow Properties
Volumetric Lights
Introduction
Lamps
Introduction
Lamp Light
- Raytraced Shadows
Spot Light
- Raytraced Shadows
- Buffered Shadows
- Halos
Area Light
- Raytraced Shadows
Hemi Light
Sun Light
- Raytraced Shadows
- Sky & Atmosphere
Lighting Rigs
Radiosity
Introduction
Rendering
Baking
Scene Light
Ambient Light
Ambient Occlusion
Exposure
Exposure
Materials
Introduction
Introduction to Shading
Materials Introduction
Usage
Assigning a material
Material Preview
Material Options
Multiple Materials
Properties
Diffuse Shaders
Specular Shaders
Ambient Light Effect
Color Ramps
Raytraced Reflections
Raytraced Transparency
Subsurface Scattering (SSS)
Strands
Node Materials
Material Nodes
Nodes Editor
Node Controls
Nodes usage
Nodes Groups
Material Node Types
- Input Nodes
- Output
- Color
- Vector
- Convertor
- Dynamic
Vertex Paint
Using Vertex Paint
Halos
Halos
Textures
Introduction
Introduction
UV/Image Editor
Common Options
Texture Stack
Texture Types
Texture Types
Procedural Textures
Image Textures
Video Textures
Texture Nodes
- Nodes Editor
- Node Controls
- Nodes usage
- Nodes Groups
-- Textures Input Nodes
-- Textures Output Nodes
-- Textures Color Nodes
-- Textures Patterns Nodes
-- Textures Textures Nodes
-- Textures Convertor Nodes
-- Textures Distort Nodes
Texture Plugins
Texture Painting
Painting the Texture
- Projection Paint
Mapping
Mapping
Environment Maps
UV Unwrapping Explained
- Unwrapping a Mesh
- Managing the UV Layout
- Editing the UV Layout
- Applying an Image
Influence
Influence
- Material
-- Bump and Normal
-- Displacement
- Particles
- World
World and Ambient Effects
World
Introduction
World Background
Ambient Effects
Mist
Stars
Rigging
Introduction
Introduction to Rigging
Armatures
Armature Objects
Panels overview
Bones
Visualization
Structure
Selecting
Editing
- Bones
- Properties
- Sketching
- Templating
Skinning
Introduction
Linking Objects to Bones
Skinning to Objects’ Shapes
Retargeting
Posing
Introduction
Visualization
Editing Poses
Pose Library
Using Constraints
Inverse Kinematics
Constraints
Introduction
Introduction
Constraints Common Interface
Constraints’ Stack
Transform Constraints
Copy Location
Copy Rotation
Copy Scale
Limit Distance
Limit Location
Limit Rotation
Limit Scale
Transformation
Tracking Constraints
Clamp To
IK Solver
Locked Track
Stretch To
Track To
Relationship Constraints
Action
Child Of
Floor
Follow Path
Null
Rigid Body Joint
Script
Shrinkwrap
Animation
Introduction
Introduction
The Timeline
Markers
3D Views
Animation Editors
Animation Editors
Ipo Editor
Ipo Curves and Keyframes
Ipo Datablocks
Ipo Types
Ipo Editor Interface
Editing
- Ipo Curves
- Keyframes
Ipo Drivers
Action Editor
Editing Action Channels
NLA Editor
Editing NLA Strips
Strip Modifiers
Animation Techniques
Introduction
Animating Objects
- Using Constraints
- Moving Objects on a Path
Animating Shapes
- Shape Keys
- Editing Shape Keys
- Animating Shape Keys
- Shape Keys Examples
Indirect Shape Animation
Animating Armatures
- Stride
Animating Lamps
Animating Cameras
Animating Materials
Animating Textures
Animating World
Physical Simulation
Introduction
Introduction
Dynamics
Force Fields
Collisions
Particles
Particles
Types
Physics
- Newtonian
- Keyed
- Boids
Visualization
Controlling Emission, Interaction and Time
Cache & Bake
Hair
Children
Vertex Groups
Particle Mode
Soft Body
Introduction
Exterior Forces
Interior Forces
Collisions
Simple Examples
Combination with Armatures
Combination with Hair Particles
Reference
Cloth
Introduction
Fluids
Fluid
Using the Game Engine
Using the Game Engine
Rendering
Introduction
Introduction
Camera
The Camera
Perspective (Vanishing points)
Depth Of Field
Render
Displaying Renders
Basic Options
Antialiasing (Oversampling)
Rendering Animations
Panoramic
Render Baking
Using the Command Line
Output
Output
Video Output
Effects and Post Processing
Introduction
Render Layers
Render Passes
Edges & Toon
Stamp
Color Management & Exposure
Depth Of Field
Motion Blur
Render Performance
Rendering Performance
Distributed Rendering
External Render Engines
Introduction
YafRay
Compositing with nodes
Composite Nodes
Introduction
Nodes Editor
Node Controls
Nodes usage
Nodes Groups
Composite Node types
Composite Node types
Input Nodes
Output Nodes
Color Nodes
Vector Nodes
Filter Nodes
Convertor Nodes
Matte Nodes
Distortion Nodes
Editing Sequences
Introduction
Introduction
The sequencer
Usage
Sequencer Modes
Sequence Screen Layout
Effects
Built-in Effects
Plugin Effects
Audio
Audio Sequences
Extending Blender
Introduction
Introduction
Python Scripting
Python Scripting in Blender
Setting up Python
The Text Editor
A working example
References
Python Scripts
Script Catalog
Bundled Scripts
Plugins
Blender's Plugins System
Texture plugins specifications
Sequence plugins specifications
Game Engine
Introduction
Introduction
The Logic Editor
Usage
Game Properties
Sensors
Introduction
Sensor Types
Controllers
Introduction
Expressions
Actuators
Introduction
Action
Camera
CD
Constraint
Edit Object
Ipo
2D Filters
Game
Message
Motion
Parent
Property
Random
Scene
Shape Action
Sound
State
Visibility
Cameras
Cameras
Dome Camera
Physics
Physics Engine
Material Physics
Object Types
- Static
- No Collision
- Dynamic
- Rigid Body
- Soft Body
- Occluder
- Sensor
Python API
Bullet physics
VideoTexture
Various resources
List of Features
External resources
Game Engine Basics (BSoD Tutorial)
FAQ