docs: learnings erfasst — cinematic render pipeline fixes 2026-07-21

Drei Bugs aus Cinematic-Render-Session dokumentiert:
- is_cinematic immer False wegen Invocation-Override-Filter
- usd_path.exists() auf str (fehlender str→Path-Cast in turntable/cinematic)
- NameError stdout/stderr in cinematic error path

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-07-22 07:12:30 +02:00
co-authored by Claude Sonnet 4.6
parent 7179023458
commit 971074fedd
+6
View File
@@ -515,3 +515,9 @@ Wenn ein Render-Job gecancelt wird, läuft Blender weiter. Wenn er fertig ist, s
### 2026-07-21 | Architektur | Cinematic-Render ist ausschließlich Legacy-Pfad — kein Graph-Node
Es gibt keinen `BLENDER_CINEMATIC`-Node im Workflow-Graph-System. Cinematic-Renders laufen ausschließlich über den Legacy-Pfad (`render_order_line_task`), ausgelöst durch `output_type.render_settings.cinematic=true`. Für einen Cinematic-Output-Type darf deshalb kein `workflow_definition_id` gesetzt sein — sonst wird der Job als Graph-Workflow geroutet, der keinen Cinematic-Node hat und leer bleibt.
### 2026-07-21 | Render-Pipeline | `is_cinematic` immer False wegen Invocation-Override-Filter
`workflow_runtime_services.py` las `is_cinematic` aus dem bereits gefilterten `render_settings`-Dict. `resolve_output_type_invocation_overrides` entfernt aber alle Keys die nicht in `_STATIC_RENDER_OVERRIDE_KEYS` oder `_ANIMATION_OVERRIDE_KEYS` stehen — `cinematic` ist in keiner dieser Listen. Ergebnis: `is_cinematic=False` immer, Cinematic-Jobs liefen auf den Turntable-Pfad. **Lösung:** `is_cinematic` direkt aus `output_type.render_settings.get("cinematic")` lesen statt aus dem gefilterten Dict.
### 2026-07-21 | Render-Pipeline | `usd_path.exists()` auf str in turntable und cinematic render functions
`render_turntable_to_file` und `render_cinematic_to_file` in `render_blender.py` riefen `.exists()` auf `usd_path` auf, ohne zu prüfen ob es ein `str` oder `Path` ist. Das Invocation-Dataclass speichert `usd_path` als `str | None`. `render_still_to_file` hatte den `isinstance(usd_path, str)``Path`-Cast bereits (Zeilen 300301), die anderen beiden Funktionen nicht. **Lösung:** Denselben Cast (`if isinstance(usd_path, str) and usd_path.strip(): usd_path = Path(usd_path)`) vor dem `usd_path.exists()`-Check in turntable und cinematic ergänzt.