In other words, do I need to wrap the walls and other collideables of my environment in invisible “collider” boxes, or can I directly enable checkCollisions on them? Does Babylon use the actual, complex mesh for collisions, which can be expensive, or the simple bounding cube?
And is it the same with mesh-against-mesh collisions as camera-against-mesh ones?
If your model has some defects you may need to use some invisible meshes to correct them (if you cannot edit the model, for example). Sometimes invisible planes are the best choice for stairs etc.
Shortly speaking - bounding boxes.
Camera ellipsoid against mesh.
a. Sometimes one may need to use custom ellipsoid mesh for the camera collisions (for example, to use moveWithCollisions function which works only for meshes). b. For the final tuning or in case of glitches you may play with collisionRetryCount - Mesh | Babylon.js Documentation c. Usually camera.minZ = 0.1 (minimum) gives the best experience with collisions.
Two more things for the best user collision experience.
Sometimes collisions don’t work on some meshes (one can pass through them). Usually it means that these meshes have incorrect (usually inverted) normals.
In some cases (it also depends on camera ellipsoid size) one may stuck to mesh and lost the ability to move. Check this spot in 3D editor, and if there is no way to correct it on model level, use invisible planes or meshes to avoid bad user experience.
The announcement of the Metaverse has generated an unreal amount of hype, and everyone, including my client, is trying to cash in. So, basically, I’ve got to create a web-based, networked world that should work on both PC and mobile, with an optional VR mode for both platforms, and a 3D eCommerce interface + store customization.
Hence why I went with Babylon. I’m most at home with Unity, but its web exports leave much to be desired.
The hype didn’t reach me because I didn’t hear about Metaverse until now
Good luck and have as many questions as you wish! I am a newbie here and switched from Unity to BabylonJS for the same reason as well, but will try to help you to solve your problems every time you face them. It’s a cool and nice way to gain experience for me too!