Replies: 1 comment
-
|
Thank you for posting this. You will not get persistent collision on a Blender‑exported board “for free” just by toggling |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Hi everyone,
I’m working on a chess manipulation environment in Isaac Lab where a G1 robot picks up and places chess pieces on a board. The chess board and pieces are exported from Blender as USD files.
The problem: My chess board USD has no collision — the robot’s hands pass right through it. I can manually add a collision mesh in Isaac Sim (right-click → Add → Physics → Colliders), and it works perfectly. But the collision doesn’t persist —
every time I reload the scene, I have to add it again.
What I’ve tried:
Adding rigid/collision props in the Isaac Lab spawn config:
chess_board = AssetBaseCfg(
prim_path=“/World/envs/env_.*/ChessBoard”,
spawn=UsdFileCfg(
usd_path=“/path/to/chessboard.usdc”,
scale=(0.3, 0.3, 0.3),
rigid_props=sim_utils.RigidBodyPropertiesCfg(kinematic_enabled=True),
collision_props=sim_utils.CollisionPropertiesCfg(collision_enabled=True),
),
)
Result: No effect — the robot still passes through the board.
Adding mesh_collision_props with convex decomposition:
mesh_collision_props=sim_utils.MeshCollisionPropertiesCfg(mesh_approximation=“convexDecomposition”)
Result: MeshCollisionPropertiesCfg doesn’t accept mesh_approximation parameter.
Exporting from Isaac Sim after manually adding collider (Export Selected):
The exported USD file ends up at a completely different scale (~700 units vs the original ~2 units), so it doesn’t load correctly back into the scene.
Adding RigidBodyAPI/CollisionAPI via Python USD API:
from pxr import Usd, UsdPhysics
stage = Usd.Stage.Open(‘chess_piece.usdc’)
root_prim = stage.GetPrimAtPath(‘/root’)
UsdPhysics.RigidBodyAPI.Apply(root_prim)
mesh_prim = stage.GetPrimAtPath(‘/root/…/MeshPrim’)
UsdPhysics.CollisionAPI.Apply(mesh_prim)
stage.GetRootLayer().Save()
Result: This works for the chess piece (rigid body), but I haven’t been able to get the collision mesh approximation (e.g., convex decomposition) to work properly for the board.
Adding physics in Blender before export (Rigid Body → Passive → Collision Shape → Mesh):
Haven’t confirmed if this translates to proper UsdPhysics.CollisionAPI in the exported USD.
My setup:
Isaac Lab (from IsaacLab repo)
Blender 4.x exporting to .usdc with “Convert to USD Preview Surface” enabled
Chess board is ~2m across in Blender, scaled to 0.3 in Isaac Lab
Board should be kinematic (doesn’t move, but things collide with it)
What I need:
A reliable way to either:
Export from Blender with collision baked into the USD
Or programmatically add collision (with proper mesh approximation) that persists in the USD file
Or configure Isaac Lab’s spawn config to properly generate collision from the visual mesh
Has anyone successfully exported Blender models with working collision in Isaac Lab? What’s the recommended workflow?
Thanks!
Beta Was this translation helpful? Give feedback.
All reactions