diff --git a/render-worker/scripts/export_step_to_usd.py b/render-worker/scripts/export_step_to_usd.py index 5a768ad..dca4ace 100644 --- a/render-worker/scripts/export_step_to_usd.py +++ b/render-worker/scripts/export_step_to_usd.py @@ -759,9 +759,15 @@ def main() -> None: ) pv_seam.Set(Vt.Vec2iArray([Gf.Vec2i(a, b) for a, b in seam_idx_pairs])) - # ── Material placeholder + binding ──────────────────────────── - mat_name = _prim_name(source_name) if source_name else f"mat_{part_key}" - mat_usd_path = f"/Root/Looks/{mat_name}" + # ── Material binding ────────────────────────────────────────── + # Use canonical SCHAEFFLER material name when resolved; fall back + # to source_name so Blender imports show meaningful material names + # even without the library .blend appended. + if canonical_mat: + mat_prim_name = _prim_name(canonical_mat) + else: + mat_prim_name = _prim_name(source_name) if source_name else f"mat_{part_key}" + mat_usd_path = f"/Root/Looks/{mat_prim_name}" if not stage.GetPrimAtPath(mat_usd_path): UsdShade.Material.Define(stage, mat_usd_path) UsdShade.MaterialBindingAPI(mesh.GetPrim()).Bind(