init commit
This commit is contained in:
57
workflows/simbox/tools/rigid_obj/make_collider.py
Normal file
57
workflows/simbox/tools/rigid_obj/make_collider.py
Normal file
@@ -0,0 +1,57 @@
|
||||
# pylint: skip-file
|
||||
# flake8: noqa
|
||||
|
||||
import argparse
|
||||
|
||||
from isaacsim import SimulationApp
|
||||
|
||||
simulation_app = SimulationApp({"headless": True})
|
||||
|
||||
from omni.physx.scripts import physicsUtils, utils
|
||||
from pxr import Usd
|
||||
|
||||
|
||||
def process(
|
||||
usd_file,
|
||||
create_physics_mat=True,
|
||||
):
|
||||
"""Add collision properties to a USD file using convex decomposition.
|
||||
|
||||
Args:
|
||||
usd_file: Path to the USD file.
|
||||
create_physics_mat: Whether to create physics material.
|
||||
"""
|
||||
stage = Usd.Stage.Open(usd_file)
|
||||
aligned_prim = stage.GetPrimAtPath("/World/Aligned")
|
||||
child_prim = aligned_prim.GetAllChildren()[0]
|
||||
|
||||
utils.setCollider(child_prim, "convexDecomposition")
|
||||
child_prim.GetAttribute("physxConvexDecompositionCollision:maxConvexHulls").Set(64)
|
||||
child_prim.GetAttribute("physxConvexDecompositionCollision:hullVertexLimit").Set(64)
|
||||
child_prim.GetAttribute("physxConvexDecompositionCollision:minThickness").Set(0.001)
|
||||
child_prim.GetAttribute("physxConvexDecompositionCollision:shrinkWrap").Set(True)
|
||||
child_prim.GetAttribute("physxConvexDecompositionCollision:errorPercentage").Set(0.1)
|
||||
if create_physics_mat:
|
||||
static_friction = 1.0
|
||||
dynamic_friction = 1.0
|
||||
utils.addRigidBodyMaterial(
|
||||
stage,
|
||||
"/World/Physics_Materials",
|
||||
staticFriction=static_friction,
|
||||
dynamicFriction=dynamic_friction,
|
||||
)
|
||||
physicsUtils.add_physics_material_to_prim(
|
||||
stage,
|
||||
aligned_prim,
|
||||
"/World/Physics_Materials",
|
||||
)
|
||||
stage.Save()
|
||||
print(f"Successfully processed: {usd_file}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description="Add collision properties to USD file using convex decomposition")
|
||||
parser.add_argument("--usd_path", type=str, required=True, help="Path to the USD file")
|
||||
args = parser.parse_args()
|
||||
|
||||
process(args.usd_path, create_physics_mat=True)
|
||||
Reference in New Issue
Block a user