init commit
This commit is contained in:
45
workflows/simbox/tools/rigid_obj/make_rigid.py
Normal file
45
workflows/simbox/tools/rigid_obj/make_rigid.py
Normal file
@@ -0,0 +1,45 @@
|
||||
import argparse
|
||||
|
||||
from pxr import Usd, UsdPhysics
|
||||
|
||||
|
||||
def process(
|
||||
usd_file,
|
||||
add_rigid_body=True,
|
||||
):
|
||||
"""Add rigid body physics properties to a USD file.
|
||||
|
||||
Args:
|
||||
usd_file: Path to the USD file.
|
||||
add_rigid_body: Whether to add rigid body properties.
|
||||
"""
|
||||
stage = Usd.Stage.Open(usd_file)
|
||||
editor = Usd.NamespaceEditor(stage)
|
||||
root_prim = stage.GetDefaultPrim()
|
||||
aligned_prim = root_prim.GetAllChildren()[1]
|
||||
try:
|
||||
editor.RenamePrim(aligned_prim, "Aligned")
|
||||
editor.ApplyEdits()
|
||||
except Exception:
|
||||
# If rename fails (e.g., already renamed), continue with existing prim
|
||||
aligned_prim = stage.GetPrimAtPath("/World/Aligned")
|
||||
|
||||
aligned_prim = stage.GetPrimAtPath("/World/Aligned")
|
||||
|
||||
if add_rigid_body:
|
||||
UsdPhysics.RigidBodyAPI.Apply(aligned_prim)
|
||||
|
||||
UsdPhysics.MassAPI.Apply(aligned_prim)
|
||||
mass_attr = aligned_prim.GetAttribute("physics:mass")
|
||||
mass_attr.Set(0.1)
|
||||
|
||||
stage.Save()
|
||||
print(f"Successfully processed: {usd_file}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description="Add rigid body physics properties to USD file")
|
||||
parser.add_argument("--usd_path", type=str, required=True, help="Path to the USD file")
|
||||
args = parser.parse_args()
|
||||
|
||||
process(args.usd_path, True)
|
||||
Reference in New Issue
Block a user