"invalid inertia" when SDF Mesh for Collision has "SDF Resolution" too low

Just putting this out for the next person who hits it. I got the following errors:

2023-10-26 16:07:51 [165,799,735ms] [Error] [omni.physx.plugin] PhysX error: PxRigidBody::setMassSpaceInertiaTensor(): invalid inertia, FILE /buildAgent/work/16dcef52b68a730f/source/physx/src/NpRigidBodyTemplate.h, LINE 455
2023-10-26 16:07:51 [165,799,735ms] [Error] [omni.physx.plugin] PhysX error: PxArticulationLink::setCMassLocalPose: invalid parameter, FILE /buildAgent/work/16dcef52b68a730f/source/physx/src/NpArticulationLink.cpp, LINE 203

It’s because I had the “SDF Resolution” on the Collision “SDF Mesh” set too low. Raising it to 16 fixed the problem.

Hi, I assume the mesh you are using is not watertight. Watertight meshes will always compute a very precise inertia. For non-watertight meshes (meshes with holes or T-Junctions), the isosurface of the SDF serves as input for the inertia algorithm. If you have a complex shaped mesh and a very low SDF resolution (as a rule of thumb the resolution along the shortest bounding box axis is smaller than ~20), then the SDF won’t capture the mesh precisely. For very low resolutions like 4, it might not even capture the volume of the mesh at all leading to the errors you are seeing. We will try to add a warning for that case. In the meantime please ensure that the SDF resolution is high enough. SDF resolution has only a minor impact on perfromance, it mainly impacts memory usage. For performance, the number of triangles in the mesh is the relevant factor.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.