A coat needs more than coverage
Covering a character with hairs is only the beginning. If they all stand straight out, the character becomes a brush. If their directions vary without structure, the coat can break into noisy patches. We wanted the fur to follow a muzzle, run along a back and separate around an eye, while leaving its length and fluffiness easy to change.
The reconstructed characters already carried part labels: nose, cheek, back, limb, ear. Those names gave us places to apply grooming rules. They did not contain a finished groom. The direction also needed the mesh surface, the skeleton and measured feature locations. The mouse and fox examples here show how those inputs became an automatic starting coat.
Give each rule a direction on this surface
Start with one point on the face. The initial candidate direction runs from the measured nose centre to that point: point minus nose centre. This sends the flow outward across the muzzle instead of giving every face the same world-space arrow. Along the body, the skeleton supplies the head-to-body direction; limbs follow their chains toward the tips.
The candidate still has to lie along the skin. At each point, the mesh normal is the arrow pointing out of the surface. Subtract the candidate’s component along that normal, then normalize the remainder: f − (f·n)n, where n is a unit normal. For example, a candidate (1,1,0) on a surface with normal (0,1,0) becomes (1,0,0). Its outward component is removed, leaving the direction in which to comb.
The candidate points out of the skin
The diagonal candidate f contains an outward component along the surface normal n. The pale dashed line shows the normal; it is not a fur strand.
Remove the outward component
Subtract (f·n)n. Here (1,1,0) becomes (1,0,0): the solid arrow lies along the surface. The remainder is normalized before use.
The ear needs its own direction
An ear needs its own measurement. A hanging ear’s bone can run in a different direction from its blade. The ear rule finds the seam where ear triangles meet the head, averages that seam for the base, and averages the farthest tenth of the ear vertices for the tip. Tip minus base gives its long direction. The outer ear uses that axis; the inner-ear rule can lean toward the rim. These candidates are projected onto the local skin too.
Neighbouring points then share their directions and are projected back onto the surface. This smooths a useful initial field—a direction at each mesh point—without pretending that a label such as “ear” already tells us where its tip is.
Where the fur grows is a different decision from which way it points. A 1 October 2026 browser prototype used layered fur surfaces, called shells. Its ear test keeps a bare centre while fur grows around the rim. A good comb direction cannot compensate for the wrong coverage mask.
1 October 2026, an earlier shell-and-fin browser prototype. These images test fur coverage; they do not show the later measured ear axis or strand field.
The same back label needs different rules
An upright mouse and a horizontal fox should not receive the same back rule. In the regional table, an upright back combs down the body; a horizontal back combs away from the head toward the rear. The label selects the region, while the body’s measured frame gives “down” and “back” their directions.
The first posture estimate looked for the torso’s longest axis. That failed on the round mouse in a T-pose: its broadest direction ran across the outstretched arms. The source records an up-alignment of 0.33 and a mistaken horizontal classification. We changed the preference to the spine’s axis, using torso geometry as a fallback.
The rule compares the axis with up. An absolute alignment above √½, about 0.707, means it is within 45 degrees of vertical. In the 6 October records, the mouse’s spine-derived value was 0.995 and the fox’s was 0.553. The former selected the upright rule, the latter the horizontal one. This is a measured posture decision rather than a rule keyed to the animal’s name.
It remains a coarse choice. A curved spine or an unusual pose can make the estimate ambiguous, so the implementation also accepts an explicit posture override. The geometric guess is useful when it is inspectable and correctable.
Upright body: comb down
For an upright body, the back rule points down. The dashed spine reference makes the frame visible.
Horizontal body: head toward rear
For a horizontal body, the back rule points away from the head toward the rear. The same label receives a different direction.
Ear: measure its own long direction
Average the attachment seam for the base, then the farthest tenth of ear vertices for the tip. The straight arrow joins those two means.
A part must separate the clumps as well as the arrows
A coat needs places where neighbouring hairs deliberately go different ways. Paired left and right labels supply a midline: average the centres of each pair, then use the direction between the sides to define a plane. Near that plane, the regional rule nudges the comb toward its own side. With no paired labels, the method cannot derive this part.
Turning the arrows is not enough if a clump still pulls hairs across the division. A clump is a small group of hairs gathered toward a guide. Here its group includes both the grooming region and the side of the midline, so one lock cannot gather strands from opposite sides of the part. The table also gives the muzzle finer groups and the tail coarser ones.
This follows an established grooming distinction. Houdini’s workflow separates local grooms for different areas; XGen’s region maps stop guide influence crossing a part. Our adaptation uses the character’s existing labels to construct those regions automatically. The exact lengths, lean and clump sizes remain style choices in an editable table.
Clump strength also changes how we read a coat. In the 1 October 2026 shell-fur prototype, moving it from 0 to 1 turned a fine surface into much larger locks. The recorded length, direction, curl, density and view stayed fixed. That gives us a useful look at grouping; the separate schematic explains why those groups must also respect a part.
One clump can pull across the part
A shared guide gathers roots from both sides. The left-hand strands cross the dashed midline even though the direction arrows point away from it.
Keep each clump on its own side
Including both region and side in the clump group keeps guide influence from crossing the part. Each side gathers toward its own guide.
1 October 2026, shell-fur prototype. Only the recorded clump setting changes in this pair. This illustrates clump strength, rather than proving the later strand model’s midline rule.
Let the flow turn around the eyes
A nose-relative field can still point across an eye opening. The next pass adds constraints from the actual surface. Eye anchors help identify the skin’s open boundary loops; directions close to a rim are encouraged to run along it. Ear-base label boundaries provide another set of rings. The nose pushes flow outward, while the crown and tail tip attract it.
Each constraint fades with distance measured along mesh edges. That matters on a folded surface: two points can be close through the air but far apart along the skin. On sufficiently elongated limb, ear and tail regions, local curvature also supplies a preferred long direction. Round regions do not provide the same evidence.
The solver repeatedly combines neighbouring directions, these constraints and a weak copy of the regional groom. Each update is projected onto the skin and normalized again. The default is 40 passes. This is a local relaxation method: it lets nearby directions settle around the constraints, rather than replacing the whole coat with one facial rule.
The mouse report found two eye rims and two ear-base rings. The separate views below make the directions large enough to inspect: compare the regional starting field with the solved directions, then look at the coat. A missing loop is reported as missing; the method cannot invent an opening from a part name.
The initial flow can cross an opening
Arrows run away from the nose. Two enter the eye opening; their pale dashed portions expose the crossing. A nose-relative rule alone cannot turn them around the rim.
A rim constraint turns nearby directions
Near the boundary, directions turn along the eye rim. Neighbour smoothing spreads that influence over the skin; it does not decide which areas should be bare.
6 October 2026. Regional starting field, solved directions, then the coat: separate cells from the retained mouse comparison. Cyan arrows show comb directions, not individual hairs.
Check where fur is allowed to grow
The inputs still set the limits. In a 2 October 2026 beaver test, eye-socket labels extended across the cheeks and brow, so the no-fur mask exposed too much face. Another character lacked useful mouth and lip labels and grew fur across the mouth. More hairs would not repair either region. The upstream labels need checking just as carefully as the groom.
The penguin’s regional report had no paired labels and therefore no midline parting. That is a declared absence, not a successful deduction of where a part belongs. Applying a strand coat to a bird also does not establish an appropriate feather model; bare regions and the desired surface treatment need their own decisions.
2 October 2026: an input-label failure in an earlier browser prototype. The excluded region was too broad. This is a diagnostic example, not an accepted groom or evidence of a completed repair.
Keep the useful controls and the failures visible
The browser viewer connects this field to the strand coat. Roots are attached to skin triangles, and the generated strands use the direction field together with length, lean and clumping. The viewer exposes overall coat controls and regional length and fluff controls. A drag can change a region without asking someone to comb every strand again; changing the direction does not have to change the density or make the whole coat longer.
The dog exposed a less settled failure. Its historical nose and crown constraints reached only 19 vertices, and only one of two eye rims was found. The retained source comments and change record disagree about why the small reach occurred, and no retained rerun establishes the repair. The example remains a warning to inspect the field’s coverage, not evidence that this case was fixed.
This gives us a useful starting coat on the bodies we tested. It still depends on a labelled skinned mesh, useful anatomical anchors and a coherent surface. The viewer uses this field directly; the older Blender grooming path is separate. Length, how flat the fur lies and how the coat breaks up the silhouette remain art-direction choices.