WebXR teleport to lower floors changes teleport behavior drastically


WebXR immersive mode - Teleporting to a lower floor causes the teleport behavior to work less effectively. The minimum teleport distance while pointing at the ground seems to grow proportionately to how far down that floor is.

Users also have trouble teleporting up ramps once they get down to a lower level.

The only way to make this work predictably is to point the controller very high into the air (almost vertical). Lowering the parabolicCheckDistance lessens the issue when going to a lower floor but you cannot teleport as far.

This has been brought up before but this happens also in this trivial example. https://playground.babylonjs.com/#CVVLJ9#16.



resolved earlier half of the post, thanks for the help @Cedric

Kinda 2 things here. VR teleport bug, and I need a hand getting the demonstration playground example to work to begin with. The bug is reproduced in our codebase, but just having a struggle getting navmeshes working in babylon playground here.

A) https://playground.babylonjs.com/#CVVLJ9#11

The navmesh in this playground doesn’t work.
I would set it up like the other examples but don’t you have to have separate wall meshes and such? I don’t have the assets handy for that right now.

Our code uses Recast plugin, but imports it and passes the module in. Usual examples dont pass anything in. We use buildFromNavmeshData.

            const navigationPlugin = new BABYLON.RecastJSPlugin(recast);
            const navMeshURL = "https://cdn.glitch.global/38b631a0-9744-4531-a771-2d87d5e99fc3/frame-aud3-navmesh.bin?v=1691102803753";

                new Uint8Array(navmeshBinary)
            let navmeshdebug = navigationPlugin.createDebugNavMesh(scene);

Can anyone help fix this? It demonstrates the bug below.

CC @Cedric regarding recast
I will look into the teleportation issue

Hi @NightSkies
Here is a quick PG that loads your navmesh binary data:

It’s using Babylon.js Tools to load the file because I’m more used to this API.

Thanks! I was able to get my WebXR bug example totally working/and buggy as intended.

A is done.

B ?
The example above demonstrates very wierd behavior with the teleport once you start going down levels. I have to either point through the floor at a steep down angle or an extreme high angle (instead of just aiming for a spot on the floor).
Even the starting area of the mesh does odd things too.

Playground sample has been updated, and demonstrates the bug!


sorry, assigning this to me, i’ll see what can be done here

Thanks for looking at it.
In our actual application, the starting area does appear to behave more normally than the babylon playground example. But certainly, the problem gets worse the further you go down, and it is also directly proportionate to the parabolicCheckDistance.