This page has been translated automatically.
Видеоуроки
Интерфейс
Основы
Продвинутый уровень
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Профессиональный уровень (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Режимы вывода изображения
Физика
Браузер SDK 2
Лицензирование и типы лицензий
Дополнения (Add-Ons)
Демонстрационные проекты
API Samples
Редактор 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
Учебные материалы

Rigid Body

Тело Rigid позволяет моделировать физические тела в соответствии с динамикой тела Rigid. Этот тип тела является наиболее часто используемым и наиболее эффективным с точки зрения производительности.

Примечание
На тело Rigid должна быть назначена хотя бы одна коллизионная форма.

Тела Rigid

Набор параметров тела Rigid в соответствии с динамикой тела Rigid включает следующее:

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

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

Параметры массы, зависящие от формы#

Объем тела Rigid можно аппроксимировать несколькими формами (например, вогнутый объект, разделенный на набор выпуклых многогранников или тело Ragdoll). У каждой формы своя масса и плотность. Поэтому определенные параметры тела Rigid, такие как его общая масса, центр масс и тензор инерции, определяются его формой. Эти параметры могут быть рассчитаны автоматически, если включена опция Shape-based.

Чтобы включить эту опцию для тела через UnigineEditor выполните следующие действия:

  1. Выберите желаемый объект с присвоенным ему телом Rigid.
  2. Перейдите на вкладку Physics в окне Parameters.
  3. В разделе Body отметьте опцию Shape-based.
Примечание
Установка индивидуальных масс или плотности форм — наиболее простой метод достижения правильного физического поведения тела. Даже если эти параметры будут переопределены параметрами тела, они все равно используются для распределения массы внутри объекта.

Shapes that approximate rigid bodies

Тела Rigid, которые аппроксимируются различными формами в соответствии с их геометрией

Переопределение параметров форм#

Отключение опции Shape-based позволяет вручную переопределить некоторые общие параметры для тела.

Чтобы отключить эту опцию для тела через UnigineEditor выполните следующие действия:

  1. Выберите желаемый объект с присвоенным ему телом Rigid.
  2. Перейдите на вкладку Physics в окне Parameters.
  3. В разделе Body включите опцию Shape-based. Поля общих параметров для тела будут активированы.
  4. Настройте параметры тела вручную.

Центр массы#

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

Примечание
Центр масс задается как координаты точки в локальном пространстве тела.

Момент инерции#

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

Тензор инерции, который позволяет вычислить момент инерции относительно произвольной оси, представлен в виде матрицы I:

Ixx     Ixy     Ixz    
Iyx     Iyy     Iyz    
Izx     Izy     Izz    

где Iij задает момент инерции вокруг оси i, когда тело вращается вокруг оси j.

Примечание
Чтобы тело вращалось равномерно вокруг оси вращения, матрица должна быть диагональной, т.е. все значения за пределами главной диагонали должны быть установлены на 0. В противном случае тело может начать хаотично вращаться.

Что касается значений момента инерции:

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

    Примечание
    Не рекомендуется устанавливать значения меньше 0.011! В противном случае матрица не будет инвертирована должным образом, что необходимо для подачи импульса столкновения.

Значения корректируются относительно среднего значения для обеспечения более плавного движения.

Например, на следующем рисунке показаны три кубика с разными тензорами инерции. Желтый кубик имеет очень высокую инерцию:

100         0         0    
    0     100         0    
    0         0     100    

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

Различные тензоры инерции

Различные тензоры инерции, которые переопределяют параметры на основе формы

Застывание тела#

Если для тела Rigid установлен флаг Freezable, его симуляция прекращается, когда необходимо.

Примечание
Флаг Freezable рекомендуется всегда устанавливать для всех твердых тел, кроме Player Actor. Застывание игрока заставляет его реагировать на ввод пользователя с задержкой по времени — небольшой, но всё же ощутимой.

Неподвижность#

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

Назначение тела Rigid#

Чтобы присвоить объекту тело Rigid через UnigineEditor, выполните следующие действия:

  1. Откройте окно World Hierarchy.
  2. Выберите объект, которому нужно присвоить тело Rigid.
  3. Перейдите на вкладку Physics в окне Parameters и назначьте физическое тело выбранному объекту, выбрав Body -> Rigid.

    Adding a body

  4. Задайте название тела и при необходимости измените другие параметры.
Последнее обновление: 16.08.2024
Build: ()