Документация/Типы объектов/Special/RecastNavigationSystem.type

From NeoAxis 3D Engine Wiki

Jump to: navigation, search
Перейти на уровень выше

Contents

Описание

RecastNavigationSystem используется для поиска пути между двумя точками с помощью технологии Navigation Mesh (навигационная сетка). Navigation Mesh представляет собой предрасчитанный граф, который повторяет поверхность местности, по которой может перемещаться персонаж. Название Recast приходит из одноименной библиотеки, которая реализует функциональность данного объекта.

Карта Demos\PathfindingDemo\Maps\Example\Map.map является хорошей демонстрацией данного объекта.

RecastNavigationSystem.type01.jpg

Настройка

Создание

Чтобы добавить RecastNavigationSystem на карту, нужно перейти к окну Entity Types, выделить тип в папке Types\Special и щелкнуть по рабочей области.

RecastNavigationSystem.type02.jpg

Для настройки данного типа, сначала требуется выделить его в списке Map Entities.

RecastNavigationSystem.type03.jpg

После этого в окне Properties становятся доступными свойства RecastNavigationSystem и четыре кнопки:

  • Rebuild - перестройка навигационной сетки,
  • Clear - удаление навигационной сетки,
  • Collision - настройка используемой геометрии,
  • Test - проверка работы поиска пути.
RecastNavigationSystem.type04.jpg

Настройка геометрии

При нажатии на кнопку Collision открывается окно Collision Objects. В данном окне нужно настроить объекты, которые будут участвовать в расчете навигационной сетки.

RecastNavigationSystem.type05.jpg

Чтобы добавить или удалить объект из списка, нужно перейти в режим выбора объектов, нажав на кнопку Select Objects. Далее выбирать объекты кликом мыши. Для выбора доступны все объекты, которые имеют коллижен (статичное физическое тело). К ним относятся объекты ландшафта, статичные модели и объекты карты с включенным коллиженом.

RecastNavigationSystem.type06.jpg

Также в окне Recast Geometries есть другие кнопки, а именно:

  • Add All Objects - добавление всех объектов в список для расчета,
  • Clear - очистка списка,
  • Calculate Bounds - рассчитать границы навигационной сетки.

Кнопкой Calculate Bounds удобно пользоваться для автоматического подсчета границ навигационной сетки после редактирования списка объектов. Также границы сетки можно задать вручную через свойства BoundMax, BoundMin, которые описаны в разделе Grid.

Расчет

Для расчета и перерасчета навигационной сетки под свойствами расположена кнопка Rebuild. После того как навигационная сетка рассчитана, она сразу же рисуется в редакторе карт.

Кнопка Clear удаляет рассчитанную навигационную сетку.

Тестирование

Кнопка Test предназначена для проверки поиска пути. После нажатия кнопки откроется окно Pathfinding Test. Чтобы увидеть поиск пути на карте в действии, нужно подвести курсор мыши к месту, от которого нужно найти путь, нажать левую кнопку мыши, и удерживая её, вести вести мышь по карте. Пока кнопка мыши зажата, на карте будет рисоваться путь между двумя указанными точками.

Кроме того для тестирования навигационной сетки есть ряд параметров, которые находятся в окне:

Название Описание
Step size Размер шага. Длина между двумя точками пути.
Polygon pick extents Максимальное расстояние до ближайшего полигона сетки, если начальная точка находится на некотором отдалении от сетки.
Max polygon path Максимальное количество полигонов сетки. Если путь пролегает через большее количество полигонов, то путь не будет найден.
Max smooth path Максимальное число точек в пути.
Max steer points Количество направляющих точек при поиске пути.
RecastNavigationSystem.type07.jpg

Свойства

Название Описание
Agent
AgentHeight Минимальная высота под которой может пройти персонаж.
AgentMaxClimb Максимальная высота между ячейками сетки, на которую может взбираться персонаж.
AgentMaxSlope Максимальный угол склона, по которому может спускаться персонаж, в градусах.
AgentRadius Радиус, ограничивающий фигуру персонажа.
class Entity
Components Список прикрепляемых компонент.
LogicClass Ссылка на класс редактора логики. Подробнее о работе с классами редактора логики.
Name Имя объекта.
Tags Пользовательская информация. Представляется списком пар вида ключзначение. Используется для нужд разработчика.
Type Тип объекта. Не подлежит изменению.
Debug
AlwaysDrawNavMesh Включение постоянной отрисовки навигационной сетки. В значении True сетка всегда рисуется. Используется для отладки.
Detail Mesh
DetailMaxSampleError Максимальное расстояние, на которое может отходить поверхность детальной сетки от исходной геометрии.
DetailSampleDistance Задает размер дискретизации, используемый при сравнении детальной сетки с исходной геометрии. Данный параметр влияет на то, как точно детальная сетка будет совпадать с контурами исходной геометрии. Более высокие значения приближают детальную сетку к поверхности исходной геометрии, но выливаются в большее число треугольников, что приводит к трате большего количества процессорного времени при вычислении пути.
Grid
BoundsMax Максимальные значения координат X, Y, Z для точек, ограничивающих навигационную сетку.
BoundsMin Минимальные значения координат X, Y, Z для точек, ограничивающих навигационную сетку.
CellHeight Высота ячейки, используемая при дискретизации исходной геометрии. Высота вокселя в воксельном разбиении.
CellSize Ширина и глубина ячейки, используемые при дискретизации исходной геометрии. Ширина и глубина вокселя в воксельном разбиении. Ширина и глубина ячейки, задающие основания колонок в воксельном разбиении. Меньшие значения приводят к генерации сетки более приближенной к исходной геометрии, но также ведут к большему количеству вычислений и большей величине используемой памяти.
TileSize Размер тайла.
TrianglesPerChunck Максимальное количество треугольников в каждом блоке во внутреннем дереве ограничивающих параллелепипедах (AABB).
Pathfinding
PathfindingMaxNodes Максимальное число, используемых в поиске пути, точек ломаной линии, задающей путь.
Polygonization
MaxEdgeError Максимальное расстояние, на которое могут отстоять грани сетки от исходной геометрии. Уменьшение значения параметра приведет к повышению точности сетки, но также вызовет рост количества треугольников в ней.
MaxEdgeLength Максимальная длина граней многоугольников, которые представляют собой границы сетки. Если значение параметра превысит длину отдельной грани, то к границе будут добавлены дополнительные вершины. Значение 0 отключает эту функцию.
MaxVerticesPerPolygon Максимальное количество вершин в многоугольнике.
Regions
MergeRegionSize Регион меньше, указанного в параметре размера, при возможности, будет объединен с большим регионом. Значение указывается в вокселях. Эта опция помогает уменьшить количество небольших регионов.
MinRegionSize Минимальный размер для отдельно стоящего региона (несоединенного с другими). Значение указывается в вокселях. Регионы, несоединенные с другими и меньше данной величины, будут исключены из обработки до генерации навигационной сетки. Таким образом, они станут недоступны для поиска пути.
MonotonePartitioning Разделение проходимых поверхностей на простые регионы без дыр.