This page has been translated automatically.
Видеоуроки
Интерфейс
Основы
Продвинутый уровень
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Профессиональный уровень (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Контроль версий
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Sandworm
Использование инструментов редактора для конкретных задач
Расширение функционала редактора
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World-ноды
Звуковые объекты
Объекты поиска пути
Player-ноды
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Плагины
Форматы файлов
Материалы и шейдеры
Rebuilding the Engine Tools
Интерфейс пользователя (GUI)
Двойная точность координат
API
Animations-Related Classes
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
VR-Related Classes
Работа с контентом
Оптимизация контента
Материалы
Визуальный редактор материалов
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Учебные материалы

Коллизионные формы (Shapes)

В то время как тело (body) имитирует различные типы физического поведения, форма (shape) представляет собой объем пространства, занимаемого физическим телом. Физически моделируемый объект обычно имеет одно тело и одну или несколько форм, которые позволяют объектам сталкиваться друг с другом (поэтому формы часто называют коллизионными формами). Объекты с формой также падают под действием силы тяжести, отскакивают от статичных поверхностей или скользят по ним. Тело, которому не назначена единственная форма, ведет себя как фиктивное тело Dummy, которое может соединяться с другими телами с помощью сочленений, но не сталкивается и невосприимчиво к гравитации.

Примечание
Максимальное количество коллизионных форм для одного тела - 32768.

Основные типы форм следующие:

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

Примечание
Форма не должна дублировать меш, который она аппроксимирует. Рекомендуется использовать простые примитивы. Несмотря на то, что они неточны, в большинстве случаев они обеспечивают приемлемые результаты.
Число форм должно быть как можно меньше. В противном случае тяжелые физические вычисления снизят производительность.

Форма (shape) не может быть создана без тела (body) и не имеет собственной позиции в мировых координатах. Она всегда присваивается телу и позиционируется относительно него.

Дополнительная информация#

Программная реализация:

Параметры формы#

Все формы независимо от их типа имеют следующие общие параметры:

Shape parameters

Enabled Флаг, указывающий, включена ли форма.
Continuous Флаг, указывающий, включено ли непрерывное обнаружение столкновений для формы.
Примечание
Непрерывное обнаружение столкновений доступно только для сфер и капсул.
Mass Масса формы. Изменение массы влияет на плотность, которая рассчитывается путем деления массы на объем формы. В случае, если телу присвоено несколько форм (например, набор выпуклых многогранников)
Density Плотность формы. Изменение плотности влияет на массу, которая рассчитывается путем умножения объема формы на плотность.
Friction Коэффициент трения формы. Определяет шероховатость поверхности формы. Чем выше значение, тем меньше тенденция к скольжению формы.
Примечание
В случае, если объект содержит поверхность и форму, и для них обеих задан параметр трения, будет использоваться только параметр формы.
Restitution Коэффициент восстановления формы. Определяет упругость формы при столкновении.
  • Минимальное значение 0 указывает на неупругие столкновения (кусок мягкой глины, ударяющийся об пол)
  • Максимальное значение 1 соответствует очень упругому столкновению (резиновый мяч, отскакивающий от стены).
Примечание
В случае, если объект содержит поверхность и форму, и для них обеих задан параметр восстановления, будет использоваться только параметр формы.
Position Положение формы в координатах тела (body).
Rotation Вращение формы в координатах тела (body).
Physics Intersection mask Битовая маска формы для определения Physics Intersection.
Collision mask Битовая маска столкновений формы. Эта маска используется для указания столкновений формы с другими.
Exclusion mask Битовая маска исключений формы. Эта маска используется для предотвращения столкновения формы с другими.

Наш видеоурок по физике содержит обзор параметров формы и разъяснения по использованию масок Exclusion и Collision.

Добавление формы#

Чтобы добавить форму через UnigineEditor, выполните следующие шаги:

Вы можете включить визуализацию форм, выбрав в панели Helpers → элемент Physics → параметр Shapes (Visualizer должен быть включен).

Сфера#

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

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

Формы-сферы

Чтобы форма соответствовала вашему объекту, вы можете настроить Радиус сферы.

Радиус сферы

Капсула#

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

Формы-капсулы

Чтобы форма соответствовала вашему объекту, вы можете настроить радиус и высоту капсулы.

Высота и радиус капсулы

Цилиндр#

Цилиндр можно использовать для приближения удлиненных форм с плоскими концами (например, валов, опор и т. д.). Он похож на форму коробки.

Формы-цилиндры

Чтобы форма соответствовала вашему объекту, вы можете отрегулировать радиус и высоту цилиндра.

Высота и радиус цилиндра

Куб#

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

Формы-кубы

Чтобы форма соответствовала вашему объекту, вы можете отрегулировать размер поля по каждой оси: Size X, Size Y, Size Y.

Измерения куба

Выпуклый многогранник (Convex hull)#

Convex hull — самая медленная из всех форм и используется для объектов сложной геометрии. Созданная форма всегда будет выпуклой, то есть отверстия и полости меша игнорируются при создании выпуклого многогранника. Вместо этого они включены в объем формы. Выпуклая форма — это наименьшая форма, которая может охватывать вершины аппроксимированного меша.

Выпуклые формы

Для создания выпуклого многогранника укажите значение ошибки аппроксимации:

Параметры выпуклой формы

Параметр Approximation error позволяет уменьшить количество вершин создаваемой формы. Простые и грубые выпуклые многогранники с небольшим количеством вершин обрабатываются быстрее, поэтому рекомендуется сохранять количество вершин как можно меньшим.

  • При значении 0 форма точно дублирует меш; весь его объем прилагается.
  • Чем выше значение, тем меньше вершин в созданной форме, но тем больше деталей пропускается.
Zero Approximation Error
Ошибка аппроксимации = 0
  Higher value of Approximation Error
Ошибка аппроксимации = 0,1

Автогенерируемая форма#

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

Сложный вогнутый объект, аппроксимированный единственным выпуклым многогранником (слева) и автоматически сгенерированным набором выпуклых многогранников (справа)

Чтобы добавить автоматически сгенерированный набор форм, укажите следующие параметры:

Параметры для автогенерации

Recursion depth определяет степень декомпозиции меша. Если указан 0 или отрицательное значение, будет создана только одна форма. Чем выше значение, тем больше выпуклых форм будет создано

Approximation error позволяет уменьшить количество вершин генерируемых форм. Простые и грубые выпуклые многогранники с небольшим количеством вершин обрабатываются быстрее, поэтому рекомендуется сохранять количество вершин как можно меньшим.

  • При значении 0 форма точно дублирует меш; весь его объем прилагается.
  • Чем выше значение, тем меньше вершин в созданной форме, но тем больше деталей пропускается.

Merging threshold определяет порог объема для слияния выпуклых форм после декомпозиции и может использоваться для уменьшения количества генерируемых форм: чем выше значение, тем меньше выпуклых форм будут создано.

Последнее обновление: 19.04.2024
Build: ()