Golden Body — Path B

Forging a character mesh and then fighting it into deforming cleanly failed. Path B inverts it: adopt one commercially-safe, clean-topology body that already animates correctly, and move each forged character's appearance onto it. The mesh that actually deforms is always the proven one.

Path A — forged monolith failed  base_lean_m · real walk clip

~150k-tri TRELLIS mesh with bone-heat weights. Carries all 23 clips, but tears at the pelvis under load — every weight fix failed. Watch the crotch and inner thigh.

Path B — golden body new  MakeHuman CC0 · male / female variants

13.4k quads, pre-solved CC0 weights, 163-bone rig. Male and female are the SAME mesh topology and the SAME weights — a MakeHuman macro morph moves vertices without changing indices, so one rig serves every body type. Male is 14.1 cm taller and broader (real-world average difference is ~13 cm).

31bones
13,380vertices
26,756triangles
23,905weights applied
13,380/13,380verts weighted
0unweighted
CC0rig licence
48sweep frames

Every number above is read from the build's own output (base_golden_rigged.stats.json), not hand-written — the page cannot drift from the mesh. Built 2026-08-29T09:42:00 from MPFB2 v2.0.17 MakeHuman CC0 assets.

The pipeline

  1. SourceMakeHuman CC0 base mesh via MPFB2 v2.0.17 — 18,486 quads, real UVs, 125 joint markers.
  2. ExtractSeparate the render body from MakeHuman's helper proxies and joint-marker cubes. Shipping the helpers would bury stray geometry inside the character.
  3. Rig31-bone CC0 skeleton built from the joint-marker centroids with stable names for headless retarget adapters.
  4. SkinMakeHuman's PRE-SOLVED weights, authored for this exact mesh. This is the step Path A lost — every bone-heat experiment failed at the pelvis.
  5. StressA synthetic sweep wider than any shipping clip, to force deformation defects into view rather than hide them in a flattering pose.
  6. MeasurePer-triangle deformation-gradient metrics — stretch, shear, inversion, Green strain — localised to the pelvis/knee/shoulder. The go/no-go evidence.
  7. TransplantDecompose a forged character and bake its albedo/normal/displacement onto the golden body's UVs. Identity from the forge, deformation from the golden mesh.
  8. RetargetCurate the 23-clip acceptance set from license-cleared, CLI-accessible animation sources.

Appearance transplant — forged identity onto the golden body

Top row: the original forged character. Bottom row: the golden body wearing its baked appearance, rendered from identical cameras and lighting. Verdict is PARTIAL — torso and legs transfer, arms and face do not.

Forged original above,
  golden-body transplant below, identical cameras

Best case (aethel_med, 15.0 mm surface residual). Earlier versions of this page showed base_lean_m, which turned out to be the only model the transplant could load at all — it hard-coded Godot-sanitised bone names while the roster uses dots.

viewsilhouette IoUSSIM MAE
body (4 yaws)0.511–0.5380.294–0.3960.137–0.156
face (4 yaws)0.575–0.5770.433–0.4870.185–0.232

Why silhouettes overlap only ~55%, and why that is mostly expected: a bulk axis was added (MakeHuman muscle/weight macros) so the body can match a character's build, not just limb lengths — it gives waist girth 0.558–0.887 across its range at fixed height. But the forged models measure 1.386–1.615, which is 1.6–1.8× wider than the golden body at maximum bulk. No human build is that much heavier at the same height: the excess is baked clothing and armour. The forged pipeline fuses garments into the mesh; Path B deliberately does not, adding them as separate rigged pieces so cloth can deform rather than fuse. So we are comparing a nude base body against a clothed character. Surface appearance transfers, build is now fittable, clothing belongs to the composition layer — which no transplanted character has been through yet, so end-to-end identity remains unmeasured. The transplant carries surface appearance well — 97–100% albedo coverage on head and torso for good models — but the shape stays the golden body's. Per-segment proportion fitting matches limb lengths, not bulk or musculature, so a character whose identity lives in a distinctive silhouette does not survive intact. Face structure fares better than the body (SSIM 0.43–0.49 vs 0.29–0.40), which is the opposite of what was previously reported from the single specimen.

modelheadtorsoarm handlegfootresidual
aegis_798.6%100%84.5%42.5%90.5%98.8%26.1 mm
aethel_med97.0%98.3%79.7%71.9%88.2%97.4%15.0 mm
ariel_sorin92.0%99.1%87.4%72.1%75.6%99.7%20.5 mm
a01_android56.9%63.4%70.2%91.2%88.8%44.0%30.1 mm
aiko17.0%38.4%49.9%29.9%43.7%20.6%37.5 mm

