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
Учебные материалы

Сочленения (Joints)

Сочленения (Joints) обеспечивают ограничения, ограничивающие степени свободы тела, и используются для соединения пар тел. У каждого сочленения есть точка привязки, которая по умолчанию размещается между центрами масс соединенных тел. Свойства каждого сочленения зависят от выбранного типа и его параметров. Параметры сочленений можно разделить на две группы:

  • Общие параметры — базовый набор параметров, общий для всех сочленений.
  • Параметры для конкретного типа — набор конкретных параметров для каждого типа сочленения.

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

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

Примеры использования:

Фрагмент видеоурока по физике про сочленения

Добавление сочленения#

Предположим, у вас есть два объекта с назначенными физическими телами. Помните, что телу (body) должна быть назначена форма (shape). Чтобы соединить их с помощью сочленения в UnigineEditor, выполните следующие шаги:

  • Откройте окно World Hierarchy.
  • Выберите первое тело для соединения.
  • Перейдите на вкладку Physics в окне Parameters.
  • В разделе Joints выберите подходящий тип сочленения и щелкните Add.

    Добавление сочленения

  • Выберите второе тело, указав его имя в диалоговом окне, и нажмите Ok.
    Выбор тела
  • Задайте параметры сочленения в разделе Joints.

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

Фиксированное сочленение (Fixed Joint)#

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

Фиксированное сочленение
Фиксированное сочленение
Параметры фиксированного сочленения

Основные параметры ограничения этого сочленения включают:

Rotation 0 Задает ориентацию первого тела относительно точки привязки.
Rotation 1 Задает ориентацию второго тела относительно точки привязки

Это сочленение также имеет набор общих параметров, которые есть у всех типов сочленений.

Для получения дополнительной информации см. описание класса JointFixed. Пример, иллюстрирующий соединение двух тел с помощью фиксированного сочленения, можно найти здесь.

Посмотрите иллюстрацию фиксированного сочленения в нашем видеоуроке по физике.

Шарнирное сочленение (Hinge Joint)#

Шарнирные сочленения позволяют соединенным телам вращаться вдоль оси шарнира в точке привязки. К этому шарниру прикреплен угловой привод.

Шарнирное сочленение Шарнирное сочленение
Шарнирное сочленение
Параметры шарнирного сочленения

Основные параметры ограничения этого сочленения включают:

Joint axis Координаты оси сочленения, вокруг которой вращаются тела.
Angular damping Угловой коэффициент демпфирования шарнирного сочленения.
Angular limit from Минимальный угол в диапазоне движения, при котором шарнир останавливается. Угол указывается в градусах в диапазоне [-180; 180].
Angular limit to Максимальный угол в диапазоне движения, при котором шарнир останавливается. Угол указывается в градусах в диапазоне [-180; 180].
Angular spring Коэффициент жесткости пружины, определяет, насколько сильно сочленение сопротивляется вращению. Если жесткость установлена ​​на 0, пружина отключена.
Angular angle Целевой угол прикрепленной угловой пружины. Пружина (если она включена) пытается сохранить заданный угол между соединенными телами.
Параметры привода
Angular Torque Максимальный крутящий момент углового привода. 0 отключает привод.
Angular Velocity Целевая скорость присоединенного углового привода.

Это сочленение также имеет набор общих параметров, которые есть у всех типов сочленений.

Для получения дополнительной информации см. описание класса JointHinge. Пример, иллюстрирующий соединение двух тел с помощью шарнирного сочленения, можно найти здесь.

Посмотрите иллюстрацию настроек шарнирного сочленения в нашем видеоуроке по физике.

Шаровое соединение (Ball Joint)#

Шаровые сочленения представляют собой точку, вокруг которой могут вращаться соединенные объекты.

Шаровое сочленение Шаровое сочленение
Шаровое сочленение
Параметры шарового сочленения

Основные параметры ограничения этого сочленения включают:

Joint axis Координаты оси сочленения.
Angular limit angle Предел угла поворота, который определяет, насколько соединенные тела могут изгибаться от оси соединения.
Angular limit from Минимальный угол в диапазоне скручивания вокруг оси сочленения. Угол указывается в градусах в диапазоне [-180; 180].
Angular limit to Максимальный угол в диапазоне скручивания вокруг оси сочленения. Угол указывается в градусах в диапазоне [-180; 180].

