foitin/pipeline/README.md
m3ultra 8e58b88262 Blender render pipeline + first real character from asset library
- pipeline/render_moves.py: headless Blender 5.x renderer — imports rigged
  FBX/GLB, remaps Mixamo bone namespaces (mixamorigN:), fixes FBX axis/scale,
  normalises height, centres ground pivot, renders transparent ortho sprites
- engine: sprite_scale in manifest (scales sprite + all boxes), --p1/--p2
  roster picks for testing
- characters/trainer: woman_athleisure_01 (Mixamo, web-ok) rendered through
  the full pipeline as integration proof — idle/jab/hit from NPC clips,
  silhouette auto-hurtboxes, verified in-game vs alpha

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 19:02:39 +10:00

34 lines
1.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# FOITIN asset pipeline (MODELBEAST)
New fighter = one pass through this pipeline. Target cost: hours, not weeks.
Steps 13 run as MODELBEAST jobs (queue on m3ultra `:8777` — see the fleet skill);
46 run locally.
```
1. IDENTITY FLUX + character LoRA → master portrait(s), costume locked
2. MESH Hunyuan3D-2.1 / TRELLIS → textured 3D mesh (GLB) from portrait
3. RIG+MOVES auto-rig → retarget the SHARED move library (~30 clips) onto the rig
(character-specific specials are extra clips, added per character)
4. RENDER render_moves.py (Blender headless, tested on Blender 5.1):
handles Mixamo namespace remap, axis fix, height normalisation,
first-frame pivot centring, transparent ortho side camera
→ renders/<char>/<move>/####.png
/Applications/Blender.app/Contents/MacOS/Blender -b \
--python pipeline/render_moves.py -- \
--char <rigged.fbx|.glb> --clips <dir_or_list> --out renders/<id> \
--rotz 155 --step 2
5. HITBOX autohitbox.py — DWPose over rendered frames → hurtbox rects per move
6. PACK pack_character.py — assemble characters/<char>/ per CHARACTER_SPEC.md
```
Timing/damage numbers still get tuned by hand in each move's `data.json`
that's game feel, not asset work. Startup/active windows: see STUDY.md §2
(modern pacing, NOT BKB's 53-frame jab).
## Naming
Use the shared move vocabulary (`idle`, `walk_f`, `jab`, `kick`, `hit`,
`knockdown`, …, spec/CHARACTER_SPEC.md "Required move names") so every
character drops onto the same FSM with zero engine changes — the Mortal Kombat
uniform-mechanics doctrine, same reason BKB could ship 12 fighters on one exe.