Hi,
Recast is build with the assumption that the character is always
walking on ground affected by gravity. This has allowed to me to
simplify anything from the data structures for voxelization to some
queries on runtime. I think Climbing on walls is such a complicated
problem that it is outside the scope of Recast.
Then to the speculation for the sake of interesting problem :) The
first thing you should define for a navigation system is how the
character collides with the world. That in turn defines what kind of
tests you need to do to figure out walkable surfaces. For example
Recast assumes that the character is an upright cylinder. Recast finds
walkable areas by testing if such collider can be placed on top of
every surface. In practice this is very different, but that is the
core idea behind the voxelization, low area filtering and border
dilation.
Making the collider upright simplifies these tests a lot. If your
character is able to climb walls, maybe the collider should be places
aligned to the normal of the surface? This complicates the processing
quite a lot. The more complicated your collision model is the more
complicated the navigation data is.
Building a navmesh from arbitrary voxel surface is not trivial either.
It is more or less a polygon mesh simplification problem, with a huge
polymesh. Assuming gravity, or projection from one direction,
everything is so much simpler :)
On the other hand, of your character can climb any surface, is there
any need for navigation mesh at all?
--mikko