Это сочленение также имеет набор общих параметров, которые есть у всех типов сочленений.

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

Посмотрите иллюстрацию настроек шарового сочленения в нашем видеоуроке по физике.

Призматическое сочленение (Prismatic Joint)#

Призматические сочленения допускают движение вдоль оси шарнира. К этому сочленению прикреплен линейный привод.

Призматическое сочленение Призматическое сочленение
Призматическое сочленение
Параметры призматического сочленения

Основные параметры ограничения этого сочленения включают:

Joint axis Координаты оси сочленения.
Linear damping Линейный коэффициент демпфирования призматического сочленения.
Linear limit from Минимальное расстояние между телами по оси сочленения.
Linear limit to Максимальное расстояние между телами по оси сочленения.
Linear spring Коэффициент жесткости пружины, определяет, насколько прочно сочленение сопротивляется линейному движению. Если жесткость установлена ​​на 0, пружина отключена.
Linear distance Целевое линейное расстояние прикрепленной пружины. Пружина (если она включена) пытается сохранить заданное расстояние между соединенными телами.
Параметры привода
Linear Force Максимальное усилие присоединенного линейного привода. 0 отключает привод.
Linear Velocity Целевая скорость присоединенного линейного привода.

Это сочленение также имеет набор общих параметров, которые есть у всех типов сочленений.

Для получения дополнительной информации см. описание класса JointPrismatic. Пример, иллюстрирующий соединение двух тел с помощью призматического сочленения, можно найти здесь.

Посмотрите иллюстрацию призматического сочленения в нашем видеоуроке по физике.

Цилиндрическое сочленение (Cylindrical Joint)#

Цилиндрические сочленения похожи на призматические с дополнительной степенью свободы: вращением вокруг оси сочленения. К этому сочленению прикреплены линейный и угловой приводы.

Цилиндрическое сочленение Цилиндрическое сочленение
Цилиндрическое сочленение
Параметры цилиндрического сочленения

Основные параметры ограничения этого сочленения включают:

Joint axis Координаты оси сочленения.
Linear damping Линейный коэффициент демпфирования цилиндрического сочленения.
Linear limit from Минимальное расстояние между телами по оси сочленения.
Linear limit to Максимальное расстояние между телами по оси сочленения.
Linear spring Коэффициент жесткости пружины, определяет, насколько прочно сочленение сопротивляется линейному движению. Если жесткость установлена ​​на 0, пружина отключена.
Linear distance Целевое линейное расстояние прикрепленной пружины. Пружина (если она включена) пытается сохранить заданное расстояние между соединенными телами.
Angular damping Угловой коэффициент демпфирования цилиндрического сочленения.
Angular limit from Минимальный угол в диапазоне вращения вокруг оси сочленения. Угол указывается в градусах в диапазоне [-180; 180].
Angular limit to Максимальный угол в диапазоне вращения вокруг оси сочленения. Угол указывается в градусах в диапазоне [-180; 180].
Angular spring Коэффициент жесткости пружины, определяет, насколько сильно сочленение сопротивляется вращению. Если жесткость установлена ​​на 0, пружина отключена.
Angular angle Целевой угол прикрепленной угловой пружины. Пружина (если она включена) пытается сохранить заданный угол между соединенными телами.
Параметры привода
Angular Torque Максимальный крутящий момент углового привода. 0 отключает привод.
Angular Velocity Целевая скорость присоединенного углового привод.
Linear Force Максимальное усилие присоединенного линейного привода. 0 отключает привод.
Linear Velocity Целевая скорость присоединенного линейного привода.

Это сочленение также имеет набор общих параметров, которые есть у всех типов сочленений.

Для получения дополнительной информации см. описание класса JointCylindrical. Пример, иллюстрирующий соединение двух тел с помощью цилиндрического сочленения, можно найти здесь.

Посмотрите иллюстрацию цилиндрического сочленения в нашем видеоуроке по физике.

Сочленение Wheel (Wheel Joint)#

Сочленения Wheel используются для моделирования колес транспортных средств. Оно соединяет два твердых тела: первое тело представляет собой кузов, второе — колесо. Присваивать форму (shape) колесу не нужно: для обнаружения столкновения колеса с поверхностью используется метод ray-casting. К этому сочленению прикреплен угловой привод.

