[ArtStudio P4] Rigging + animation stages — bone fallback chain, canonical humanoid schema, animation presets + previews #350

Closed
opened 2026-07-04 05:11:11 +00:00 by spikerj · 2 comments
Owner

Sub-ticket of epic #346. Depends on #348 (worker) and #349 (chaining); character asset type only.

What: the stages that turn a textured character mesh into something that moves — auto-rigging with ProArt's fallback chain and preset animations with viewable previews. This is the "wow" moment for students (my drawing walks!) and the bridge to using assets in games.

Scope:

  • Rigging stage with art_pipe's fallback chain: UniRig → RigNet → Mesh2Rig → smart_rig (art_pipe/models/unirig.py, models/rignet.py, blender/mesh2rig.py, addons/artpipe/smart_rig.py), remapped to the canonical 56-bone humanoid schema (blender/rigging.py); record which rigger succeeded on the stage doc
  • Headless Blender in the worker image (art_pipe drives everything through blender/headless.py) — decide single-shot vs the daemon pool (blender/daemon_pool.py, ports 19200+) based on stage latency; document the choice
  • Animation stage: curated preset motion list for students (walk, run, jump, wave, dance …) via MDM / HY-Motion per the model-fit spike (HY-Motion wants ~24 GB — may be config-gated initially); free-text motion prompts stay staff-only until P6 moderation covers them
  • Rigged GLB (bones + skin weights) and animation clips as artifacts; MP4/GIF turntable + animation previews via art_pipe enrichment for the library and gallery
  • Mesh-health gate before rigging (art_pipe already has one post-modeling) — non-riggable meshes fail the stage with a student-readable reason and keep the textured asset usable as a static prop
  • Export stage: final game-ready GLB (art_pipe blender/headless/export_cmds.py), the artifact the game playgrounds will consume in P7

