Навигационная сетка


Что такое навигационная сетка?
Navigation Mesh - это компиляция моделей, созданных сценоделом для ИИ, чтобы убедиться, что боты будут перемещаться, не сталкиваясь с физическими объектами в сцене.


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

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

b. Точки поворота для точки спауна: у каждой точки появления в сцене есть точки поворота. Грани многоугольника Navmesh должны включать эти точки поворота. В противном случае точки спауна не будут работать.

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

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

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

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

Сколько типов навигационной сетки необходимо применить?
Существует три типа навигационной сетки:

1. Базовые области навигационной сетки (без ID, ID: 0), например, battle_terrain, укрытие или тронный зал.
2. Деревенские сцены. Такие сцены имеют несколько ID (идентификаторов) навигационной сетки.
3. Сцены осадного города. В таких сценах есть два основных режима видимости: Гражданский и Осада. Городскую сцену в гражданском режиме можно рассматривать как сцену большой деревни. Но в режиме осады есть некоторые места и случаи, когда грани навигационной сетки должны иметь специальные идентификаторы.

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


Значок в красном квадрате предназначен для навигационной сетки. Щелкнув по нему, вы увидите, что в инспекторе открыт NavigationMeshInspector.


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



Все функции раскрывающегося меню в Navigation Mesh Inspector можно использовать в режимах Navigation Mesh Select. Нажатие 1, 2 или 3 на клавиатуре выберет эти режимы:
1: Вершины
2: Ребра
3: Грани.


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

** До сих пор мы говорили о режиме Navigation Mesh Select Tool. Еще один режим редактора для навигационной сетки - это режим Navigtation Mesh Add.





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


Выделив 4 разные точки на карте, нажмите CTRL + Пробел, чтобы создать многоугольник Navigation Mesh.




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

НАВИГАЦИОННЫЙ МЕШ
КЛАВИША
РЕЖИМ РЕДАКТОРА
Заполнить ближайшие 4 вершины (создает четырехугольник)
Shift + клик
Navigation Mesh Add
Заполнить последние 4 вершины (создает четырехугольник)
Ctrl + Пробел
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


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

Наиболее полезные и используемые инструменты:
  • Extrude (выдавливание): выдавливание по оси выбранного края (или краев).
  • Fill (заливка): заливка между выбранными вершинами навигационной сетки и формирование грани (face).
  • Grow Selection увеличивает выделение, выделяя элементы, смежные с выбранными элементами (работает для всех структур вершин, ребер и граней).
  • Connect (соединить): соединяет выбранные две вершины навигационной сетки, рисуя границу между ними.
  • Weld (сварка): удаляет вершины, образующие ребро, и делает ребро одной единственной вершиной. Ребро соединяет старые смежные вершины с вновь созданной вершиной/вершинами. Если проще, то функция "сваривает" два ребра с вершинами в одно.

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

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

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


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


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


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


В режиме Navigation Mesh Select выберите, какой режим вы хотите использовать,
1: Вершины
2: Ребра
3: Грани
И используйте Alt + Delete для их удаления. Если выбраны (2: Ребра) и (3: Грани), то в сцене останутся Вершины. Если вы хотите, чтобы вершины были неактивными, вы можете нажать клавиши Alt + X + Delete.
Другой метод удаления - в режиме Navigation Mesh Add. Если мы наведем курсор на вершину, ребро или грань с нажатой кнопкой ALT, мы увидим красное превью. Мы можем удалить их, нажав ЛКМ.


Простой способ создания навсетки

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



Нажмем пробел после создания грани навигационной сетки, чтобы убедиться, что для идентификатора установлено значение 2, и изменим режим Editor на режим Navigation Mesh Select mode и нажмем клавишу «3». Этот процесс гарантирует, что мы выбрали грань навигационной сетки. После этого выберите грань и убедитесь, что ID равен 2 в Navigation Mesh Inspector. Мы уже видели, что там было 2, когда мы начали, но теперь мы уверены, что это 2. Мы можем отменить выбор, щелкнув на пустое место в Viewport (окно просмотра). Теперь мы можем нажать пробел, чтобы изменить режим Editor на Navigation Mesh add and continue (добавить и продолжить).



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



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



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



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



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



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



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



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



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



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


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


Логика идентификаторов навигационной сетки

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

Грани с идентификатором 1 - это грани, которые не активны в режиме ходьбы, но они должны быть применены. Когда на деревню совершают набег, все навигационные сетки активны, не глядя на идентификаторы. Они активируются, когда мы гуляем по сцене.

Активны навигационные сетки с ID 2
Активны все навигационные сетки






- используйте эту кнопку если вы обнаружили ошибку/искажение содержимого/отсутствие контента в новости или если хотите сообщить администрации о выходе новой версии мода и т.п.

Комментариев 0

Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Онлайн

Сейчас на сайте: 190
Гостей: 188

Пользователи: 
- отсутствуют

Последние комментарии

Парламент commando
Samiraldos, Сегодня, 08:55
Цитата: ArtkolobokSamiraldos, Хорошо, но чтобы получить быстрый ответ, заходи на наш дискорд...
Парламент commando
Artkolobok, Вчера, 13:56
Samiraldos, Хорошо, но чтобы получить быстрый ответ, заходи на наш дискорд сервер:...
Парламент commando
Samiraldos, Вчера, 07:44
Цитата: ArtkolobokSamiraldos, Идея с партиями давно утратила свою актуальность, да и никто особо не...
MOD Voice Acting - AI Voice Acting for Every Character
Gut, 19 ноября 2024 18:13
с возвращением, грац!!...
Парламент commando
Gut, 19 ноября 2024 18:03
Samiraldos, Если есть желание, то всегда можно найти компромисс. Сами по себе партии утратили...
Парламент commando
Artkolobok, 19 ноября 2024 09:57
Samiraldos, Идея с партиями давно утратила свою актуальность, да и никто особо не хочет этим...
Парламент commando
Samiraldos, 19 ноября 2024 03:23
Я бы добавил должность партии в виде фрилансеров. Ну допустим я играю сейчас в МиБ потом буду...
Кольца
Samiraldos, 19 ноября 2024 03:06
https://commando.com.ua/uploads/posts/2018-05/1525510484_zol-bol-rad.png...