isaac-mason / recast-navigation-js

JavaScript navigation mesh construction, path-finding, and spatial reasoning toolkit. WebAssembly port of Recast Navigation.
https://recast-navigation-js.isaacmason.com
MIT License
256 stars 22 forks source link

Solo navsmesh generation fails for big terrain #149

Closed yelouafi closed 12 months ago

yelouafi commented 12 months ago

Trying to generate a solo navmesh with a 0.2 for the scene attached below; fails with the error Failed to build regions or Failed to create Detour navmesh data;

It succeeds though if I use 0.5 voxel size

scene.glb

isaac-mason commented 12 months ago

Thank you for reporting the issue and providing the model!

I believe I've reproduced this issue in Recast itself using RecastDemo. I'll need to investigate further, but we might need to: a) Check if this is fixed in the latest Recast versions. b) If not, consider upstreaming this issue.

RecastDemo also fails to generate a navmesh with cell size and cell height both set to 0.2 and a slope angle of 60. I'll need to confirm if this failure is for the same reason.

Interestingly, these variations also succeed:

image image

Here's the model as a obj, RecastDemo doesn't support gltf/glb - big-terrain.obj.zip

isaac-mason commented 12 months ago

Looking at the buildContext logs, this appears to be the root cause:

https://github.com/recastnavigation/recastnavigation/blob/cd898904b72a300011fbb24d578620bafa08ef2c/Recast/Source/RecastRegion.cpp#L1621

This looks like a limitation of the watershed partitioning method that recast-navigation-js uses for it's default solo nav mesh generator.

If you're interested, you can read more about the different partitioning options here: https://github.com/recastnavigation/recastnavigation/blob/cd898904b72a300011fbb24d578620bafa08ef2c/RecastDemo/Source/Sample_SoloMesh.cpp#L522

isaac-mason commented 12 months ago

The general advise I've read on recast's google discussions + github is to create tiled navmeshes for large maps.

That said, the tiled nav mesh generator also appears to have some bugs. Generation succeeds, but tiles aren't connected.

Let's at least leave this issue open until tiled nav mesh generation issues are fixed 🙂

image
isaac-mason commented 12 months ago

Fix for tiled nav mesh generation incoming 🙂

image
isaac-mason commented 12 months ago

v0.10.2 will be released shortly with the tiled nav mesh generator fix, and navmesh.isaacmason.com has been updated now.

Let's convert this issue to a discussion, I think others will benefit from this.

LMK if you have any questions!