Simple и Complex коллизии в Unreal Engine

Друзья, приветствую, с Вами Будуев Антон. В Unreal Engine для Static Mesh существует два типа коллизии, которые разработчики могут использовать для определения взаимодействия Mesh с объектами в игровом мире: Simple Collision (простая) и Complex Collision (сложная, комплексная). В этой статье мы подробно рассмотрим оба типа коллизии, их особенности и области применения.

Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.

Прежде чем углубляться в изучение простых и сложных коллизий, рекомендую также ознакомиться с самой концепцией коллизий в игровом движке: Unreal Engine Collision.

Simple Collision

Simple Collision (простая форма столкновения) — базовый тип коллизии, в которой для определения границ столкновения объектов вместо использования сложной детализированной геометрии самой модели используются геометрические примитивы, такие как кубы, сферы, капсулы и выпуклые оболочки.

Эти формы являются менее ресурсоемкими по сравнению со сложными Mesh и отлично подходят для создания коллизий для динамических объектов и элементов окружения, где высокая точность не требуется. Они просты в реализации, обеспечивают быструю проверку столкновений и пересечений, жертвуя точностью ради скорости вычислений. В результате чего используют меньше вычислительных ресурсов, что повышает общую производительность.

Simple Collision: выпуклая оболочка (зелёные грани) для лестницы, сфера (жёлтые грани) для персонажа
Simple Collision: выпуклая оболочка (зелёные грани) для лестницы, сфера (жёлтые грани) для персонажа

Виды простой коллизии

Всего существует 4 формы простой коллизии.

  1. Box Collision (ящик) — прямоугольный параллелепипед. Отлично подходит для объектов с угловатыми формами.
Пример Box Simple Collision
Пример Box Simple Collision
  1. Sphere Collision (сфера) — шарообразная форма. Подходит для объектов с округлой формой, таких как шары, камни или другие округлые элементы.
Пример Sphere Simple Collision
Пример Sphere Simple Collision
  1. Capsule Collision (капсула) — цилиндр с полусферами на концах. Это стандартная форма для персонажей и других объектов, требующих определенной высоты и ширины.
Пример Capsule Simple Collision
Пример Capsule Simple Collision
  1. Hull Collision (выпуклая оболочка) — это автоматический вариант, который генерируется движком при создании простой коллизии в Static Mesh Editor через меню Collision инструментами Add 10-26 DOP Simplified Collision и создаёт на основе геометрии объекта только выпуклую форму. Это означает, что вогнутые части формы будут заполнены. Она более точна, чем Box/Sphere/Capsule, но все еще значительно быстрее, чем сложная Complex Collision. Ее стоит использовать, когда простые формы не дают достаточной точности.
Пример Hull Simple Collision
Пример Hull Simple Collision

Часто для создания точной копии 3D-модели используют комбинацию форм простой коллизии. Это позволяет сохранить простоту коллизии, но при этом более точно воссоздать особенности реальной модели.

Например, чтобы создать точную Simple коллизию для скамьи, можно использовать четыре Box коллизии. Каждую из них нужно уменьшить в масштабе и разместить на соответствующих частях скамьи: на сиденье, спинке и обоих подлокотниках.

Пример составной Simple Box коллизии для скамьи
Пример составной Simple Box коллизии для скамьи

Как в Unreal Engine создать / добавить Simple Collision

Simple Collision в Unreal Engine можно добавить к объекту в редакторе Static Mesh через меню Collision, установив эту коллизию непосредственно на сам Mesh.

Simple Collision в Unreal Engine можно добавить к объекту в редакторе Static Mesh через меню Collision
Simple Collision в Unreal Engine можно добавить к объекту в редакторе Static Mesh через меню Collision

На выбор в меню Collision представлены все 4 типа коллизии, которые мы уже обсуждали.

  • Add Sphere Simplified Collision — сферическая простая коллизия;
  • Add Capsule Simplified Collision — капсульная простая коллизия;
  • Add Box Simplified Collision — простая коллизия в форме ящика;
  • Add DOP Simplified Collision — различные варианты выпуклой оболочки, различающиеся по точности повторения формы 3D-модели.

Чтобы в редакторе Static Mesh отобразить сами коллизии, нажмите на меню Show и включите опции Simple Collision или Complex Collision.

Меню Show, опции Simple Collision или Complex Collision
Меню Show, опции Simple Collision или Complex Collision

