Коротко
- Navigation System строит Navigation Mesh на основе геометрии коллизий уровня и разбивает сеть на полигоны, используемые для поиска пути.
- Доступны три режима генерации сети: Static, Dynamic и Dynamic Modifiers Only.
- Назначенная полигонам стоимость влияет на выбор маршрута агентом.
- RVO и Detour Crowd Manager помогают агентам обходить движущиеся препятствия и других агентов.
В официальной документации Unreal Engine Navigation System описана как система, позволяющая ИИ-агентам прокладывать путь по уровню. Для команд, создающих архитектурные презентации, интерактивные интерьеры или сцены для визуализации в реальном времени, важно определить область, по которой будут перемещаться агенты, и задать правила выбора маршрута к цели. Поскольку в документации не указана конкретная версия Unreal Engine, ниже рассматриваются общие понятия, не привязанные к номеру версии.
1. Сначала разберитесь, как работает сеть маршрутов
Navigation System использует геометрию коллизий уровня для построения Navigation Mesh — навигационной сетки. Сетка разбивается на тайлы, а те — на полигоны, которые агенты могут использовать для поиска пути. Система рассматривает полигоны как граф и ищет маршрут с наименьшей суммарной стоимостью, учитывая стоимость, назначенную каждому полигону.
Поэтому маршрут определяется не только геометрическим расстоянием между двумя точками. Стоимость области влияет на то, будет ли агент выбирать её для перемещения. Например, если в презентационной сцене нужно направить посетителей по определённому маршруту, правила стоимости можно использовать, чтобы повлиять на выбор пути. Однако, согласно документации, для конкретных значений стоимости и их применимости в разных проектах нет универсальных рекомендаций: их следует выбирать с учётом назначения интерактивного опыта.
2. Выберите режим генерации Navigation Mesh
В документации перечислены три режима генерации: Static, Dynamic и Dynamic Modifiers Only. Они определяют, как проект генерирует Navigation Mesh и какие параметры доступны. В исходном описании нет подробностей о поведении режимов и рекомендаций по выбору для разных типов сцен. Поэтому при выборе нужно учитывать потребности проекта в генерации сети и сверяться с официальным подробным руководством по соответствующему режиму.
Базовый рабочий процесс можно выстроить так:
Определите, каким уровнем будут пользоваться агенты. Поскольку сеть маршрутов строится на основе геометрии коллизий уровня, проверьте, как перемещаемая область соотносится с геометрией сцены. Не считайте, что любая поверхность, которая визуально выглядит проходимой, автоматически станет подходящей областью для навигации.
Выберите способ генерации Navigation Mesh. В зависимости от потребностей проекта рассмотрите варианты Static, Dynamic или Dynamic Modifiers Only. Не делайте выводов о работе режимов только по их названиям — обратитесь к официальным описаниям.
Проверьте охват сети. Учитывая, что сеть разбивается на тайлы и полигоны, убедитесь, что области, в которые агенты должны попадать, представлены в навигационной сети.
Оцените стоимость маршрутов и переходы. Помните, что стоимость полигонов влияет на выбор маршрута. Также Navigation Mesh можно соединять области, которые не примыкают друг к другу, например платформы или мосты.
Отдельно учтите движущиеся препятствия. Если агентам нужно обходить динамические препятствия и других агентов во время движения, изучите методы RVO или Detour Crowd Manager.
3. Настройте персонажа с компонентами движения и анимации
В документации Unreal Engine Character описан как класс Pawn, расширенный определёнными компонентами. В Character входят CharacterMovementComponent, CapsuleComponent и SkeletalMeshComponent. Это важно учитывать при создании движущегося в визуализации персонажа: поиск пути нельзя рассматривать в отрыве от представления движения и коллизий персонажа в сцене.
CharacterMovementComponent поддерживает такие типы движения, как ходьба, бег, прыжки, полёт, падение и плавание. Согласно документации, этот компонент содержит параметры трения при ходьбе и падении, скорости перемещения по земле, в воздухе и под водой, подъёмной силы, масштаба гравитации, а также силы, которую персонаж может прикладывать к физическим объектам. Необязательно менять все эти параметры в каждой сцене; задача — обеспечить соответствие движения персонажа замыслу интерактивного опыта.
CapsuleComponent используется для коллизий при перемещении. Расчёт сложной геометрии движения в CharacterMovementComponent основан на предположении, что компонент коллизий класса Character — это вертикально ориентированная капсула. Поэтому видимая модель персонажа может отличаться от его коллизионного представления; при разборе проблем с маршрутом и движением недостаточно смотреть только на внешний вид SkeletalMeshComponent.
SkeletalMeshComponent представляет основной скелетный меш, используемый для продвинутой анимации с ригом. В классы, производные от Character, можно добавлять и другие компоненты Skeletal Mesh. Однако движение и анимация основного скелета персонажа обрабатываются через этот компонент.
4. На что обратить внимание в архитектурном и archviz-процессе?
В интерактивном архитектурном проекте Navigation System может пригодиться, если посетители должны перемещаться к целям внутри интерьера или по благоустроенной территории. В первую очередь следует проверить, соответствует ли сеть маршрутов реальной геометрии сцены и коллизионному представлению. Если агент не может достичь цели, причина может быть не только в алгоритме поиска пути: нужно также проверить, охватывает ли сеть нужную область и как настроены компоненты движения персонажа.
Epic в своей документации также отсылает к отдельным материалам по изменению Navigation Mesh, пользовательским областям навигации и фильтрам запросов, Navigation Invokers, оптимизации скорости генерации, совместному использованию сетей разного разрешения и работе сети с World Partition. Эти темы можно изучить на более продвинутом этапе, однако в доступном описании нет подробных настроек этих функций, поэтому рекомендовать конкретную конфигурацию или значения было бы некорректно. Аналогично, автоматическое создание связей между сетями и расширение поиска пути с помощью Navigation Components вынесены в отдельные руководства официальной документации.
Частые ошибки
Считать, что если видимая модель выглядит способной ходить по поверхности, это доказывает, что Navigation Mesh охватывает эту область.
Не учитывать влияние стоимости полигонов на выбор маршрута.
Рассматривать необходимость обхода движущихся препятствий и других агентов как задачу, решаемую только базовой сетью маршрутов.
Подбирать настройки на основе предположений о поведении режимов, значениях по умолчанию или путях в меню, если этих данных нет в источниках.
Если при первой проверке отдельно изучить сеть, цели и движение персонажа, будет проще определить, на каком уровне возникает проблема. В примере проекта Epic по Navigation System есть демонстрационные уровни, охватывающие разные руководства; их можно использовать для сравнения с базовым рабочим процессом.
Источники
Источников: 2Тексты источников не перепечатываются; короткие цитаты отмечены, остальное — наш пересказ и комментарий.
Для архитектурных и визуализационных бюро в Турции Navigation System может стать полезной основой, если в интерактивной презентации нужно направлять посетителя по сцене. Практичнее всего начать с простого маршрута и движения персонажа, а затем проверить охват сети и влияние стоимости полигонов.
В доступной документации нет конкретных требований к оборудованию, условий лицензирования или числовых настроек; не следует строить предположения на этот счёт. Экономия времени команды зависит от того, насколько отдельно рассматриваются проблемы навигационной сети, коллизий и движения персонажа. При выборе режима генерации и продвинутых функций навигации полезно обращаться к подробным официальным руководствам — это поможет избежать ошибочных предположений на раннем этапе.
Частые вопросы
Как работает Unreal Engine Navigation System?
Система строит Navigation Mesh на основе геометрии коллизий уровня. Она разбивает сеть на тайлы и полигоны, а агенты ищут путь с учётом стоимости полигонов.
Какие режимы генерации Navigation Mesh доступны в Unreal Engine?
В официальной документации перечислены три режима генерации: Static, Dynamic и Dynamic Modifiers Only. Общее описание в документации не раскрывает подробности их работы.
На каких компонентах основано движение персонажа в Unreal Engine?
В состав Character входят CharacterMovementComponent, CapsuleComponent и SkeletalMeshComponent. Они отвечают соответственно за движение, коллизии при перемещении и скелетную анимацию.