Note: rigging/animation only appear in the character asset-type stage plan (P1's data-driven plan). Props/scenery terminate at export after texturing.

Acceptance: a character asset completes rig + walk-cycle preset unattended; the library shows an MP4/GIF of it moving; the exported GLB opens in Blender with the canonical skeleton and plays the clip; a deliberately broken mesh fails rigging gracefully and remains downloadable as a static asset.

Sub-ticket of epic #346. Depends on #348 (worker) and #349 (chaining); character asset type only. **What:** the stages that turn a textured character mesh into something that moves — auto-rigging with ProArt's fallback chain and preset animations with viewable previews. This is the "wow" moment for students (my drawing walks!) and the bridge to using assets in games. **Scope:** - [ ] Rigging stage with art_pipe's fallback chain: UniRig → RigNet → Mesh2Rig → smart_rig (`art_pipe/models/unirig.py`, `models/rignet.py`, `blender/mesh2rig.py`, `addons/artpipe/smart_rig.py`), remapped to the canonical 56-bone humanoid schema (`blender/rigging.py`); record which rigger succeeded on the stage doc - [ ] Headless Blender in the worker image (art_pipe drives everything through `blender/headless.py`) — decide single-shot vs the daemon pool (`blender/daemon_pool.py`, ports 19200+) based on stage latency; document the choice - [ ] Animation stage: curated **preset motion list** for students (walk, run, jump, wave, dance …) via MDM / HY-Motion per the model-fit spike (HY-Motion wants ~24 GB — may be config-gated initially); free-text motion prompts stay staff-only until P6 moderation covers them - [ ] Rigged GLB (bones + skin weights) and animation clips as artifacts; MP4/GIF turntable + animation previews via art_pipe enrichment for the library and gallery - [ ] Mesh-health gate before rigging (art_pipe already has one post-modeling) — non-riggable meshes fail the stage with a student-readable reason and keep the textured asset usable as a static prop - [ ] Export stage: final game-ready GLB (art_pipe `blender/headless/export_cmds.py`), the artifact the game playgrounds will consume in P7 **Note:** rigging/animation only appear in the character asset-type stage plan (P1's data-driven plan). Props/scenery terminate at export after texturing. **Acceptance:** a character asset completes rig + walk-cycle preset unattended; the library shows an MP4/GIF of it moving; the exported GLB opens in Blender with the canonical skeleton and plays the clip; a deliberately broken mesh fails rigging gracefully and remains downloadable as a static asset.
spikerj added the enhancement label 2026-07-04 05:11:11 +00:00
Author
Owner

Slice 1 delivered: backend PR #68 + art_pipe commit ed4c30f (device branch). Full Character plan completed end-to-end on the M5 — all 7 stages, final export GLB verified with 1 skin, 48 joints, clips [tpose, walk]: smart_rig AUTO→HUMANOID (56 bones, 100% weight coverage, 82% canonical rename), NEW procedural idle/walk presets (topology-dispatched; idle/walk didn't exist in ProArt — added, upstream candidate), MP4/GIF previews (ffmpeg installed), and a real cmd_enrich_mesh crash on animated GLBs fixed en route. The in-Blender motion classifier independently tagged the idle preset "idle".

Companion fix PR #69 resolves #362 (texture-atlas safety-gate false positives) so the Character plan completes at default production config.

Deliberately out (licensing): MDM / HY-Motion text-to-motion — SMPL/Tencent terms; procedural presets are the shipped path, revisit if licenses are obtained. Later slices: per-asset-type preset selection, UniRig/RigNet on CUDA (and via #358 on Mac), canonical-remap fidelity validation, rig preview in the studio UI (viewer slice in flight).

Slice 1 delivered: backend PR [#68](https://git.spikersoft.com/spikerj/spikersoft-backend/pulls/68) + art_pipe commit `ed4c30f` (device branch). **Full Character plan completed end-to-end on the M5** — all 7 stages, final export GLB verified with 1 skin, 48 joints, clips `[tpose, walk]`: smart_rig AUTO→HUMANOID (56 bones, 100% weight coverage, 82% canonical rename), NEW procedural idle/walk presets (topology-dispatched; idle/walk didn't exist in ProArt — added, upstream candidate), MP4/GIF previews (ffmpeg installed), and a real `cmd_enrich_mesh` crash on animated GLBs fixed en route. The in-Blender motion classifier independently tagged the idle preset "idle". Companion fix PR [#69](https://git.spikersoft.com/spikerj/spikersoft-backend/pulls/69) resolves #362 (texture-atlas safety-gate false positives) so the Character plan completes at default production config. Deliberately out (licensing): MDM / HY-Motion text-to-motion — SMPL/Tencent terms; procedural presets are the shipped path, revisit if licenses are obtained. Later slices: per-asset-type preset selection, UniRig/RigNet on CUDA (and via #358 on Mac), canonical-remap fidelity validation, rig preview in the studio UI (viewer slice in flight).
Author
Owner

PR #68 merged to master (and #69 for the atlas-threshold companion). Core acceptance met on the Mac stack: Character completes rig + walk preset unattended; exported GLB carries the canonical-renamed skeleton and plays the clip; MP4/GIF previews render; gate failures are graceful. Closing this slice — the leftovers (per-asset-type preset selection, UniRig/RigNet on CUDA, canonical-remap fidelity validation, MDM licensing decision) are noted here and in the epic, and the studio-UI rig preview ships with angular PR #115.

PR #68 merged to `master` (and #69 for the atlas-threshold companion). Core acceptance met on the Mac stack: Character completes rig + walk preset unattended; exported GLB carries the canonical-renamed skeleton and plays the clip; MP4/GIF previews render; gate failures are graceful. Closing this slice — the leftovers (per-asset-type preset selection, UniRig/RigNet on CUDA, canonical-remap fidelity validation, MDM licensing decision) are noted here and in the epic, and the studio-UI rig preview ships with angular PR #115.
Sign in to join this conversation.