Примечание

Порядок соединения тел при помощи данного сочленения имеет значение!

  • Если тела соединяются с помощью UnigineEditor:

    1. Выберите раму автомобиля.
    2. Добавьте колесный шарнир.
    3. Укажите колесо, которое нужно прикрепить.
  • Если тела соединяются программно:

    • b0 — это рама.
    • b1 — это колесо.
Сочленение Wheel Сочленение Wheel
Сочленение Wheel
Параметры сочленения Wheel

Основные параметры ограничения этого сочленения включают:

Ось подвески (Axis 0) Координаты вертикальной оси, которая действует как цилиндрическое сочленение, обеспечивающее управление и демпфирование.
Ось шпинделя колеса (Axis 1)

Координаты горизонтальной оси, вокруг которой вращается колесо. Они задаются в следующих полях:

  • Axis 10 — в системе координат кадра (то есть body 0)
  • Axis 11 — в системе координат колеса (то есть body 1)
Linear damping Линейный коэффициент демпфирования подвески.
Linear limit from Нижний предел хода подвески.
Linear limit to Верхний предел хода подвески.
Linear spring Коэффициент жесткости пружины подвески, определяет, насколько прочно соединение выдерживает вертикальное линейное движение. Если жесткость установлена ​​на 0, пружина отключена.
Linear distance Целевая высота подвески. Пружина подвески (если она включена) пытается сохранить заданную высоту.
Angular damping Угловой коэффициент демпфирования вращения колеса.
Параметры привода
Angular Torque Максимальный крутящий момент углового привода. 0 отключает привод.
Angular Velocity Целевая скорость присоединенного углового привода.

Это сочленение также имеет набор общих параметров, которые есть у всех типов сочленений.

Для получения дополнительной информации см. описание класса JointWheel. Пример использования сочленения Wheel см. в статье Создание автомобиля с сочленениями Wheel.

Посмотрите, как смоделировать колесо, используя сочленение Wheel, в нашем видеоуроке по физике.

Сочленение подвески (Suspension Joint)#

Внимание
Этот тип сочленения устарел и будет удален в следующих выпусках. Вместо этого рекомендуется использовать сочленение Wheel.

Подвеска используется для создания подвески колес автомобилей. Она соединяет два твердых тела: первое тело представляет собой раму, второе — колесо. К этому шарниру прикреплен угловой привод.

Примечание
Порядок соединения тел при помощи данного сочленения имеет значение!
  • Если тела соединяются с помощью UnigineEditor:

    1. Выберите раму автомобиля.
    2. Добавьте сочленение Suspension.
    3. Укажите колесо, которое нужно прикрепить.
  • Если тела соединяются программно:

    • b0 is a frame.
    • b1 is a wheel.
Suspension joint Suspension joint
Suspension Joint
Параметры Suspension Joint

Основные параметры ограничения этого сочленения включают:

Ось подвески (Axis 0) Координаты вертикальной оси, которая действует как цилиндрическое сочленение, обеспечивающиее управление и демпфирование.
Ось шпинделя колеса (Axis 1)

Координаты горизонтальной оси, вокруг которой вращается колесо. Они задаются в следующих полях:

  • Axis 10 — в системе координат кадра (то есть body 0)
  • Axis 11 — в системе координат колеса (то есть body 1)
Linear damping Линейный коэффициент демпфирования подвески.
Linear limit from Нижний предел хода подвески.
Linear limit to Верхний предел хода подвески.
Linear spring Коэффициент жесткости пружины подвески, определяет, насколько прочно сочленение выдерживает вертикальное линейное движение. Если жесткость установлена ​​на 0, пружина отключена.
Linear distance Целевая высота подвески. Пружина подвески (если она включена) пытается сохранить заданную высоту.
Angular damping Угловой коэффициент демпфирования вращения колеса.
Параметры привода
Angular Torque Максимальный крутящий момент углового привода. 0 отключает привод.
Angular Velocity Целевая скорость присоединенного углового привода.

Это сочленение также имеет набор общих параметров, которые есть у всех типов сочленений.

