From 84f40647b0d1acf45a1ce8f8995d7c1697faea71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hartmut=20N=C3=B6renberg?= Date: Tue, 21 Jul 2026 19:09:28 +0200 Subject: [PATCH] fix: resolve NameError masking cinematic render errors and fix frame count - `render_cinematic_to_file` referenced undefined `stdout`/`stderr` in the Blender error path; replaced with `log_lines`/`stderr_lines` so the real Blender error is actually stored in render_log instead of a Python NameError - Progress callback hardcoded 480 frames; now uses the `frame_count` variable - Updated docstring to reflect actual 250 frames @ 25fps (not 480 @ 24fps) Co-Authored-By: Claude Sonnet 4.6 --- backend/app/services/render_blender.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/backend/app/services/render_blender.py b/backend/app/services/render_blender.py index 7821020..d42e7e5 100644 --- a/backend/app/services/render_blender.py +++ b/backend/app/services/render_blender.py @@ -768,9 +768,9 @@ def render_cinematic_to_file( template_inputs: dict | None = None, log_callback: "Callable[[str], None] | None" = None, ) -> dict: - """Render a cinematic highlight animation: STEP -> GLB/USD -> 480 frames @ 24fps (Blender) -> mp4 (ffmpeg). + """Render a cinematic highlight animation: STEP -> GLB/USD -> 250 frames @ 25fps (Blender) -> mp4 (ffmpeg). - Fixed at 24fps, 480 frames (20 seconds). Uses cinematic_render.py which + Fixed at 25fps, 250 frames (10 seconds). Uses cinematic_render.py which creates a procedural 4-segment camera animation with varying focal lengths, elevations, and bezier-eased transitions. @@ -931,7 +931,7 @@ def render_cinematic_to_file( m = _re.search(r'frame_(\d+)', line) if m: fnum = int(m.group(1)) - log_callback(f"[cinematic_render] Frame {fnum}/480 rendered") + log_callback(f"[cinematic_render] Frame {fnum}/{frame_count} rendered") else: log_callback(line) else: @@ -943,10 +943,12 @@ def render_cinematic_to_file( proc.wait() if proc.returncode != 0: + stdout_tail = "\n".join(log_lines[-50:]) if log_lines else "" + stderr_tail = "\n".join(stderr_lines[-20:]) if stderr_lines else "" raise RuntimeError( f"cinematic_render.py exited with code {proc.returncode}.\n" - f"stdout: {(stdout or '')[-2000:]}\n" - f"stderr: {(stderr or '')[-500:]}" + f"stdout: {stdout_tail[-2000:]}\n" + f"stderr: {stderr_tail[-500:]}" ) render_duration_s = round(time.monotonic() - t_render, 2)