Three of five transplant well. Earlier versions of this page reported a single specimen (base_lean_m) and concluded arms and face do not transfer. That was substantially the specimen: it is the only Godot-exported asset in the repo, and the transplant hard-coded Godot bone naming, so it was the only model that would even load. Across a real sample the median is head 92.0%, torso 98.3%, arm 79.7%.

Source weight quality predicts transplant success at r = −0.831aiko, the roster's worst weight-bleed case (3.30×), is also the worst transplant (33.3% mean coverage). So the geometry-only weight check — no animation, no GPU, no reference — works as a pre-screen for whether an expensive transplant will succeed. Caveat: n=5, and ariel_sorin breaks monotonicity, so it is a usable trend rather than a law.

Surface residual fell 131.4 mm (global fit) → 63.1 (pose retarget) → 29.2 mm (region refit). The arms render black because the forged rig's hand_L joint sits about 90 mm outside its own mesh, so the arm refit is correctly rejected rather than silently fitted to nothing.

Why a higher-resolution face would not help — yet

The obvious fix for a smeared face is more texture on the face. Measured, that is the wrong end of the pipe:

texel density
base_lean_m @1024² (outlier)5.4 texels/cm
aiko @2048² (real roster)8.3 texels/cm
aegis_7 @2048² (real roster)10.6 texels/cm
golden target @2048², head25.9 texels/cm

The golden body already carries 4.8× the density the source can feed, and MakeHuman already allocates the head 34.8% of the atlas. A dedicated face island would gain nothing today — the forged source unwraps at even density, giving the face a 1.85 mm texel that cannot resolve an eyelid. The fix is one step upstream: re-forge at 4096² and/or with a face-weighted unwrap.

Gradient surface measurements — the acceptance evidence

Per-triangle deformation gradient F = ∂xposed/∂xrest; from its SVD we take stretch and a Green-strain residual ‖FᵀF−I‖, plus normal-flip inversions, self-intersecting triangle pairs and per-segment volume. All figures are area-weighted and taken at walk fraction 0.25 — only area-weighted numbers compare across meshes with different tessellation. Thresholds were calibrated against a correctly-skinned cylinder at 45° bend (strain p99a 0.484), not guessed.

modelstrain p99acrotch p95a flipsself-intshredgate
Golden body — REAL MOCAP (corrected rig)0.9890.6742944.87%FAIL
Golden body — MALE, synthetic clip0.8870.552004.04%FAIL
Golden body — FEMALE0.7790.415002.88%FAIL
Golden body — NEUTRAL / android0.5320.5892241.19%FAIL
Golden body — neutral, 31-bone0.7220.817282.55%FAIL
Path A · retopo (ckpt06)4.6791.1857018.08%FAIL
Path A · corrective142.56111.28414861150720.29%FAIL
REFERENCE · professional CC0 humanoid0.9870.282116754.56%FAIL
Path A · dense forge230.76912.936796669612.91%FAIL

Nothing passes yet — including ours. The golden body is roughly 280× better on strain and eliminates self-intersection almost entirely versus the dense Path A forge, and the 163-bone rig drives hard defects (inversions, self-intersections) to zero. But it still exceeds the strain gate at the pelvis/crotch — the same site that defeated Path A. Being far better than a failure is not passing, so this is reported as FAIL.

Proportion fit — forged base_lean_m vs golden body

Height-normalised segment ratios. 1.000 means the two skeletons agree on that segment's proportion and differ only in overall size. Bones the two rigs define differently (head, hand, foot, hips, chest) are measured but excluded — comparing them as lengths is meaningless, not a finding.

segmentratiodifference
upperarm1.221+22%
lowerarm1.216+22%
shoulder0.829-17%
thigh0.895-10%
spine1.093+9%
calf0.988-1%

Overall height 1.750 m vs 1.666 m (×1.0503). Spread across comparable segments is 0.391 — the forged body has noticeably longer arms and shorter thighs, so uniform scaling would not preserve identity. The transplant has to scale per segment.

Required animation set — 6 locomotion + 17 arm actions

Locomotion bases (own the whole body): idle walk run jump slide dodge

Melee swingsmelee slash_a slash_b stab_a stab_b bash_a bash_b
Melee defensiveparry parry_b
Rangedaim fire_kinetic fire_laser fire_plasma fire_railgun hail
Reactionsflinch stagger

Arm actions layer over a locomotion base and own only the arms, so curation is 6 full-body + 17 upper-body clips — not 23 independent ones. walk_fwd/back/left/right/sprint are input bindings, not animations.

Where the deformation actually fails

