Beat grid consumed from Lane C's /beats: one top-level scene.beatGrid (beats kept in FILE seconds, effective offset re-derived from the audio clip so dragging the audio drags the grid and head-trim leaves it put). beat and bar join the snap selector, so keys, clip and audio blocks, both trim edges, cuts and the playhead all became musical for free. Grid drawn faint on beats and brighter on downbeats, suppressed below ~7px spacing. Low confidence still snaps but says so. Tempo extrapolates past the analysed range. FILM panel mounts inside #timeline: sequence CRUD, editable shot rows (scene dropdown, in/out, cut|dissolve + seconds, reorder, delete), live runtime, size picker, and Render film with per-shot/per-frame progress - gated behind hasContent() + a confirm that says plainly every shot replaces the open scene, and locked while running so it cannot be started twice. film.js imported lazily so its absence cannot stop the timeline mounting. Verified live: grid 128.02 BPM/35 beats off house128.wav, snapped positions 8-10ms from the true 0.468735s grid across the whole file, bar snap hits a downbeat, grid survives toJSON->load; FILM lists both sequences with the server's 11.50s runtime and 3 editable rows. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
||
|---|---|---|
| .claude | ||
| deploy | ||
| lanes | ||
| logs | ||
| scenegod | ||
| scripts | ||
| sequences | ||
| templates | ||
| .gitignore | ||
| CLAUDE.md | ||
| PLAN.md | ||
| README.md | ||
| requirements.txt | ||
| scenegod-8020.log | ||
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.