From bb2b0f51b5ecd5df17aa2f83db2efc7f51b8a5e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hartmut=20N=C3=B6renberg?= Date: Tue, 21 Jul 2026 22:32:16 +0200 Subject: [PATCH] fix: cinematic render is_cinematic detection and usd_path str/Path handling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three bugs causing all cinematic renders to silently fall through to the turntable path and then immediately crash: 1. is_cinematic read from filtered invocation-override dict — 'cinematic' key is not in the allowed override key list for turntable_video, so it gets stripped. Fixed: read directly from output_type.render_settings. 2. render_turntable_to_file and render_cinematic_to_file both call usd_path.exists() but receive a str from the caller. Added the same isinstance str→Path conversion that render_still_to_file already had. Co-Authored-By: Claude Sonnet 4.6 --- backend/app/domains/rendering/workflow_runtime_services.py | 2 +- backend/app/services/render_blender.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/backend/app/domains/rendering/workflow_runtime_services.py b/backend/app/domains/rendering/workflow_runtime_services.py index 4ad95f7..f5c1ba3 100644 --- a/backend/app/domains/rendering/workflow_runtime_services.py +++ b/backend/app/domains/rendering/workflow_runtime_services.py @@ -953,7 +953,7 @@ def build_order_line_render_invocation( output_filename=output_filename, output_path=str(output_dir / output_filename), is_animation=bool(output_type and output_type.is_animation), - is_cinematic=bool(output_type and render_settings.get("cinematic")), + is_cinematic=bool(output_type and output_type.render_settings and output_type.render_settings.get("cinematic")), width=width, height=height, engine=str(engine) if engine not in (None, "") else None, diff --git a/backend/app/services/render_blender.py b/backend/app/services/render_blender.py index d42e7e5..23a0203 100644 --- a/backend/app/services/render_blender.py +++ b/backend/app/services/render_blender.py @@ -566,6 +566,9 @@ def render_turntable_to_file( t0 = time.monotonic() + if isinstance(usd_path, str) and usd_path.strip(): + usd_path = Path(usd_path) + # 1. GLB conversion (OCC) — skipped when usd_path is provided use_usd = bool(usd_path and usd_path.exists()) @@ -804,6 +807,9 @@ def render_cinematic_to_file( t0 = time.monotonic() + if isinstance(usd_path, str) and usd_path.strip(): + usd_path = Path(usd_path) + # 1. GLB conversion (OCC) — skipped when usd_path is provided use_usd = bool(usd_path and usd_path.exists())