Тема: Генерация NavMesh и поиск оптимальных путей
Закажите новую по вашим требованиям
Представленный материал является образцом учебного исследования, примером структуры и содержания учебного исследования по заявленной теме. Размещён исключительно в информационных и ознакомительных целях.
Workspay.ru оказывает информационные услуги по сбору, обработке и структурированию материалов в соответствии с требованиями заказчика.
Размещение материала не означает публикацию произведения впервые и не предполагает передачу исключительных авторских прав третьим лицам.
Материал не предназначен для дословной сдачи в образовательные организации и требует самостоятельной переработки с соблюдением законодательства Российской Федерации об авторском праве и принципов академической добросовестности.
Авторские права на исходные материалы принадлежат их законным правообладателям. В случае возникновения вопросов, связанных с размещённым материалом, просим направить обращение через форму обратной связи.
📋 Содержание
Постановка задачи 5
Обзор литературы 6
Обзор алгоритмов генерации навигационных сеток 7
Глава 1. Алгоритм генерации навигационной сетки 9
1.1. Начало алгоритма 10
1.2. Создание переходов 12
1.3. Переход Вершина-Вершина 12
1.4. Переход Вершина-Грань 13
1.5. Переход Вершина-Переход 14
1.6. Удаление ранее созданных переходов 15
1.7. Слабое определение выпуклости 16
1.8. Результат алгоритма 18
Глава 2. Поиск пути в навигационных сетках 19
2.1. Алгоритм поиска в ширину (breadth-first search, BFS) 19
2.2. Алгоритм Дейкстры 23
2.3. Алгоритм А* 28
2.4. А* в навигационных сетках 34
2.5. Сравнение и выявление лучшего из рассмотренных алгоритмов поиска 36
Глава 3. Реализация Unity проекта 44
3.1. Примеры работы 47
Выводы 49
Заключение 50
Список литературы 51
Приложение 53
📖 Введение
Навигация в виртуальном мире осуществляется с помощью алгоритма А* вместе с локальным алгоритмом движения для нахождения оптимального пути. Навигационные сетки наиболее популярный подход для объединения алгоритмов поиска пути с локальными алгоритмами движения.
Рисунок 1. Пример навигационной сетки (NavMesh).
Навигационная сетка (NavMesh) - это абстрактное представление виртуального мира игры в виде ячеек, образующих доступное для перемещения компьютерных персонажей пространство (рисунок 1). Ячейки в этом пространстве являются многоугольниками. В зависимости от количества сторон у этих многоугольников, навигационные сетки делятся на триангуляционные и полигональные. Пример триангуляционной сети показан на рисунке 1 (серые многоугольники представляют пространство доступное для передвижения, белые многоугольники - препядствия). Многоугольники в навигационной сетке должны быть выпуклыми. Это необходимо для свободного перемещения персонажа игры внутри одного многоугольника. В этом случае алгоритм поиска оптимального пути может исполняться на графе, в котором ячейки являются узлами графа, а соединения между ними образуют переходы и являются ребрами графа.
Во многих случаях разработчикам требуется создавать навигационные сетки вручную, что занимает много времени и может привести к ошибкам, при которых образуются области недоступные для передвижения игровых персонажей, либо персонажи начинают застревать в углах и препятствиях. Поэтому существуют специальные алгоритмы генерации навигационных сеток для предотвращения таких ошибок.





