☰

Навмеш


Что такое навигационная сетка (Navigation Mesh)?

Навигационная сетка — это набор моделей, созданных дизайнером сцены для использования ИИ, чтобы гарантировать, что он может перемещаться, не сталкиваясь с физическими объектами на сцене.


Какие важные правила существуют для навигационной сетки?

a. Правило 1,5 метра: При создании сетки на местности или других объектах, по которым можно ходить или на которых можно стоять (крыши, стены замка и т. д.), дизайнерам необходимо располагать навигационную сетку с учётом диаметра 1,5 метра. Этот диаметр должен соблюдаться по вертикальной оси на 1,5 метра. Если это правило 1,5 метра не соблюдается, ИИ не сможет найти путь при ходьбе.

b. Опорные точки (Pivot Points) точек спавна: У каждой точки спавна на сцене есть опорные точки. Грани полигонов навмеша должны включать эти опорные точки точек спавна. В противном случае точки спавна не будут работать.

c. Существующие деревья: У каждого дерева на сцене есть физический объект, который мы называем «капсулой» (capsule). ИИ автоматически видит эти капсулы во время боя. Из-за этого ИИ не будет врезаться в деревья. Навмеш можно наносить под деревьями.

d. Угол местности (Terrain Angle): Есть некоторые области, которые будут непроходимыми из-за их крутого угла наклона. Эти области можно включить через: Shaded > Debug - Terrain Angle. В открывшемся окне Angle Limit дизайнеры могут ввести «50», чтобы включить их отображение. Вы увидите две области, зелёную и красную. Зелёные области проходимы, а красные — нет.

e. Где применять навмеш: Навигационную сетку следует наносить на каждую поверхность, по которой могут ходить игроки. Навигационную сетку не следует наносить под физическими объектами. Поскольку ИИ не умеет прыгать, в областях, доступных только посредством прыжка, не должно быть навигационной сетки.

В навигационной сетке нет операции «Undo» (отмены). Если вы нажмёте CTRL + Z, последнее изменение сцены будет отменено. Не пытайтесь использовать отмену при работе с навигационной сеткой


Сколько типов навигационной сетки нужно применять?

Существует три типа навигационной сетки:

1.Базовые области навигационной сетки (без ID, ID:0), например battle_terrain, hideout или lords hall. 2.Сцены деревень. У таких сцен, как деревни, есть несколько ID навигационной сетки. 3.Сцены осады города (Siege-Town). В таких сценах есть два основных режима видимости: гражданский (Civilian) и осадный (Siege). Сцену города в гражданском режиме можно рассматривать как большую деревенскую сцену. Но в режиме осады есть места и случаи, требующие, чтобы грани навигационной сетки имели специальные ID.


Предварительные знания о моделировании навигационной сетки

При открытии редактора вы увидите панель инструментов, как показано на фото ниже.

Иконка в красном квадрате предназначена для навигационной сетки. Когда вы нажмёте на неё, вы увидите, что в инспекторе откроется «NavigationMeshInspector».

После открытия инспектора навигационной сетки вы увидите в интерфейсе надпись «Editor Mode: Navigation Mesh Select».

Все функции выпадающего меню в инспекторе навигационной сетки можно использовать в режиме Navigation Mesh Select. Нажатие клавиш 1, 2 или 3 на клавиатуре выберет следующие элементы: 1: Вершины (Vertices) 2: Рёбра (Edges) 3: Грани (Faces).


Моделирование навигационной сетки

До сих пор мы говорили о режиме инструмента Navigation Mesh Select. Другой режим редактора для навигационной сетки — это режим Navigation Mesh Add.

Чтобы открыть этот режим, нажмите клавишу «Spacebar» (пробел). Вы увидите предпросмотр вершины на указателе мыши.

После указания 4 разных точек на карте нажмите CTRL+Space, чтобы создать полигон навигационной сетки.

Таблица сочетаний клавиш ниже может быть полезна после этапа создания полигона. Под ней также приведено объяснение инструментов, доступных на вкладке Generation Tools в инспекторе навигационной сетки.

Горячие клавиши навмеша Сочетание клавиш Состояние редактора
Заполнить ближайшие 4 вершины (создаёт квад) Shift + клик Navigation Mesh Add
Заполнить последние 4 вершины (создаёт квад) Ctrl + Space Navigation Mesh Add
Переместить вершину без выделения Ctrl + перетаскивание Navigation Mesh Add
Удалить грань под курсором (вершины остаются) Alt + клик Navigation Mesh Add
Удалить грань и все вершины Alt + X + клик Navigation Mesh Add
Режим выделения — вершина 1 Navigation Mesh Select
Режим выделения — ребро 2 Navigation Mesh Select
Режим выделения — грань 3 Navigation Mesh Select
Выделить все вершины, рёбра или грани (в зависимости от текущего режима выделения) Ctrl + A Navigation Mesh Select
Удалить выделенные вершины, рёбра или грани Delete Navigation Mesh Select

Инструменты генерации

Самые полезные и часто используемые инструменты:


Моделирование навигационной сетки для разных типов сцен

Мы кратко обсудили, как создавать и применять навигационную сетку. Давайте закрепим эту информацию, создав навигационную сетку для сцены деревни с помощью нескольких скриншотов.

1. Сцена деревни

После открытия сцены деревни перейдём на вкладку Visibility и изменим настройки, как показано на скриншоте ниже, чтобы работать удобнее. Visibility Masks > Game Entities (не отмечено), Particle Systems (не отмечено), Layer Flora (не отмечено), Show Paths (не отмечено). Physics Options > Show Entity Physics (отмечено).

Нажмите на иконку навигационной сетки на панели инструментов и откройте вкладку Navigation Mesh Inspector справа. После этого нажмите 3 на клавиатуре, чтобы открыть режим Face (грани). Измените часть ID с 0 на 2.

