
Avatar Mesh Normalization
Problem
After generating a series of cards, these avatars had to be adapted to be able to run in real time. One of the things we pushed forward was for all of them to share the same hairstyles and costumes. This was done to reduce memory usage and draw calls, to support character creation systems and NPC randomization. This also meant that we had now to go over hundres of faces normalizing the neck and scalp area while keeping proportions and other face features intact to be able to easy swap hairstyles and costumes without any clipping or visual bugs.
Solution
Rather than outsource hundreds of hours of manual cleanup, I asked my team to give me a few hours to work on a prototype solution.
I ended up building a fully automated Houdini SOP pipeline that normalizes every head mesh to a shared neck-and-scalp template. The network:
Outcome
80% reduction in per-head cleanup time (from ~15 min to <1 min). Artist had to spend 1 min in some cases cleaning the fore-head and neck area.
Processed 200+ heads in under two hours—a task that used to take days.
100% elimination of hair and costume clipping bugs.
Saved the studio ~$15 K in outsourcing costs.
Implementation Details
Mask Creation: Attribute Wrangle + Group Expression isolate scalp/neck zones on a template head.
Mask Transfer: Attribute Transfer + mirror to paint the mask into Cd.r on each input head.
Position Blending: A point-wrangle fetches each point’s UV, samples the template’s position with uvsample(), then uses lerp(@P, newP, mask * slider) to blend.
Fall-off & Smoothing: A soft-transform and Smooth SOP chain generate an @influence attribute around mask borders to avoid visible seams.
Artist Override: Five chained Sculpt SOPs let artists brush-correct any edge cases before a final Normal SOP.

Normalized 3D Head Meshes Overview