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!