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:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user