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).
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
- SourceMakeHuman CC0 base mesh via MPFB2 v2.0.17 — 18,486 quads, real UVs, 125 joint markers.
- ExtractSeparate the render body from MakeHuman's helper proxies and joint-marker cubes. Shipping the helpers would bury stray geometry inside the character.
- Rig31-bone CC0 skeleton built from the joint-marker centroids with stable names for headless retarget adapters.
- 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.
- StressA synthetic sweep wider than any shipping clip, to force deformation defects into view rather than hide them in a flattering pose.
- MeasurePer-triangle deformation-gradient metrics — stretch, shear, inversion, Green strain — localised to the pelvis/knee/shoulder. The go/no-go evidence.
- 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.
- 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.
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.
| view | silhouette IoU | SSIM | MAE |
|---|---|---|---|
| body (4 yaws) | 0.511–0.538 | 0.294–0.396 | 0.137–0.156 |
| face (4 yaws) | 0.575–0.577 | 0.433–0.487 | 0.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.
| model | head | torso | arm | hand | leg | foot | residual |
|---|---|---|---|---|---|---|---|
| aegis_7 | 98.6% | 100% | 84.5% | 42.5% | 90.5% | 98.8% | 26.1 mm |
| aethel_med | 97.0% | 98.3% | 79.7% | 71.9% | 88.2% | 97.4% | 15.0 mm |
| ariel_sorin | 92.0% | 99.1% | 87.4% | 72.1% | 75.6% | 99.7% | 20.5 mm |
| a01_android | 56.9% | 63.4% | 70.2% | 91.2% | 88.8% | 44.0% | 30.1 mm |
| aiko | 17.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.831 — aiko, 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², head | 25.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.
| model | strain p99a | crotch p95a | flips | self-int | shred | gate |
|---|---|---|---|---|---|---|
| Golden body — REAL MOCAP (corrected rig) | 0.989 | 0.674 | 2 | 94 | 4.87% | FAIL |
| Golden body — MALE, synthetic clip | 0.887 | 0.552 | 0 | 0 | 4.04% | FAIL |
| Golden body — FEMALE | 0.779 | 0.415 | 0 | 0 | 2.88% | FAIL |
| Golden body — NEUTRAL / android | 0.532 | 0.589 | 2 | 24 | 1.19% | FAIL |
| Golden body — neutral, 31-bone | 0.722 | 0.817 | 2 | 8 | 2.55% | FAIL |
| Path A · retopo (ckpt06) | 4.679 | 1.185 | 7 | 0 | 18.08% | FAIL |
| Path A · corrective | 142.561 | 11.284 | 1486 | 11507 | 20.29% | FAIL |
| REFERENCE · professional CC0 humanoid | 0.987 | 0.282 | 11 | 675 | 4.56% | FAIL |
| Path A · dense forge | 230.769 | 12.936 | 796 | 6696 | 12.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.
| segment | ratio | difference |
|---|---|---|
| upperarm | 1.221 | +22% |
| lowerarm | 1.216 | +22% |
| shoulder | 0.829 | -17% |
| thigh | 0.895 | -10% |
| spine | 1.093 | +9% |
| calf | 0.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 swings | melee slash_a slash_b stab_a stab_b bash_a bash_b |
|---|---|
| Melee defensive | parry parry_b |
| Ranged | aim fire_kinetic fire_laser fire_plasma fire_railgun hail |
| Reactions | flinch 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+.
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.
| body | clip | strain p99a | armpit | crotch | shoulder | flips | self-int | texture | gate 0.79 |
|---|---|---|---|---|---|---|---|---|---|
| female | idle | 0.641 | 0.295 | 0.623 | 0.655 | 0 | 0 | 1.214 | PASS |
| neutral | idle | 0.686 | 0.342 | 0.669 | 0.659 | 0 | 0 | 1.225 | PASS |
| neutral | walk | 0.719 | 0.350 | 0.502 | 0.534 | 0 | 0 | 1.233 | PASS |
| male | walk | 0.741 | 0.393 | 0.473 | 0.566 | 0 | 0 | 1.238 | PASS |
| female | walk | 0.744 | 0.298 | 0.475 | 0.550 | 0 | 0 | 1.239 | PASS |
| male | idle | 0.749 | 0.376 | 0.588 | 0.696 | 1 | 2 | 1.240 | PASS |
| neutral | jump | 0.970 | 0.909 | 1.075 | 0.796 | 2 | 0 | 1.293 | fail |
| neutral | stagger | 1.125 | 0.578 | 0.670 | 0.796 | 0 | 0 | 1.330 | fail |
| neutral | flinch | 1.199 | 0.578 | 0.961 | 0.793 | 0 | 0 | 1.348 | fail |
| neutral | slash | 1.242 | 0.794 | 1.062 | 0.558 | 3 | 57 | 1.358 | fail |
| neutral | sprint | 1.462 | 0.917 | 1.531 | 0.966 | 4 | 109 | 1.411 | fail |
| neutral | dodge | 1.474 | 1.181 | 0.140 | 1.815 | 8 | 13 | 1.414 | fail |
| neutral | fire | 1.619 | 0.630 | 0.724 | 1.388 | 2 | 0 | 1.449 | fail |
| neutral | run | 1.648 | 1.391 | 1.434 | 1.536 | 8 | 132 | 1.456 | fail |
| neutral | aim | 1.659 | 0.690 | 0.724 | 1.474 | 2 | 0 | 1.459 | fail |
| female | melee | 1.817 | 2.276 | 0.809 | 1.895 | 10 | 26 | 1.497 | fail |
| male | melee | 2.200 | 3.007 | 0.939 | 1.724 | 9 | 37 | 1.589 | fail |
| neutral | melee | 2.265 | 2.034 | 1.022 | 1.330 | 5 | 0 | 1.604 | fail |
| neutral | crouch | 2.298 | 1.198 | 1.310 | 2.562 | 4 | 8 | 1.612 | fail |
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.
| bind | posed | animation-induced | flips | |
|---|---|---|---|---|
| ours — neutral | 86 | 220 | +134 | 1 |
| ours — female | 22 | 276 | +254 | 1 |
| professional reference | 13,974 | 20,826 | +6,852 | 11 |
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 vertex | contact error (mean / max) | |
|---|---|---|
| before | −0.879 … −0.838 m | 2.17 cm / 4.06 cm |
| grounded + locked | 0.000 … 0.000 m | 0.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.
| clip | strain p99a | elbow | flips | self-int | texture | gate 0.79 |
|---|---|---|---|---|---|---|
| idle | 0.773 | 0.309 | 0 | 0 | 1.221 | PASS |
| walk | 0.846 | 0.356 | 1 | 42 | 1.201 | fail |
| stagger | 1.021 | 0.395 | 1 | 0 | 1.309 | fail |
| flinch | 1.109 | 0.368 | 0 | 0 | 1.347 | fail |
| jump | 1.203 | 0.430 | 3 | 97 | 1.358 | fail |
| slash | 1.348 | 1.270 | 6 | 64 | 1.395 | fail |
| dodge | 1.536 | 1.156 | 10 | 22 | 1.431 | fail |
| sprint | 1.686 | 0.484 | 7 | 220 | 1.502 | fail |
| run | 1.715 | 0.494 | 12 | 159 | 1.483 | fail |
| fire | 1.771 | 1.033 | 4 | 0 | 1.506 | fail |
| melee | 1.936 | 0.917 | 6 | 14 | 1.580 | fail |
| aim | 1.992 | 1.229 | 4 | 7 | 1.534 | fail |
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):
| clip | ours | reference | ours flips | ref flips | ours self-int | ref self-int |
|---|---|---|---|---|---|---|
| idle | 0.934 | 0.972 | 1 | 10 | 86 | 598 |
| walk | 0.989 | 0.987 | 2 | 11 | 94 | 675 |
| jump | 1.694 | — | 5 | — | 113 | — |
| sprint | 2.073 | — | 5 | — | 251 | — |
| run | 2.171 | 1.157 | 10 | 21 | 229 | 632 |
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 p99a | texture stretch | |
|---|---|---|
| ours — walk | 0.910 | 1.226 |
| professional reference — walk | 0.987 | 1.231 |
| ours — idle | 0.794 | 1.233 |
| professional reference — idle | 0.972 | 1.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.