# 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.