Rigid Body
Тело Rigid позволяет моделировать физические тела в соответствии с динамикой тела Rigid. Этот тип тела является наиболее часто используемым и наиболее эффективным с точки зрения производительности.
Набор параметров тела Rigid в соответствии с динамикой тела Rigid включает следующее:
- плотность;
- линейное и угловое демпфирование;
- максимальная линейная и угловая скорость;
- трение;
- восстановление;
- застывание;
- неподвижность.
Дополнительная информация#
Программная реализация:
- Класс BodyRigid.
Параметры массы, зависящие от формы#
Объем тела Rigid можно аппроксимировать несколькими формами (например, вогнутый объект, разделенный на набор выпуклых многогранников или тело Ragdoll). У каждой формы своя масса и плотность. Поэтому определенные параметры тела Rigid, такие как его общая масса, центр масс и тензор инерции, определяются его формой. Эти параметры могут быть рассчитаны автоматически, если включена опция Shape-based.
Чтобы включить эту опцию для тела через UnigineEditor выполните следующие действия:
- Выберите желаемый объект с присвоенным ему телом Rigid.
- Перейдите на вкладку Physics в окне Parameters.
- В разделе Body отметьте опцию Shape-based.
Переопределение параметров форм#
Отключение опции Shape-based позволяет вручную переопределить некоторые общие параметры для тела.
Чтобы отключить эту опцию для тела через UnigineEditor выполните следующие действия:
- Выберите желаемый объект с присвоенным ему телом Rigid.
- Перейдите на вкладку Physics в окне Parameters.
- В разделе Body включите опцию Shape-based. Поля общих параметров для тела будут активированы.
- Настройте параметры тела вручную.
Центр массы#
Центром массы тела можно назначить произвольную точку. Возможно, потребуется скорректировать движение объекта, чтобы добиться желаемого вида. Например, для неваляшки сферической формы распределение массы должно быть неравномерным: ее центр масс должен располагаться ближе ко дну, чтобы она всегда возвращалась в вертикальное положение из наклона.
Момент инерции#
Момент инерции — это вращательный аналог массы, описывающий сопротивление тела вращению в разных направлениях. Он определяется распределением массы по объему тела. Чем дальше от оси вращения находится центр масс, тем больше инерции вращения у тела.
Тензор инерции, который позволяет вычислить момент инерции относительно произвольной оси, представлен в виде матрицы I:
Ixx | Ixy | Ixz |
Iyx | Iyy | Iyz |
Izx | Izy | Izz |
где Iij задает момент инерции вокруг оси i, когда тело вращается вокруг оси j.
Что касается значений момента инерции:
- Чем выше значение, тем больший крутящий момент необходимо приложить для вращения тела вокруг определенной оси.
-
Чем ниже значение, тем легче изменить угловую скорость тела относительно определенной оси.
Не рекомендуется устанавливать значения меньше 0.011! В противном случае матрица не будет инвертирована должным образом, что необходимо для подачи импульса столкновения.
Значения корректируются относительно среднего значения для обеспечения более плавного движения.
Например, на следующем рисунке показаны три кубика с разными тензорами инерции. Желтый кубик имеет очень высокую инерцию:
100 | 0 | 0 |
0 | 100 | 0 |
0 | 0 | 100 |
Из-за этого он может скользить вниз только при падении на наклонную плоскость. Красный кубик, напротив, имеет наименьшую инерцию и наиболее активно вращается.
Застывание тела#
Если для тела Rigid установлен флаг Freezable, его симуляция прекращается, когда необходимо.
Неподвижность#
Флаг Immovable включает и выключает статический режим для тела Rigid. Если флаг установлен, тело будет игнорировать все силы в мире и сохранит свое положение, оставаясь коллизионным объектом.
Назначение тела Rigid#
Чтобы присвоить объекту тело Rigid через UnigineEditor, выполните следующие действия:
- Откройте окно World Hierarchy.
- Выберите объект, которому нужно присвоить тело Rigid.
-
Перейдите на вкладку Physics в окне Parameters и назначьте физическое тело выбранному объекту, выбрав Body -> Rigid.
- Задайте название тела и при необходимости измените другие параметры.