Every claim on this page is a number, deliberately — renders hid the severity of the previous approach's failures for weeks. But a number says how bad, never where. This paints the measured per-triangle strain onto the surface itself, using the same computation the gate uses, so a bright triangle here is a triangle the gate counted. Green 0 → yellow at the regional threshold 0.5 → red at 1.5+.

Strain heatmap: walk passing,
  aim failing, front and side

Left pair is walk at 0.719 — passing: almost uniformly green, hotspots confined to the knee crease. Right pair is aim at 1.659 — failing: the shoulder and upper arm light up while the legs stay clean. That is the same story the region table tells (shoulder 1.474 against crotch 0.724), now visible rather than tabulated. The heat images themselves are rendered from the same builds the viewer above loads.

Corrected baseline — every region re-measured

Two landmark-resolution bugs were found in the measurement harness and fixed: chest resolved on neither rig (MakeHuman calls it spine03, Rigify DEF-spine.003), so the torso reference silently fell back to the hips and every armpit centre was placed toward the hips instead of the chest; and pelvis mapped to the hips slot, resolving it to a left-side bone. Corrected, the armpit region captures half the triangles it did — it was dragging in torso geometry — and melee armpit_R falls from 1.947 to 0.609. Global strain, texture and flips are whole-mesh and were never affected. Everything below is re-measured.

bodyclipstrain p99aarmpitcrotchshoulderflipsself-inttexturegate 0.79
femaleidle0.6410.2950.6230.655001.214PASS
neutralidle0.6860.3420.6690.659001.225PASS
neutralwalk0.7190.3500.5020.534001.233PASS
malewalk0.7410.3930.4730.566001.238PASS
femalewalk0.7440.2980.4750.550001.239PASS
maleidle0.7490.3760.5880.696121.240PASS
neutraljump0.9700.9091.0750.796201.293fail
neutralstagger1.1250.5780.6700.796001.330fail
neutralflinch1.1990.5780.9610.793001.348fail
neutralslash1.2420.7941.0620.5583571.358fail
neutralsprint1.4620.9171.5310.96641091.411fail
neutraldodge1.4741.1810.1401.8158131.414fail
neutralfire1.6190.6300.7241.388201.449fail
neutralrun1.6481.3911.4341.53681321.456fail
neutralaim1.6590.6900.7241.474201.459fail
femalemelee1.8172.2760.8091.89510261.497fail
malemelee2.2003.0070.9391.7249371.589fail
neutralmelee2.2652.0341.0221.330501.604fail
neutralcrouch2.2981.1981.3102.562481.612fail

Generated from the metrics corpus: 6 of 19 measured assets pass the derived 0.79 gate.

6 assets pass — all three bodies on both idle and walk, 5 of them with zero inverted triangles and zero self-intersections. With the regions corrected, the dominant remaining defect is the shoulder on every arm action — not the armpit, which the mis-placed region had made look like the worst area in the set, and not the crotch. The waist is what sets run, and two candidate fixes for it have now been rejected on measurement: the lumbar chain-split (it makes run monotonically worse) and any lever premised on the bind being too diffuse (folding the frozen bones into their drivers closes that gap and moves strain by nothing at all).

A retracted comparison

Earlier versions of this page claimed we beat the professional reference with 5–16× fewer self-intersections. That comparison was invalid and is withdrawn. Measuring rest-pose self-intersections shows the reference mesh carries 13,974 self-intersecting triangle pairs before it is animated at all — a heavily overlapping construction — against 22–86 for our bodies. Its posed counts were dominated by that, not by deformation.

bindposed animation-inducedflips
ours — neutral86220+1341
ours — female22276+2541
professional reference13,97420,826+6,85211

The fair metric is the animation-induced delta, and on that the conclusion survives — +134/+254 against +6,852. But the number quoted to support it did not. Normal-flip counts and strain remain directly comparable: both meshes read exactly 0 flips and 0.000 strain at bind, so posed values are purely animation-induced.

Ground contact

The body previously had no relationship to the floor at all — its origin is hip-centred, so the lowest vertex sat at z = −0.88 m. And across a walk the lowest vertex wandered 4.06 cm, so the feet visibly floated or sank depending on the frame. In a walk one foot is always in contact, so that variation is real error.

lowest vertexcontact error (mean / max)
before−0.879 … −0.838 m2.17 cm / 4.06 cm
grounded + locked0.000 … 0.000 m0.00 cm / 0.00 cm

Measured on the mesh surface, not the toe bone — a bone can sit inside the foot while the sole still floats, and the sole is what the eye reads. Deformation is unaffected (global strain 0.972, self-intersections 54 → 42).

The acceptance set — 12 clips measured

