Skip to content

Known Issues

Everything that broke, behaved oddly, or could be improved during the feature sweep.

Severity: blocks a feature · works but wrong/fragile · minor · improvement idea

# Sev Area Issue
1 render Odd downsample_factor → 0-byte mp4 (fast-proxy encode needs even dims)
2 render eevee logs a harmless "Failed to create GPU texture" warning on the set
3 agents SetManager hardcoded path (now fixed to this machine)
4 editing edit_dsl DEFAULT_EDIT_OUTPUT_ROOT is a hardcoded absolute path
5 agents leftover breakpoint() in test3.py / StoryBoarder
6 camera pan/jitter helpers not wired into shot.camera()
7 camera arc accepts only 90 or 180 degrees
8 actors say() clip length follows the talking animation, not the speech
9 actors move_to(action="running") progressively collapses the actor — other gaits fine
10 timeline perform(duration=N) ignored for in-place actions
11 editing edit.music() BGM near-inaudible — add_bgm amix halves inputs
12 actors ~~TTS voice doesn't match the character — a male voice on a female role (or vice-versa)~~ — ✅ RESOLVED (voice split from rig)
13 blocking Actors clip through set geometry (posts, fences, props) — there's no collision
14 animation Most gesture actions read as stiff / awkward on the rigs (80–90% feel "off")
15 blocking Blocking is flat and not varied per scenario — needs more realistic, situational staging
16 camera Camera ↔ subject get obstructed by set geometry (a wall/fence ends up in front of the lens)
17 agents Weak spatial reasoning — occlusion/space is hard to reason about (even for a human)
18 sets Sparse anchor points → relative / trailing positioning gets confused
19 timeline Non-locomotion (gesture) anims don't auto-loop to fill a duration — only locomotion does

The two highest-value functional bugs

#9 — move_to(action="running") progressively collapses the actor

Only running is affected: via move_to its pose degrades over the clip — a forward lean, then crouched, then near-horizontal, then fully collapsed on the ground (a longer clip is worse, so it isn't a settling start-lean). walking, jogging, sprint all travel fine, and running in place is fine — so the running action is being evaluated progressively out of its frame range by the locomotion repeat/strip math. Workaround: use jogging/sprint/fast_run (or walk_to) for run-travel; play running in place with perform.

#10 — perform(duration=N) ignored for in-place actions

Setting strip.action_frame_end makes Blender recompute strip.frame_end back to the full action length, discarding duration. So idle(duration=20) still plays ~120 frames. Fix sketch: set strip.frame_end = start + strip_length last, and/or use strip.scale. Workaround: use shot.clip() to bound a shot.

Other notable ones

#1 — odd render dimensions

libx264/yuv420p needs even width/height. downsample_factor=6 → 213px wide (odd) → the encode fails after all frames render. Fix: add -vf "scale=ceil(iw/2)*2:ceil(ih/2)*2" to the ffmpeg command. Workaround: use downsample_factor ∈ {1, 2, 4, 5, 8}.

#7 — arc only 90°/180°

arc_shot hard-rejects other angles, though the math interpolates continuously. Fix: drop the guard or validate a range. Workaround: use arc=90 or arc=180.

#11 — BGM comes out near-inaudible

add_bgm mixes with amix=inputs=2 (default normalization), which scales each input by ½, so a low volume BGM lands near-silent (an edit with no dialogue measured −63 dB). Fix sketch: add :normalize=0 to the BGM amix so the set volume is respected (not applied — the dsl/ code is kept unchanged here). Workaround used in the samples: raise the music volume to compensate for the halving (e.g. 0.70.8 → ≈0.350.4 in the mix).

Generation & realism limitations (#12–#19)

A separate class from the bugs above: these are quality and reasoning gaps observed while testing full generated movies — not crashes, and mostly without a one-line fix. Each is shown with a real rendered example (image + video) on the Issue Examples page.

#14 — animations read as awkward (the biggest one)

On most rigs the gesture actions look stiff or subtly wrong — a "sizeup" hunches oddly, a "considers" gesture snaps. Locomotion is the most reliable; in-place gestures are the weakest. It's a retarget/asset-quality limitation, not a code bug. Mitigation: favour the cleaner-reading actions, keep gesture holds short, and lean on camera/edit to sell the moment.

#13 — actors clip through set geometry

There is no collision between actors and the set, so a walk path or blocking offset can put a character straight through a post, fence, or prop. Mitigation: place anchors/blocking with clearance, and frame around contact points.

#16 — camera & subject get obstructed

The camera solve doesn't test line-of-sight, so set geometry (a wall, a fence post) can land between the lens and the subject — sometimes hiding the actor entirely. Hard to reason about automatically. Mitigation: pick camera points/angles with a clear sightline; nudge theta.

#12 — RESOLVED: TTS voice/gender mismatch

Fixed by the voice/rig split (dsl/voices.py + dsl/actors.py): every character now carries a gender and a default_voice, voices are gender-tagged, and all 36 pairings are gender-matched (0 mismatches) — voice + tone are also overridable at cast time. The three original mispairings are corrected: james→echo, peasant_girl→coral, alex→verse. See the Issue Examples entry for the "before" clip and the resolved casting code.

#15 · #17 · #18 · #19 — blocking, spatial reasoning, anchors, looping

The remaining open items: flat un-varied blocking (#15), weak spatial reasoning (#17), too-sparse anchors confusing relative placement (#18), and gesture animations not auto-looping to fill a duration (#19). See the examples page for each, with the say()-splitting pattern that works around #19.

These are tracked in full in the repo's docs/ISSUES.md.