- stage.js detectVisemes: NONMOUTH blocklist + side-stripped matching —
/(^|_)l($|_)/ was swallowing every ARKit left-side morph (eyeblink_l,
browdown_l), so setMorph('L') would blink the eye; self-check hardened to
assert group contents (L === tongue only, smile lands on E)
- CLAUDE.md: lanes stage own files explicitly, never git add -A (laneB's
attribution finding)
- README.md: run + feature summary; lane files: session 4 accepted for all,
v1 declared complete, optional backlog recorded
Verified: node + 9 server test groups green, /rhubarb 503 gate live,
audio lane (tone.wav block, gain) + cut markers + sun keys on screen,
zero console errors.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
42 lines
1.9 KiB
Markdown
42 lines
1.9 KiB
Markdown
# SCENEGOD — machinima director's sandbox
|
|
|
|
Drop characters, Mixamo clips, and photo backdrops onto a 3D stage; keyframe
|
|
transforms, cameras (with cuts), and lights on a timeline; render an mp4 with
|
|
muxed audio. The Movies / Source Filmmaker energy on the GODVERSE stack.
|
|
|
|
## Run
|
|
|
|
```
|
|
.venv/bin/uvicorn scenegod.server:app --port 8020
|
|
# → http://127.0.0.1:8020
|
|
```
|
|
|
|
Assets live in `assets/{characters,animations,props,backdrops,audio}/`
|
|
(plain folders, scanned live — files sharing dir+stem are one entry; a
|
|
same-stem image becomes the thumbnail). Scenes save to `scenes/*.json`,
|
|
renders to `renders/` (reaped after 48h).
|
|
|
|
## What works (v1)
|
|
|
|
- GLB/FBX/OBJ characters & props; spec-gloss (Character Creator) GLBs are
|
|
converted on load. Image backdrops: flat plane, corner, or 360 dome.
|
|
- Mixamo-style clip retarget onto any mixamorig-named skeleton, client-side
|
|
(world-space rotation-delta bake, ported from MESHGOD rigroom).
|
|
- Timeline: transform + param keyframes with easing, clip blocks with
|
|
trim/loop/crossfade, multiple cameras + cut list, keyframable sun/ambient,
|
|
audio tracks (Web Audio preview; server-side ffmpeg mux in the final mp4),
|
|
viseme/morph track with Rhubarb JSON import (`GET /rhubarb?path=` if the
|
|
rhubarb binary is installed).
|
|
- Render: draft webm (MediaRecorder) or deterministic PNG-sequence →
|
|
ffmpeg h264 (+aac) mp4 at any resolution.
|
|
- `scripts/graft_limb.py`: headless-Blender armature graft (add a rigged
|
|
hand/limb to a rigged body; refuses when the bones already exist).
|
|
- `scripts/test_server.py` (9 groups) + `node scenegod/web/timeline_test.mjs`.
|
|
|
|
## Repo docs
|
|
|
|
`PLAN.md` — architecture, scene-JSON schema, module contracts, milestones.
|
|
`CLAUDE.md` — lane-agent protocol (3 parallel Opus lanes + orchestrator),
|
|
stack rules, inherited gotchas. `lanes/` + `logs/` — per-lane instructions
|
|
and session logs; the build history of this repo is readable there.
|