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 через UnigineEditor, выполните следующие действия:

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

    Adding a body

  4. Задайте название тела и при необходимости измените другие параметры.

Параметры#

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

Immovable

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

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

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

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

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

Тензор инерции, который позволяет вычислить момент инерции относительно произвольной оси, представлен в виде матрицы 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   

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

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

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

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

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

Информация, представленная на данной странице, актуальна для версии UNIGINE 2.20 SDK.

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