Для получения дополнительной информации см. описание класса JointSuspension. Пример, иллюстрирующий соединение двух кузовов с помощью шарнира подвески, можно найти здесь.

Чтобы узнать о различиях между сочленениями Wheel и Suspension, см. наш видеоурок по физике.

Сочленение Path (Path Joint)#

Сочленение Path используется для прикрепления твердого тела к телу Path и для его перемещения по этому пути. Это сочленение можно использовать для движения поезда по рельсам. К этому сочленению прикреплен линейный привод.

Примечание

Назначьте фигуру твердому телу перед тем, как соединить его с телом контура!
Порядок соединения тел при помощи данного сочленения имеет значение!

  • Если тела соединяются с помощью UnigineEditor:
    1. Выберите твердое тело (Rigid).
    2. Добавить сочленение Path.
    3. Укажите тело Path.
  • Если тела соединяются программно:
    • b0 — это BodyRigid.
    • b1 — это BodyPath.
Сочленение Path
Сочленение Path
Параметры сочленения Path

Основные параметры ограничения этого сочленения включают:

Rotation Задает ориентацию тела относительно пути.
Linear damping Линейный коэффициент демпфирования сочленения Path.
Параметры привода
Linear Force Максимальное усилие присоединенного линейного привода. 0 отключает привод.
Linear Velocity Целевая скорость присоединенного линейного привода.

Это сочленение также имеет набор общих параметров, которые есть у всех типов сочленений.

Для получения дополнительной информации см. описание класса JointPath. Пример, иллюстрирующий соединение двух тел с помощью сочленения Path, можно найти здесь.

В нашем видеоуроке по физике показано, как прикрепить тело Rigid к телу Path с помощью сочленения Path.

Сочленение Particles (Particles Joint)#

Сочленение Particles используется для прикрепления ткани или веревки к твердому телу, телу Ragdoll или телу Dummy.

Примечание

Порядок соединения тел при помощи данного сочленения имеет значение!

  • Если тела соединяются с помощью UnigineEditor:

    1. Выберите тело: твердое, ragdoll или dummy.
    2. Добавьте соединение частиц.
    3. Укажите тело Cloth или Rope.
  • Если тела соединяются программно:

    • b0 — это BodyRigid / BodyRagdoll / BodyDummy.
    • b1 — это BodyCloth / BodyRope.
Сочленение Particles
Сочленение Particles
Параметры сочленения Particles

Основные параметры ограничения этого сочленения включают:

Threshold Определяет расстояние для прикрепления вершин ткани или веревки к другому телу.
Size Определяет область для закрепления вершин ткани или веревки на другом теле.

Это сочленение также имеет набор общих параметров, которые есть у всех типов сочленений.

Для получения дополнительной информации см. описание класса JointParticles. Пример, иллюстрирующий прикрепление тела Cloth с помощью соединения частиц, можно найти здесь.

Пример, иллюстрирующий использование тела Rope и сочленения Particles, можно найти здесь.

В нашем видеоуроке по физике показано, как прикрепить веревку или ткань к другим телам с помощью сочленения Particles.

Общие параметры сочленений#

Общие параметры сочленений

Все сочленения, независимо от их типа, имеют некоторые общие параметры:

Enabled Флаг, указывающий, включено ли сочленение.
Collision Флаг, указывающий, включено ли обнаружение столкновений между соединенными телами.
Anchor Положение точки привязки, вокруг которой ограничено движение сочленения. По умолчанию якорь размещается между центрами масс соединенных тел.
Linear restitution

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

  • 1 означает, что соединение должно возвращать тела на место в течение 1 кадра физики.
  • 0,2 означает, что соединение должно возвращать тела на место в течение 5 кадров физики.
Примечание
Максимальное значение 1 может привести к дестабилизации физики (поскольку прилагаются слишком большие силы).
Angular restitution

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

  • 1 означает, что сочленение должно возвращать тела на место в течение 1 кадра физики.
  • 0,2 означает, что сочленение должно возвращать тела на место в течение 5 кадров физики.
Примечание
Максимальное значение 1 может привести к дестабилизации физики (поскольку прилагаются слишком большие силы).
Linear softness

