This page has been translated automatically.
Видеоуроки
Interface
Essentials
Advanced
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Professional (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Landscape Tool
Sandworm
Использование инструментов редактора для конкретных задач
Расширение функционала редактора
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World Nodes
Звуковые объекты
Объекты поиска пути
Players
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Плагины
Форматы файлов
Materials and Shaders
Rebuilding the Engine Tools
GUI
Двойная точность координат
API
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
Работа с контентом
Оптимизация контента
Материалы
Визуальный редактор материалов
Сэмплы материалов
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials
Внимание! Эта версия документация УСТАРЕЛА, поскольку относится к более ранней версии SDK! Пожалуйста, переключитесь на самую актуальную документацию для последней версии SDK.
Внимание! Эта версия документации описывает устаревшую версию SDK, которая больше не поддерживается! Пожалуйста, обновитесь до последней версии SDK.

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

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

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

Смотрите также#

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

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

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

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

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

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

    Adding a joint

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

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

Fixed Joint#

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

Fixed joint
Fixed Joint
Параметры Fixed Joint

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

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

Это сочленения также имеет набор общих параметров , общих для всех типов сочленения.

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

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

Hinge Joint#

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

Hinge joint Hinge joint
Hinge Joint
Параметры 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 Class. Пример, иллюстрирующий соединение двух тел с помощью шарнирного сочленение, можно найти здесь .

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

Ball Joint#

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

Ball joint Ball joint
Ball Joint
Параметры Ball Joint

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

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

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

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

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

Prismatic Joint#

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

Prismatic joint Prismatic joint
Prismatic Joint
Параметры Prismatic Joint

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

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

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

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

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

Cylindrical Joint#

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

Cylindrical joint Cylindrical joint
Cylindrical Joint
Параметры 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 Class. Пример, иллюстрирующий соединение двух тел с помощью цилиндрического сочленения, можно найти здесь .

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

Wheel Joint#

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

Примечание
Порядок соединения тел при помощи данного сочленения имеет значение !
  • Если тела соединяются с помощью UnigineEditor :
    1. Выберите раму автомобиля.
    2. Добавьте колесный шарнир.
    3. Укажите колесо, которое нужно прикрепить.
  • Если тела соединяются программно:
    • b0 is a frame.
    • b1 is a wheel.
Wheel joint Wheel joint
Wheel Joint
Параметры Wheel 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 Целевая скорость присоединенного углового двигателя.

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

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

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

Suspension Joint#

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

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

Примечание
Порядок соединения тел при помощи данного сочленения имеет значение !
  • Если тела соединяются с помощью 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 Class. Пример, иллюстрирующий соединение двух кузовов с помощью шарнира подвески, можно найти здесь .

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

Path Joint#

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

Примечание
Назначьте фигуру твердому телу перед тем, как соединить его с телом контура!
The order of the bodies, connected using a path joint, matters!
  • Если тела соединяются с помощью UnigineEditor :
    1. Выберите твердое тело (rigid).
    2. Добавить path-сочленение.
    3. Укажите path-тело.
  • Если тела соединяются программно:
    • b0 - это BodyRigid.
    • b1 - это BodyPath.
Path joint
Path Joint
Параметры Path Joint

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

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

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

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

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

Particles Joint#

Particles-сочленение используется для прикрепления ткани или веревки к твердому телу , ragdoll-телу или dummy-телу .

Примечание
Порядок соединения тел при помощи данного сочленения имеет значение !
  • Если тела соединяются с помощью UnigineEditor :
    1. Выберите твердое тело, ragdoll- или dummy-тело.
    2. Добавьте соединение частиц.
    3. Укажите тело ткани (cloth) или тело веревки (веревки).
  • Если тела соединяются программно:
    • b0 - это BodyRigid / BodyRagdoll / BodyDummy.
    • b1 - это BodyCloth / BodyRope.
Particles joint
Particles Joint
Параметры Particles Joint

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

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

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

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

Пример, иллюстрирующий использование веревки и 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

У двигателей есть два параметра:

  • Target velocity
  • Maximum force (или крутящий момент), который доступен для достижения этой скорости.

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

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

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

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

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

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

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

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

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

Problems with ray cars and steep obstacles

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