applyDirect handles op:'move': one group() = transform keys at t0 and t0+dur from the op's from/to, fov param keys at BOTH times (the only thing a zoom moves, and an unkeyed fov gets dragged by its neighbours), ease on the leading key of each pair. Repeating a move over the same span REPLACES the window rather than interleaving, and reports how many keys it displaced. No automatic cut - a move usually continues a shot - but the toast discloses when no cut selects the moved camera, and cut:true is honoured if asked. Snap config moved onto the model so a model-level op lands on the beat exactly like a mouse drag: with a grid and snap=bar, t0 AND t0+dur land on downbeats. Double-clicking the Cameras row now cuts to the camera you are looking through. Verified live on music-video: playhead off-grid at 4.2s -> keys at 3.2907 and 8.9146, both exact bar lines, fov keyed at both, cuts unchanged, mid-move pose interpolating, one undo deep-equal. 5 suites green. 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.