Rendering Hair as Mesh Geometry
The Mesh from Strands operator converts strands into actual mesh geometry. Instead of rendering hair as curves, it builds a surface around each strand, which is useful when you need real geometry - for renderers or pipelines that prefer meshes, for stylized and real-time hair, and for 3D printing. It works together with the Change Width Operator placed below it, which defines how thick the generated mesh is.
Types of mesh
Several kinds of mesh can be generated from strands:
- Cylindrical - an N-sided tube around each strand that can be viewed and rendered from any angle. This is the highest-quality option, well suited to thicker strands such as whiskers and quills. Very thin cylindrical strands can show rendering artifacts unless you raise sampling.
- Grouped cylindrical - when grouping is enabled, a single mesh encapsulates a whole volume of grouped strands, giving a procedural, volumetric approximation. This is ideal for real-time use, stylized characters, and 3D printing, and it stays procedural so you can keep editing the hair below and see the mesh update.
- Billboarded (ribbon) - flat strips, cheap to render and good for dense, thin hair, especially with hair shaders. Which way each strip faces comes from the strand twist, or from the Face Camera option described below.
Width and facing
The thickness of the generated mesh comes from the strand width set by the Change Width Operator. For flat, billboarded meshes, the facing direction of each strip is controlled by the strand twist - set this with the Rotating Strands operator.
Face Camera
Face Camera, in the Mesh tool, turns each card about its own centre line as it is drawn so that it faces the viewport camera. The mesh itself is not changed: every card keeps its position, its length and its width, and only the direction its face points in follows the camera. Use it to preview cards the way a renderer which billboards them will show them - it is not a way of baking that facing into the mesh.
The option is stored on the scene geometry showing the mesh rather than on the operator generating it, so the same mesh drawn by two scene geometries can face the camera in one and be left alone in the other.
Face Camera needs flat cards. It is shown but unavailable, with the reason in its tooltip, when the strands were turned into tubes rather than cards (set Result Geometry Type to Ribbon), when their cross sections are curved across their width, or when the mesh is not made of cards at all. Only the shaded display modes turn the cards; wireframe, selection picking and the raytraced modes show the mesh where it actually is.
Texture coordinates
The operator writes one or more sets of texture coordinates into the mesh it generates. These are its mapping channels, and applications count them from zero, so the second channel here is the one an application calls UV1.
The Channels setting decides how many sets the mesh carries, and each one is laid out independently by the settings under it:
- Per Strand Coordinates - give each strand its own run of the coordinate space, from its root to its tip, instead of mapping the strand through the surface it grows from. A texture atlas is a packing of exactly these coordinates, so this has to be on for one to be generated at all.
- Create Texture Atlas - pack the strands' coordinates into islands of a single shared atlas, rather than leaving every strand mapped over the whole coordinate space on top of all the others.
- One Island Per Strand Group - give every strand group one shared island instead of giving every strand an island of its own. Sharing is what a hair card texture wants, since a group's cards then all read the same card texture at the resolution of the whole island rather than a fraction of it.
- Island Padding - how much empty atlas is kept around every island, as a fraction of the whole atlas. This is what a channel needs in order to have a texture baked against it, because a baker spreads what it bakes past the edge of an island and would otherwise spread it onto the neighbouring card.
- Coordinate Stretching - widens each strand's coordinates across the space it is mapped into, which fills the gaps a thin strand leaves between itself and the next.
The settings being per channel is what lets one mesh carry two different layouts of the same cards at once, which is what Hair Cards needs in order to have maps baked against it.
Related
- Change Width Operator - defines mesh thickness.
- Rotating Strands - defines facing for flat meshes.
- Curves from Strands - convert to curves instead of meshes.