Линейная эластичность сочленения. Определяет, усредняются ли линейные скорости тел при растяжении сочленения.

  • 0 означает, что соединение жесткое. Скорости первого и второго тела независимы.
  • 1 означает, что соединение эластичное (желеобразное). Если первое тело меняет свою скорость, скорость второго тела выравнивается с ним.
Angular softness

Угловая эластичность сочленения. Определяет, усредняются ли линейные скорости тел при скручивании сочленения.

  • 0 означает, что соединение жесткое. Скорости первого и второго тела независимы.
  • 1 означает, что соединение эластичное (желеобразное). Если первое тело меняет свою скорость, скорость второго тела выравнивается с ним.
Max force Максимальное усилие, которое можно приложить к сочленению. Если этот предел превышен, сочленение разрывается. Значение по умолчанию — inf, т. е. сочленение неразрывно.
Max torque Максимальный крутящий момент, который можно приложить к сочленению. Если этот предел превышен, сочленение разрывается. Значение по умолчанию — inf, т. е. сочленение неразрывно.
Number of iterations Сочленения, как и столкновения, рассчитываются итеративно. Этот параметр указывает количество итераций, используемых для решения сочленений. Обратите внимание: если это значение будет слишком низким, пострадает точность вычислений.

Приводы и пружины#

Сочленения могут иметь приводы и связанные с ними пружины.

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

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

Springs and Motors

У приводов есть два параметра:

  • Целевая скорость
  • Максимальное усилие (или крутящий момент), которое доступно для достижения этой скорости.

Это очень простая модель реальных приводов. Тем не менее, это очень полезно при моделировании привода, который перед подсоединением к сочленению приводится в действие редуктором. Такие устройства часто управляются путем установки целевой скорости и могут генерировать только максимальное количество энергии для достижения этой скорости (что соответствует определенному количеству силы, доступной в сочленении).

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

  1. Установите angular velocity — целевую угловую скорость привода. Это значение определяет, насколько быстро привод может вращаться.

    • положительное значение — привод вращается против часовой стрелки.
    • отрицательное значение — привод вращается по часовой стрелке.
  2. Установите angular torque — максимальный крутящий момент, прилагаемый приводом для достижения целевой скорости. Это значение определяет, насколько быстро привод достигает максимальной скорости.

    • 0 отключает привод.
    • Если указано отрицательное значение, вместо него будет использоваться 0.

Чтобы активировать линейный привод, выполните следующие действия:

  1. Установите linear velocity — целевая линейная скорость привода. Это значение определяет, насколько быстро привод может толкать.

    • положительное значение — привод толкает вперед.
    • отрицательное значение — привод движется назад.
  2. Установите linear force — максимальное усилие, прилагаемое приводом для достижения заданной скорости. Это значение определяет, насколько быстро привод достигает максимальной скорости.

    • 0 отключает привод.
    • Если указано отрицательное значение, вместо него будет использоваться 0.

Транспортные средства#

Транспортные средства важны в играх в реальном времени, поэтому их следует описывать отдельно. Есть два подхода к моделированию движущихся транспортных средств. У каждого подхода есть соответствующий тип соединения для соединения колес с кузовом автомобиля.

  • Первый подход использует сочленение Suspension и предполагает, что колеса представлены как физические тела с формами (shapes). Поскольку у каждого колеса есть коллизионная форма, столкновения с объектами на земле обрабатываются правильно. Например, такая машина плавно едет по бордюру. Этот подход требует дополнительных расчетов и должен использоваться, когда требуется более точное моделирование, особенно для ступенчатой ​​поверхности земли и колес сложной формы.
  • Второй подход использует сочленение Wheel и предполагает, что колеса виртуальные. Колеса не сталкиваются с поверхностью дороги. Вместо этого лучи падают от кузова автомобиля, чтобы обнаружить неровности поверхности. В этом случае резкие изменения рельефа обрабатываются неточно. Этот подход быстрее первого и обеспечивает приемлемые результаты для ровной местности, например для моделирования гоночных автомобилей. Однако на пересеченной местности он может работать некорректно.

Оба сочленения имеют связанный с ними привод, который вращает колеса и толкает автомобиль вперед.

Проблемы с использованием лучей при наличии крутых препятствий

Проблема с колесами, смоделированными с использованием Ray Casting
Последнее обновление: 07.03.2023
Build: ()