Go to file
type-two a785de41ae fix: surface clip/direct failures instead of swallowing them
Dropping a clip on a non-mixamo rig (lady.glb is a Character Creator export,
CC_Base_* bones) threw inside a fire-and-forget event handler — the rejected
promise vanished and the drop appeared to do nothing at all. Timeline._fail
now logs + toasts via a shared window.sgToast that tlui installs; clipdrop
and direct handlers route through it.

Repro before: two clipdrops fired, only the mixamo one landed, no error.
After: 'clip: retarget: missing hips (mixamorig skeleton?)' toast.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-25 21:03:21 +10:00
.claude [sync1] wire TimelineUI to real Stage, null-mixer guard, M2 unlock + orchestrator updates 2026-07-18 18:36:16 +10:00
deploy [deploy] digalot.fyi hosting: prefix-agnostic frontend, ship-check hardening, docker+nginx kit 2026-07-21 02:43:26 +10:00
lanes [m5+m6] DIRECTOR MODE + FLOW VIDEO PLATES — all lanes + sync6 seam fixes 2026-07-20 17:51:28 +10:00
logs [m5+m6] DIRECTOR MODE + FLOW VIDEO PLATES — all lanes + sync6 seam fixes 2026-07-20 17:51:28 +10:00
scenegod fix: surface clip/direct failures instead of swallowing them 2026-07-25 21:03:21 +10:00
scripts [m5+m6] DIRECTOR MODE + FLOW VIDEO PLATES — all lanes + sync6 seam fixes 2026-07-20 17:51:28 +10:00
.gitignore [laneC] M1 server: statics, assets tree/file, scenes CRUD+validation, render stubs, tests 2026-07-18 17:53:52 +10:00
CLAUDE.md [deploy] digalot.fyi hosting: prefix-agnostic frontend, ship-check hardening, docker+nginx kit 2026-07-21 02:43:26 +10:00
PLAN.md [m6] Flow video plates spec + flow_intake.py; M6 queued behind M5 2026-07-19 01:25:14 +10:00
README.md [sync5] viseme matcher side-suffix fix, v1 complete: README, git-hygiene rule 2026-07-18 21:33:53 +10:00
requirements.txt [laneC] M1 server: statics, assets tree/file, scenes CRUD+validation, render stubs, tests 2026-07-18 17:53:52 +10:00
scenegod-8020.log fix: surface clip/direct failures instead of swallowing them 2026-07-25 21:03:21 +10:00

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.