Hi,
I experienced something similar recently, and I'm wondering if it could be related.
So here's the issue I have: sometimes, a edge will be detected as a "wall edge" by my code although it shouldn't be.
For some collision meshes, I get the results you can see in this screenshot (the red edges are walls edges):

Here is a screenshot of how the tiles are arranged on this surface:

The code I use to detect walls edges is as follow:
// --------------------------------------------------------------------------------------------
void NavMesh::GetWallsEdges(const dtMeshTile* tile, std::vector<Vec3f>& outWalls) const
{
if (!tile || !tile->header || !m_navMesh)
return;
const dtPolyRef base = m_navMesh->getPolyRefBase(tile);
int polyCount = tile->header->polyCount;
for (S32 polyIndex = 0; polyIndex < polyCount; ++polyIndex)
{
const dtPoly* currentPoly = &tile->polys[polyCount];
const dtPolyRef currentPolyRef = base | (dtPolyRef)polyIndex;
// maxSegments should intuitively be DT_VERTS_PER_POLYGON, but some edges cases require
// for an example
const U32 maxSegments = 2 * DT_VERTS_PER_POLYGON;
float segmentVerts[maxSegments * 6]; // * 6 for 2 3d float coordinates
dtPolyRef refs[maxSegments];
memset(refs, 0, sizeof(dtPolyRef) * maxSegments);
int nsegs = 0;
dtStatus status = m_navQuery->getPolyWallSegments(currentPolyRef, m_dtQueryFilter, segmentVerts, refs, &nsegs, maxSegments);
for (int j = 0; j < nsegs; ++j)
{
if (!refs[j])
{
// Wall
const float* segmentPair = &segmentVerts[j*6];
outWalls.push_back(Vec3f(segmentPair[0], segmentPair[1], segmentPair[2]));
outWalls.push_back(Vec3f(segmentPair[3], segmentPair[4], segmentPair[5]));
}
}
}
}
With my debugger, I can break in the NavmeshQuery::getPolyWallSegments method when these edges are detected, but I don't know exactly what to look for to investigate this issue, so I would appreciate if you could give me some pointers :) Also, the Recast code I'm using is around six months old. Do you think it is likely that updating to the most recent version could fix this issue?
Thank you very much,
Julien