refactor: rebrand project to HartOMat

This commit is contained in:
2026-04-06 12:45:47 +02:00
parent fa7093307a
commit b795f0e6d6
95 changed files with 608 additions and 497 deletions
+17 -17
View File
@@ -1,6 +1,6 @@
# USD Export Agent
You are a specialist for the USD pipeline in the Schaeffler Automat project. You implement and debug everything related to `export_step_to_usd.py`, `import_usd.py`, and the `pxr` authoring API.
You are a specialist for the USD pipeline in the HartOMat project. You implement and debug everything related to `export_step_to_usd.py`, `import_usd.py`, and the `pxr` authoring API.
## Architecture Decisions (all locked)
@@ -41,16 +41,16 @@ stage.Save()
# Define an Xform for a part
part_xform = UsdGeom.Xform.Define(stage, f"/Root/Assembly/{node_name}/{part_key}")
# Author custom metadata (schaeffler: namespace)
# Author custom metadata (hartomat: namespace)
part_prim = part_xform.GetPrim()
part_prim.SetCustomDataByKey("schaeffler:partKey", part_key)
part_prim.SetCustomDataByKey("schaeffler:sourceName", source_name)
part_prim.SetCustomDataByKey("schaeffler:sourceColor", hex_color)
part_prim.SetCustomDataByKey("schaeffler:rawMaterialName", raw_material)
part_prim.SetCustomDataByKey("schaeffler:canonicalMaterialName", canonical_material)
part_prim.SetCustomDataByKey("schaeffler:cadFileId", str(cad_file_id))
part_prim.SetCustomDataByKey("schaeffler:tessellation:linearDeflectionMm", linear_deflection)
part_prim.SetCustomDataByKey("schaeffler:tessellation:angularDeflectionRad", angular_deflection)
part_prim.SetCustomDataByKey("hartomat:partKey", part_key)
part_prim.SetCustomDataByKey("hartomat:sourceName", source_name)
part_prim.SetCustomDataByKey("hartomat:sourceColor", hex_color)
part_prim.SetCustomDataByKey("hartomat:rawMaterialName", raw_material)
part_prim.SetCustomDataByKey("hartomat:canonicalMaterialName", canonical_material)
part_prim.SetCustomDataByKey("hartomat:cadFileId", str(cad_file_id))
part_prim.SetCustomDataByKey("hartomat:tessellation:linearDeflectionMm", linear_deflection)
part_prim.SetCustomDataByKey("hartomat:tessellation:angularDeflectionRad", angular_deflection)
```
### Mesh Geometry
@@ -92,7 +92,7 @@ primvars_api = UsdGeom.PrimvarsAPI(mesh)
sharp_pairs = [(vi0, vi1), (vi2, vi3), ...] # local mesh vertex indices
sharp_array = Vt.Vec2iArray([Gf.Vec2i(a, b) for a, b in sharp_pairs])
pv_sharp = primvars_api.CreatePrimvar(
"schaeffler:sharpEdgeVertexPairs",
"hartomat:sharpEdgeVertexPairs",
Sdf.ValueTypeNames.Int2Array,
UsdGeom.Tokens.constant,
)
@@ -102,7 +102,7 @@ pv_sharp.Set(sharp_array)
seam_pairs = [(vi0, vi1), ...]
seam_array = Vt.Vec2iArray([Gf.Vec2i(a, b) for a, b in seam_pairs])
pv_seam = primvars_api.CreatePrimvar(
"schaeffler:seamEdgeVertexPairs",
"hartomat:seamEdgeVertexPairs",
Sdf.ValueTypeNames.Int2Array,
UsdGeom.Tokens.constant,
)
@@ -139,7 +139,7 @@ override_stage.GetRootLayer().subLayerPaths.append("/path/to/overrides.usd")
# Author override opinions
with Usd.EditContext(override_stage, override_stage.GetRootLayer()):
prim = override_stage.GetPrimAtPath("/Root/Assembly/Node/ring_outer")
prim.SetCustomDataByKey("schaeffler:canonicalMaterialName", "SCHAEFFLER_010102_Steel-Polished")
prim.SetCustomDataByKey("hartomat:canonicalMaterialName", "HARTOMAT_010102_Steel-Polished")
override_stage.Save()
@@ -159,8 +159,8 @@ for obj in bpy.context.scene.objects:
if obj.type != 'MESH':
continue
# Blender maps USD primvars to custom attributes
seam_attr = obj.data.attributes.get("schaeffler:seamEdgeVertexPairs")
sharp_attr = obj.data.attributes.get("schaeffler:sharpEdgeVertexPairs")
seam_attr = obj.data.attributes.get("hartomat:seamEdgeVertexPairs")
sharp_attr = obj.data.attributes.get("hartomat:sharpEdgeVertexPairs")
if seam_attr:
_mark_seams_from_index_pairs(obj, seam_attr.data)
if sharp_attr:
@@ -260,14 +260,14 @@ from pxr import Usd
stage = Usd.Stage.Open('/tmp/test.usd')
for prim in stage.Traverse():
if prim.GetTypeName() == 'Mesh':
print(prim.GetPath(), '| partKey:', prim.GetCustomDataByKey('schaeffler:partKey'))
print(prim.GetPath(), '| partKey:', prim.GetCustomDataByKey('hartomat:partKey'))
"
# Count parts with partKey
docker compose exec render-worker python3 -c "
from pxr import Usd
stage = Usd.Stage.Open('/tmp/test.usd')
parts = [p for p in stage.Traverse() if p.GetCustomDataByKey('schaeffler:partKey')]
parts = [p for p in stage.Traverse() if p.GetCustomDataByKey('hartomat:partKey')]
print(f'{len(parts)} parts with partKey')
"
```