Sto cercando di trovare una soluzione a questo problema. Sto cercando di costruire una mesh di navigazione nel formato di una griglia di vertici bloccata su coordinate x, y con pavimento a forma di quadrati per lo spazio 3D. Ma sto riscontrando problemi nel cercare di trovare un modo per farlo.
Ho provato a guardare nella libreria di rifusione. È un metodo abbastanza robusto, ma a quanto pare rallenta con mappe più grandi e spazio aperto. Inoltre non so come generano vertici e spigoli per lo spazio mondiale con la mappa di altezza.
Il mio prossimo pensiero fu quello di fare quello che faceva Unreal Engine 3.
https://udn.epicgames.com/Three/NavigationMeshReference.html
Che doveva usare i raycast per generare la mesh. Non riuscivo a capire come fermare i raycast.
Quindi ... la mia prossima opzione era box, probabilmente un cast box. Crea un volume suddiviso con una dimensione che sia una potenza di 2. Allinea la scatola alla griglia e spara i prismi rettangolari verso il basso come un raggio. Se atterra su un pezzo di geometria che fa parte del terreno e il rettangolo non viene intersecato, lascia lì un quadrato. E continuare verso il basso fino a raggiungere i limiti del volume. Per verificare se i bordi devono essere collegati, suppongo di poter verificare se la pendenza tra due coppie di vertici si trova all'interno della pendenza percorribile, unendoli se questo è vero.
I miei problemi principali sono ... questo non sembra essere molto ottimale. Senza pensarci, alla stima il processo è O (N ^ 3) per un livello multistrato. Che può diventare piuttosto brutto.
E l'ultimo bit è per la creazione automatica di gruppi rettangolari di questi quadrati. Non sono del tutto sicuro di come farlo. L'implementazione di Unreal li separa per pendenze. Tuttavia, sto cercando di mantenere il formato della griglia. Quindi non è del tutto necessario. Il problema persiste nella creazione di grandi tessere rettangolari per suddividere il processo di ricerca del percorso in una base per tessera. Le tessere non possono essere troppo grandi, né troppo piccole.
Quindi le domande sono ...
Quale sarebbe un modo efficiente per generare questa navmesh cinta? E quale sarebbe un buon modo per creare le piastrelle?