Также простую коллизию можно настроить и в Blueprint-классах Actor, добавив соответствующий компонент коллизии (Box / Sphere / Capsule Collision Component).

Simple Collision в Unreal Engine можно добавить к Актору через компоненты Box/Sphere/Capsule Collision Component
Simple Collision в Unreal Engine можно добавить к Актору через компоненты Box/Sphere/Capsule Collision Component

Примером, когда должна использоваться Simple Collision, может являться сцена с множеством деревьев. Вместо того чтобы для создания сложной коллизии использовать точные трёхмерные модели Mesh для каждого дерева, необходимо применить простые капсульные формы коллизий вокруг стволов и сферические формы для крон. Это существенно ускорит проверку столкновений и снизит нагрузку на игровой движок.

Complex Collision

Complex Collision (сложная форма столкновения)  — представляет собой более продвинутый метод обработки коллизий, который способствует более точному взаимодействию объектов в игре. Данная коллизия создаётся движком автоматически, используя оригинальную геометрию трёхмерных моделей Mesh, чтобы обеспечить максимальную точность в определении границ объектов. Это означает, что коллизия определяется на основе всех треугольников (полигональных сеток), которые составляют объект, что позволяет получить более сложное и точное взаимодействие с игровым пространством.

Complex Collision - сложная коллизия для лестницы (бирюзовая сетка), которая в точности повторяет трёхмерную модель самого Mesh
Complex Collision — сложная коллизия для лестницы (бирюзовая сетка), которая в точности повторяет трёхмерную модель самого Mesh

Сложная коллизия позволяет избежать проблем с неправильными столкновениями. Объекты будут взаимодействовать более реалистично, учитывая их форму и детали.

Разница между Simple и Complex Collision
Разница между Simple и Complex Collision

Complex Collision в Unreal Engine является мощным инструментом для обеспечения максимальной точности при обработке пересечений и столкновений. Но взамен, из-за необходимости учитывать каждую вершину и грань модели Mesh, проверка таких столкновений требует больше вычислительных ресурсов, что может привести к снижению производительности и частоты кадров (FPS), особенно при большом количестве объектов.

Чаще всего данная коллизия используется для ключевых объектов, которые требуют точного физического моделирования, таких как транспортные средства, оружие или персонажи.

В Skeletal Mesh применяется другой тип коллизии на основе физических тел и их ограничений, описанных в специальном ассете Physics Assets. Также эту физическую коллизию ещё называют Ragdoll или «тряпичная кукла» (применяется для человекоподобных персонажей).

Детальное описание «тряпичной куклы» с разбором всех её параметров и примерами кода Вы можете изучить в статье: Unreal Engine Ragdoll.

По умолчанию Анрил Энджин использует как простые, так и сложные коллизии. И, в зависимости от того, что нужно пользователю (простой или сложный запрос), физический движок будет использовать соответствующий тип коллизии для запросов проверки столкновений.

Правила использования движком типов коллизий задаются в параметрах Details редактора Static Mesh в разделе Collision в опции Collision Complexity.

Опция Collision Complexity
Опция Collision Complexity

В этой опции на выбор пользователя доступно четыре варианта:

  • Project Default — выбирается тип коллизии в соответствии с настройками проекта по умолчанию.
  • Simple And Complex — используются оба типа: и простой, и сложный. Но движок выбирает сам тот или иной тип в зависимости от конкретной ситуации. Простые запросы на столкновение будут использовать тип Simple, а сложные запросы — Complex.
  • Use Simple Collision As Complex — простая коллизия используется как сложная. То есть, если выполняется сложный запрос, движок всё равно будет проверять Simple Collision. Это помогает экономить память и повышать производительность.
  • Use Complex Collision As Simple — сложная коллизия используется как простая. То есть, если выполняется простой запрос, движок всё равно будет проверять Complex Collision. Это позволяет увеличить точность взаимодействия объектов друг с другом.

Совет. Вскоре выйдет моя бесплатная книга по Blueprints для Unreal Engine в PDF формате. Как она выйдет, рекомендую её скачать, чтобы Вы детально изучили блюпринты Анрил Энджин.


наш Телеграм канал

Оцените статью
( 1 оценка, среднее 5 из 5 )
Поделитесь этой статьей со своими знакомыми в социальных сетях, возможно, эта статья кому-то будет полезна
Unreal Engine - это просто
Добавить комментарий

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