Давайте создадим нашу первую грань. Как показано на скриншоте ниже, разместите вершины поверх дороги и нажмите CTRL+Space. Вы увидите созданный полигон навигационной сетки. Мы можем разместить ещё 2 вершины рядом с существующим полигоном и нажать Shift+левая кнопка мыши, чтобы создать дополнительные полигоны.



Удерживая CTRL и наводя курсор мыши на вершины, мы увидим жёлтый предпросмотр. Удержание этих вершин левой кнопкой мыши позволит свободно их перемещать.

В режиме Navigation Mesh Select выберите нужный режим (1 (вершина) 2 (ребро) 3 (грань)) и используйте Alt+Delete для удаления. Это оставит вершины на сцене (если выбраны режимы Edge 2 (ребро) и 3 (грань)). Если вы хотите, чтобы вершины стали неактивными, вы можете нажать клавиши Alt+X+Delete. Другой способ удаления находится в режиме Navigation Mesh Add. Если мы наведём курсор на вершину, ребро или грань с зажатой клавишей ALT, мы увидим красный предпросмотр. Мы можем удалить их, щёлкнув левой кнопкой мыши.

Режим Navigation Mesh Select — удаление Режим Navigation Mesh Add — удаление

СОВЕТ ДЛЯ БОЛЕЕ ЛЁГКОГО И БЫСТРОГО СОЗДАНИЯ НАВМЕША


Навигационная сетка должна содержать опорные точки точек спавна. Давайте применим навигационную сетку так, чтобы она была соединена со всеми дорогами и гранями навигационной сетки в точках спавна.


Нажмём Spacebar после создания грани навигационной сетки, чтобы проверить, что ID установлен на 2, и переключим режим редактора на Navigation Mesh Select, затем нажмём клавишу «3» на клавиатуре. Этот процесс гарантирует, что мы выбрали грань навигационной сетки. После этого выделим грань и убедимся, что ID равен 2 в инспекторе навигационной сетки. Мы уже видели, что он был равен 2 в начале, но теперь мы в этом окончательно убедились. Мы можем снять выделение, щёлкнув по пустому месту в видовом окне. Теперь мы можем нажать Spacebar, чтобы переключить режим редактора обратно на Navigation Mesh Add, и продолжить.


Пожалуйста, убедитесь, что ваши области навигационной сетки не содержат физических объектов.

Точки спавна животных можно увидеть на скриншоте ниже. Чтобы убедиться, что на сцене есть точки спавна животных, вы можете щёлкнуть по объекту на сцене и проверить текст, расположенный в нижнем левом углу экрана.

Чтобы предотвратить побег животных, давайте применим навигационную сетку в виде острова и используем ID сетки 2. После этого изменим ID окружающих граней сетки на 3. Таким образом, животные не будут соединены с дорогой и не смогут сбежать.

На сценах есть специальные поля, которые мы называем «общими зонами» (common areas). Вы можете увидеть эти зоны на сцене в виде сферы. Давайте заполним эту сферу гранями навигационной сетки с ID 2, убедившись, что внутри них нет физических объектов.

После того как мы убедились, что все дороги и точки спавна применены и соединены друг с другом, мы завершили первый этап.

Если есть какие-либо непроходимые участки местности, вы можете нажать на опцию «Shaded» в выпадающем меню в верхней панели. Выберите Terrain Angle в поле «Debug» и измените Angle Limit на 50. Теперь мы можем увидеть красные зоны и применить навигационную сетку с учётом этой информации.

Изменим ID на 1 в инспекторе навигационной сетки, убедившись, что ни одна грань навигационной сетки не выбрана. Продолжим применять навигационную сетку, убедившись, что внутри неё нет физических объектов.

Завершим навигационную сетку сцены после того, как убедимся, что каждая поверхность на сцене находится внутри границ (вы можете переключить отображение границ через Visibility > Visibility Masks).

Навигационная сетка этой сцены деревни завершена.

Теперь давайте посмотрим на скриптинг ID навигационной сетки. Перейдите на вкладку Prefabs и найдите «navigation_mesh_deactivator» в поле фильтра. Поместим его на сцену. Выберем объект Navigation_Mesh_Deactivator на вкладке Scene. Откроем выпадающие меню в Entity Inspector > Scripts > NavigationMeshDeactivator. Установим DisableFaceWithId на 1, а DisableFaceWithIdForAnimals на 3.

Сохраните сцену. Процесс создания навигационной сетки для нашей сцены деревни завершён.


Логика ID навигационной сетки

Грани навигационной сетки с ID 2 — это грани навигационной сетки, которые видит ИИ, когда мы гуляем по сцене. Эти грани должны быть соединены друг с другом. Грани, включающие точки спавна животных, также должны иметь ID 2. Причина, по которой эти грани не соединены, заключается в том, что мы не хотим, чтобы животные ходили по дорогам, как человеческие NPC. Чтобы точки спавна животных были активны, ID их грани навигационной сетки должен быть равен 2. Чтобы разорвать их связь с дорогой, мы наносим навигационную сетку, окружающую грани точек спавна животных, с ID 2, и присваиваем новым граням навигационной сетки ID 3. После этого мы также добавляем это в скрипт navigation_mesh_deactivator. Грани с ID 1 — это грани, которые неактивны в режиме прогулки, но их всё равно нужно применить. Когда деревню штурмуют, все навигационные сетки становятся активными, независимо от ID. Они активируются, когда мы гуляем по сцене.

Навигационные сетки с ID 2 активны Все навигационные сетки активны
Эта страница переведена с помощью ИИ и может содержать неточности. Оригинал на английском языке является основным источником.