Clipper.Execute()

Some Background:
I was interested in using NavmeshCut scripts in such a way that they would ‘preserve their outer edges’ when intersecting with other NavmeshCut scripts.

So I looked through the “Clipper” documentation and tried out different combinations of ClipTypes and PolyFillTypes and it seems that using…:

clipper.Execute(ClipType.ctDifference, sol, PolyFillType.pftEvenOdd, PolyFillType.pftEvenOdd);

…seems to produce the ‘most clean’ results in the case of NavmeshCut script intersection (though to be honest, it did get a bit confusing for me trying to figure out the effects of ClipType vs PolyFillType vs the A* cutting operation order).

Actual Question:
So with my results (as seen the in attached image), it appears that some node areas ‘overlap’ and that some edges just ‘go off to nowhere’, and I’m wondering if that is actually the case or if it is just a display issue inside Unity.

Side Notes:
As an alternative, it does seem that if you ‘cut in steps’ (meaning make a base mesh and save it, load it and make some cuts then save it, the load it again and make more cuts; I can actually get perfectly preserved intersecting geometry) I can get what I want for static objects / areas. It is tedious but doesn’t require any modification of the system.

Hi

From what I can see most things seem to have been cut correctly, though it looks like the navmesh overlaps where the navmesh cuts overlap. I haven’t experimented with it myself, but I think it would be tricky to cut everything at the same time and get the behaviour that you want. Doing it iteratively would definitely work as you say.

1 Like

Thanks for the info.