Source/Objects/Hair

Hair Object

The hair object is intended to replace the hair particle system. It is only a prototype at this point.

Data Structures

  • Object can be of type OB_HAIR, and then uses a Hair datablock as object data.
  • Hair is datablock that contains an array of curves and their control points.

Curves

Curves consist of a number of control points defining a Catmull-Rom curve.

Curves reference a subset of the points array with a first point index and number of points. Points have a position and radius.

Arbitrary attributes can be created on both curves and points.

Attachment & Deformation

To be defined.

Rendering

Cycles and Eevee can render hair and their attributes natively as Catmull-Rom curves, for memory efficiency.

Future Work

This object type is still to be developed into an actual hair system, with nodes to procedurally generate hair, and an edit mode for manual editing.

For example we can imagine nodes for the following tasks:

  • Create an initial distribution of hair on a mesh, which is then applied for editing.
  • Generate child hairs.
  • Add curls or any other deformation.
  • Physics simulation

Design object types hair.png