A MakeHuman CC0 body (14,738 verts, uniform UV) plus a commercially-usable mo-cap library. The base is anatomically clean and rigs/retargets reliably — the properties the raw forge mesh lacks.
The reference is split into parts (body, head, hands). Our forged geometry supplies identity (silhouette + texture); the CC0 golden mesh supplies the deforming body + skeleton. Parts are scaled to align the forged proportions onto the golden topology — identity is carried entirely by the texture, so one clean mesh deforms for everyone.
One shared golden mesh, morphed per character for stature and build (small/medium/large × lean→heavy) as a fast macro-morph — no re-forge, no GPU.
art-gen/golden_rig.py --bulk · bulk & height tuner →The forged per-character skin is baked onto the golden body's UV atlas, so the proven mesh wears the character's identity.
art-gen/apply_texture.py · golden bake + verifyThe hi-res forged head is cloned into the body atlas with a Poisson seamless-clone: boundary
tone matches by construction, so the face-to-scalp seam disappears — and, decisively, the real
eyes, brows, nose and lips are restored instead of the old moment-match's featureless pale mask
with empty black eye-holes. Measured on ariel_sorin: seam tone-step ΔE 5.0 → 2.5
(halved), facial-feature pixels up 4.3×. (The pale-face and hair-through-scalp code paths
didn't trigger on this character — no blowout existed to pull down — so those are situational, not the
headline win.)
art-gen/uv_headmap.py (cv2 seamless-clone) — committed & verified (face-fidelity)Four measured bugs fixed — ball-center, oversized eyeballs, bug-eyed flat faces (per-character eyelid-surface recession), and cache staleness — plus per-character/species iris colors.
art-gen/eye_refine.py · eye refinement study →The golden skeleton drives the mesh; mo-cap clips retarget onto it via per-clip sidecars, producing the required animation set (23 humanoid motions: locomotion, melee, ranged, reactions).
*_mocap.retarget.json · processed cast → · motion lab — 23 required motions live →"Perfected" is not a vibe. Every clip is run through the fixed surface-deformation harness — per-region stretch, shear, inversion, and Green strain, a pass/fail VERDICT gate, and a shred_index. The rest pose self-tests to ~1.0 to prove the harness is calibrated. A model ships only when it clears the gate under animation.
art-gen/surface_metrics.py · deformation measurements →Measured just now with the fixed harness. The rest-pose self-test reads a clean 1.000 (0 strain, 0 flips) — the harness is calibrated, so every number below is real deformation, not an artifact. Result: 0 of 9 clips clear the gate. The eyes and face texture are solved; the skin weights are not — the golden body tears at the shoulder and self-intersects at the pelvis under motion. This is the next fix, and it is measured, not assumed.
| measurement | result |
|---|---|
| Rest-pose self-test (calibration, must ≈ 1.0) | 1.000 — clean (0 strain, 0 flips) |
| Clips passing the deformation gate (p95 strain ≤ 0.50) | 0 / 9 |
| Worst region across all clips | shoulder_L (deltoid) — strain p95 1.914 on dodge, 3.8× gate; + inverted tris & self-int |
| 2nd hot spot | pelvis / inner-thigh — self-intersects on every locomotion clip |
| shred_index range (idle → run) | 2.0% → 16.6% (scales with motion intensity) |
| Head-map seam ΔE — before → after (ariel_sorin) | 5.0 → 2.5 (halved); facial features +4.3× |
Next: reweight / corrective-fix the shoulder
deltoid, then the pelvis/inner-thigh, and re-run this gate until clips pass. Fix path uses
corrective_blendshape.py / blender_corrective_rig.py.
The humanoid pipeline above proved the lesson: don't rig a raw forge — it self-intersects and won't deform. The mech/walker track applies the same lesson a different way. Instead of one baked mesh, a character is a recipe: a known-good CC0 golden body + grafted identity parts + a material preset + equipment slots, which the engine assembles at load time. This is now live in gameplay — the player avatar and the body-picker read the manifest and compose the model, not a pre-baked glb.
14,738-vert body, uniform UV, 163-bone rig. Skin/graft a forged identity onto it — the stages above.
Animated Mech Pack — Stan (biped), Mike (heavy), George (chicken-walker). 43-bone biped rig, 18+ baked clips.
The same recipe for non-humanoid frames — graft signature shells onto a riggable creature base.
Each is a known-good, riggable base we skin identity onto — the opposite of a raw forge that won't rig.
Per-character record: base_model + composed_parts (id → bone mount + xform) +
material_preset + equipment_slots. The composition lanes emit this manifest
instead of baking a glb — mount_rigid_auto derives each part's mount & transform.
gear_compose.mount_rigid_autoOn load the Godot assembler instances the base_model (its Skeleton3D + baked anims),
BoneAttachment3Ds each grafted part at its mount (mirrored for .L/.R), applies the
material preset to semantic slots, and fills equipment slots from the loadout. One assembler drives NPCs, the
player, and the customizer preview — same code, same data.
The composed mech is assembled at runtime in gameplay — player avatar and the body picker read the recipe. Made editable, the same manifest is the character customizer (mix & match base + parts + colors + equipment on a live render doll).
a01 is canonically a salvage-mech, but it had been mis-forged onto the humanoid body — so its forged mech-face smeared across a human head (below left). Redone as a composed mech: Quaternius Mike base + grafted shoulder domes / chest plate / claw hands + a salvage recolor. 🤖 How close can composition alone get to the concept? — the convergence study → (six iterations toward the concept art, with the method's measured limits).
The composition method above still stands for the golden-body humanoid/organic track (skin identity onto a proven deforming body). For rigid hard-surface combat robots it hit a ceiling: bolting forged armor fragments onto a low-poly Quaternius base reads as a fragmented, low-detail bot up close. The fix is the same lesson applied differently — forge the WHOLE robot as one coherent high-poly textured mesh (the welded plates ARE the geometry, not separate grafted parts), then rig it onto a clean biped skeleton with rigid per-plate skinning (no organic deformation needed for rigid armor).
A single clean plain-background full-body A-pose concept per character — the armor plating IS baked
into the driver image (the deliberate exception to the base-body rule: a mech's armor is the model).
Codex/GPT agents use the directly exposed OpenAI image-generation tool or gpt-image-2 API;
agy is a secondary remote provider, while FLUX/SD3.5/SDXL remain local fallbacks. Every
cached driver records provider, image model, prompt, input hashes, output hash, and selection.
Hunyuan3D-2 shape (octree 512) → Hunyuan3D-Paint → normalize (height 1.8, feet at 0) → one coherent textured master mesh, ~1-1.3M source tris.
art-gen/forge_character.sh · HY_OCTREE=512Before the unchanged decimation collapse, identical exported positions are reconnected. That fixes the export-split/decimation fractures on the verified non-Warhound static candidates without distance welding, smoothing, or deleting geometry. The old custom 17-bone animation still shears at the thighs; the richer Rigify path must clear sole contact, posture, transition, and export-fidelity gates before it replaces any animated model.
exact-position reconnect → COLLAPSE · static surface ≠ accepted animationForged sources and game-loaded GLBs are versioned through the private R2-backed Git LFS endpoint.
A curated web model is copied to public R2 by scripts/publish-web-models.ts and served
through the same-origin /models proxy. Heavy review media also goes to public R2; only
small thumbnails remain ordinary Pages Git blobs.
a01 shows the whole arc: mis-forged onto the humanoid body (Aug 31, above) → composed onto a Quaternius base (Aug 31, also now superseded) → this coherent forge (Sep 5, current). Clean, no seam between "parts" because there are no parts — one mesh.
23 characters have gone through this forge so far: a01, a02, aegis_7, android_king, aura_net, chronosync, daemon_enforcer, dharma_unit_7, doc_holliday_7, echo_chrome, nexus_prime, null_pointer, r01, r02_service_bot, rev9_preacher, shadow_null_bruiser, shadow_signal_jammer, spurs_scout_drone, synthetix_primus, the_synthetic_analyst, vex_7, vite_01, zig_combat_android.
Part of the model-fidelity effort. Pushed to the preview branch for on-the-go review — steer any stage and it re-runs. · 🤖 a01 convergence study → · ← back to console