Real CC0 motion capture through the full pipeline, grounded shipping assets, ordered worst-first. Shoulder is the region strain; a professional CC0 reference scores 0.84 there.

clipstrain p99aelbowflipsself-inttexturegate 0.79
idle0.7730.309001.221PASS
walk0.8460.3561421.201fail
stagger1.0210.395101.309fail
flinch1.1090.368001.347fail
jump1.2030.4303971.358fail
slash1.3481.2706641.395fail
dodge1.5361.15610221.431fail
sprint1.6860.48472201.502fail
run1.7150.494121591.483fail
fire1.7711.033401.506fail
melee1.9360.9176141.580fail
aim1.9921.229471.534fail

Elbow fix applied (stage 5). Elbow strain fell 52–79%: slash 5.935→1.270, dodge 4.456→1.156, melee 2.592→0.917 — we now beat the professional reference at the elbow on every comparable clip (its 3.159 / 2.201 / 1.071). It also repaired the walk self-intersection regression the shoulder fix caused, 70→42. idle is the first clip to pass the derived 0.79 gate, at 0.773 with zero inverted triangles and zero self-intersections; walk is next at 0.846.

Shoulder fix applied (shoulder/armpit-local weight smoothing, stage 4 of the pipeline). Every clip improved: aim 2.844→2.166 with inverted triangles 28→4 and self-intersections 221→7; melee 2.768→2.130; dodge 2.174→1.788; walk 0.971→0.910. Shoulder strain fell 28–46%. The gap to a shipped professional asset closed from 2.64× to 1.44× on melee. One regression, reported not buried: walk self-intersections rose 42→70, arm↔torso contacts across the shoulder boundary, and it does not respond to dosage.

The four worst clips are all arm actions, every one with shoulder strain 3.0–4.8 against the reference's 0.84. Locomotion and reactions sit at 0.90–1.72. The split is unambiguous: locomotion is close to shippable, combat is not, and the shoulder is the single cause. This is why measuring one clip was misleading for so long.

Across the clip set — walk was the easiest case

Acceptance is 23 clips, not one. Measured on real CC0 mocap, ours vs the professional reference (strain p99a, area-weighted; lower is better):

clipoursreference ours flipsref flipsours self-intref self-int
idle0.9340.97211086598
walk0.9890.98721194675
jump1.6945113
sprint2.0735251
run2.1711.1571021229632

We are slightly better at idle, even at walk, and 1.9× worse at run. Hard defects stay in our favour throughout — consistently fewer inverted triangles and 3–7× fewer self-intersections. The measured result is not "we match a professional asset": we match it on low-amplitude motion and degrade faster than it under high-amplitude motion. Volume loss tells the same story — ours 0.924 on run against the reference's 0.954.

A gate derived from visible quality, not from a cylinder

The original acceptance threshold (strain p99a ≤ 0.5) was arbitrary — calibrated on a bent cylinder, and a shipped professional humanoid fails it. Measuring texture replaces it with something defensible. Across all 12 clips, texture stretch and geometric strain correlate at r = 0.964:

texture = 0.2404 × strain + 1.0599

Inverting it at the point authored detail starts visibly smearing (1.25) gives a required strain p99a ≤ 0.79. That is the proposed gate, and it explains why the old one was unreachable — 0.5 demanded texture quality of ~1.18, beyond anything we or the reference achieve. Today idle misses it by 0.003 and walk is close; the other ten clips fail. There is no separate texture workstream — every point of strain improvement buys texture at 0.24×, so the elbow and shoulder work is the texture work.

Locomotion is at professional quality — on both axes

strain p99atexture stretch
ours — walk0.9101.226
professional reference — walk0.9871.231
ours — idle0.7941.233
professional reference — idle0.9721.219

On walk we beat a shipped professional humanoid on both geometry and texture. On idle we win on strain and lose marginally on texture. All four sit under the 1.25 visible-smear threshold, so for locomotion neither body visibly smears — the first shippable-quality claim this effort can make, measured on two independent axes against an external asset rather than judged from a render. The strain/texture relationship was also cross-validated on that same external body: residuals −0.074…0.000, so the 0.79 gate is not an artifact of our asset. Combat remains the gap — aim 2.166/1.545, melee 2.130/1.603.

What "done" will mean

Not a render that looks fine. A number: per-triangle deformation gradient F, with SVD stretch/shear, det(F)<0 inversion counts and Green-strain residual, localised to the pelvis, inner thigh, knee and shoulder, measured across all 23 clips — and shown to separate a known-bad Path A model from the golden body. Textured renders previously hid this severity, which is exactly how the earlier "clean" reports were wrong.