Hair Motion
There are three effects: hair that moves, hair that is shorter on one character than another, and hair that
grows over time. All three read the same three numbers. Nothing on this page needs a fourth
channel, and that is the argument for there not being one.
This is the mesh side of the contract. It says what R, G and B have to be for the effects to
work. It does not say how the effects are implemented. That gap is described below.
Hair Cards is the contract: what each channel carries and which colour field ships.
This page is what those channels are for. Make a Hairstyle is the pipeline both sit inside.
All three effects fall out of R and G
R is position along the card. G is a per-card constant. Between them they give every card a
where and a which one, and that is everything the three effects need.
| Movement | Displacement scales with R and is gated by stiffness: amplitude × R × (1 − B). The phase of each card is offset by G, so a head of cards drifts instead of pulsing as one object. |
| Length | A card is drawn where R is below a threshold and faded out above it. The threshold is per style, varied per card by G so the ends break up instead of cutting in a line. |
| Growth | The same threshold, animated from 0 to 1 over time, with each card's start offset by G. Hair grows in at slightly different moments rather than the whole scalp rising together. |
Two things follow from the arithmetic and are worth saying out loud.
Displacement is zero at the scalp for free. R is 0 there, so the root of every card is pinned
by the formula rather than by a mask somebody has to paint. A card whose R does not start at 0
(MSH022's first finding) tears away from the head, and it does so only while moving.
B is the gate, not a multiplier on top of one. At B = 1 the (1 − B) term is 0 and the card
is rigid whatever R says. That is how a braid stops swinging, and it is
why stiffness is authored rather than derived. → Hair Cards > Why B is stiffness and not length
What each tier needs
The tier is decided by one question, how does it move?, which is also what this page is
about. → Hair
| Tier | What moves it | What it needs from this page |
|---|---|---|
| Groomed | A bone chain or physics, plus whatever reads these channels | All three channels, correct. This is the only tier where a wrong R or a duplicated G is visible. |
| Capped | The head transform, and nothing else | R and G still ship, because a capped style is re-baked as groomed often enough that a second contract would be a second thing to get wrong. B is 1 across it. |
| Painted | Nothing. It is in the skin texture | No cards, so no channels. → Make a Texture Set |
A Capped style that is given movement is the usual way a beard ends up swinging. The cards are
rigid to the jaw by intent, and the intent lives in B.
The other half of this contract
Everything above is the mesh half: what R, G and B must be for the three effects to be
possible. What actually consumes them (the material, the pass, the sort order, whether hair is
drawn with a depth prepass) is not written down anywhere in this vault yet. Nothing here
describes how hair is rendered today, and guessing at it would only give people something wrong to build against.
The renderer is one we are building ourselves, so there is no stock pipeline documentation to
point at in the meantime. It gets written down when it exists.
When it is, link both ways: the render-side page points at this contract, and this section becomes
a link to that page.
Nothing about a particular renderer's features is on this page on purpose. A formula is true
regardless of how it is evaluated; a feature name is true until somebody changes a package version.
The one thing that is safe to say from the mesh side: overdraw is not made free by anything the
render side might do with these channels. That is why the budget is a mesh budget.
→ Hair > The budget
See also
- Hair Cards: the channel contract this page reads
- Hair: the three tiers and which one a style is
- Grooming: the groom, and why the cards are the disposable half
- Make a Hairstyle: the steps, in order
- Characters: the rest of what a character is made of
- Asset Rules (Generated) > hairCards: the values, generated