Mesh Collision Not Blocking Camera in Ammo.js Physics

Hi everyone,

I’m trying to use a custom GLB mesh as a collision shape in PlayCanvas (Ammo.js), but no matter what I try, my FPS camera still passes right through it. Here’s what I’ve done so far:

  • Exported collision mesh from Arrival.Space (as .glb) and loaded it into Blender to verify orientation and transforms.
  • Exported from Blender as GLB/FBX (applied all transforms, single mesh node).
  • Verified sub‐asset appears under “(Model)” in Assets.
  • Added Collision → Type: Mesh and RigidBody → Type: Static to the mesh entity.
  • Created a player entity with RigidBody (Dynamic) + Collision (Capsule) + WASD movement script.

Despite confirming the mesh is valid (faces and vertices load correctly), Ammo.js still does not treat it as a solid collider for the dynamic RigidBody. According to some forum posts, Ammo.js does not fully support mesh‐to‐mesh physics collisions, but I can’t find a clear workaround. I need the camera to be blocked by the exact same mesh that I’m using for visual display.

I also came across a post from 2019 titled “Is there any way to make mesh‐to‐mesh collision?”, where a similar issue was discussed. Has anyone found a definitive solution since then? Arrival.Space offers this capability, and for GSplat applications it would be really valuable.

Below is a screenshot of the collision mesh loaded into PlayCanvas (as exported from Arrival.Space):

Is there any way to force PlayCanvas/Ammo.js to recognize a mesh collider for blocking dynamic rigid bodies? Or is my only option to approximate the shape with primitives (boxes, capsules, compound shapes)? If someone has a working example or an alternative approach, I’d really appreciate your advice.

Thanks in advance!