Я намагаюся знайти рішення цієї проблеми. Я намагаюся побудувати навігаційну сітку у форматі сітки вершин, зафіксованих на x, y покладені координати у формі квадратів для 3D-простору. Але у мене виникають проблеми, намагаючись розібратися з цим шляхом.
Я спробував заглянути в бібліотеку Recast. Це досить надійний метод, але він, мабуть, сповільнюється з більшими картами та відкритим простором. Я також не знаю, як вони генерують вершини та ребра для світового простору за допомогою карти висоти.
Наступною моєю думкою було зробити те, що раніше робив Unreal Engine 3.
https://udn.epicgames.com/Three/NavigationMeshReference.html
Який повинен був використовувати промені для створення сітки. Я не міг зрозуміти, як зупинити радіопередачу.
Отже ... наступним моїм варіантом була скринька, можливо, лита коробка. Створіть розділений об'єм з розміром, потужністю 2. Вирівняйте поле в сітку та зніміть прямокутні призми вниз, як промінь. Якщо він приземляється на частину геометрії, яка є частиною землі, а прямокутник не перетинається, залиште там квадрат. І продовжуйте вниз, поки не буде досягнуто меж гучності. Щоб перевірити, чи потрібно з'єднувати краї, я вважаю, що я міг би перевірити, чи є нахил між двома парами вершин в межах схилу, що може пройти, об'єднати їх, якщо це правда.
Мої основні проблеми - це, здається, не дуже оптимально. Не замислюючись над цим, при оцінці процес є O (N ^ 3) для багатошарового рівня. Що може стати досить неприємним.
І останній біт - це автоматично створювати прямокутні групи цих квадратів. Я не зовсім впевнений, як це зробити. Нереальна реалізація розділяє їх за схилами. Однак я намагаюся зберегти формат сітки. Тож це не зовсім необхідно. Проблема все ще залишається у створенні великих прямокутних плиток, щоб розділити процес пошуку шляху на основі плитки. Плитка не може бути ні великою, ні занадто малою.
Тож питання ...
Який був би ефективний спосіб генерувати цей захищений навмеш? І який би був хороший спосіб створити плитку?