fix: add --material-override support to turntable_render.py

Both camera-orbit and object-rotation modes now parse and apply
the --material-override CLI arg, overriding USD primvar lookups
and material_map before assignment — same pattern as still renders.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-14 14:21:53 +01:00
parent c054236d22
commit 7e57dba085
+22
View File
@@ -363,6 +363,12 @@ def main():
_idx = argv.index("--sensor-width") _idx = argv.index("--sensor-width")
_sensor_width = float(argv[_idx + 1]) if _idx + 1 < len(argv) else None _sensor_width = float(argv[_idx + 1]) if _idx + 1 < len(argv) else None
# Named argument: --material-override <material_name>
_material_override = None
if "--material-override" in argv:
_idx = argv.index("--material-override")
_material_override = argv[_idx + 1] if _idx + 1 < len(argv) else None
# Ensure scripts dir is on path for shared module imports # Ensure scripts dir is on path for shared module imports
_scripts_dir = os.path.dirname(os.path.abspath(__file__)) _scripts_dir = os.path.dirname(os.path.abspath(__file__))
if _scripts_dir not in sys.path: if _scripts_dir not in sys.path:
@@ -447,6 +453,14 @@ def main():
for part in parts: for part in parts:
_apply_smooth(part, SMOOTH_ANGLE) _apply_smooth(part, SMOOTH_ANGLE)
# Apply material override if set
if _material_override:
print(f"[turntable_render] material_override active: all parts → {_material_override}", flush=True)
if _usd_mat_lookup:
_usd_mat_lookup = {k: _material_override for k in _usd_mat_lookup}
if material_map:
material_map = {k: _material_override for k in material_map}
# Material assignment: USD primvar path first, then name-matching fallback # Material assignment: USD primvar path first, then name-matching fallback
if material_library_path and _usd_mat_lookup: if material_library_path and _usd_mat_lookup:
_apply_material_library_direct(parts, material_library_path, _usd_mat_lookup) _apply_material_library_direct(parts, material_library_path, _usd_mat_lookup)
@@ -531,6 +545,14 @@ def main():
for i, part in enumerate(parts): for i, part in enumerate(parts):
_apply_smooth(part, SMOOTH_ANGLE) _apply_smooth(part, SMOOTH_ANGLE)
# Apply material override if set (object-rotation mode)
if _material_override:
print(f"[turntable_render] material_override active (obj-rot): all parts → {_material_override}", flush=True)
if _usd_mat_lookup:
_usd_mat_lookup = {k: _material_override for k in _usd_mat_lookup}
if material_map:
material_map = {k: _material_override for k in material_map}
# Material assignment: USD primvar path first, then name-matching fallback # Material assignment: USD primvar path first, then name-matching fallback
if material_library_path and _usd_mat_lookup: if material_library_path and _usd_mat_lookup:
_apply_material_library_direct(parts, material_library_path, _usd_mat_lookup) _apply_material_library_direct(parts, material_library_path, _usd_mat_lookup)