Сочленения (Joints)
Сочленения (Joints) обеспечивают ограничения, ограничивающие степени свободы тела , и используются для соединения пар тел. У каждого сочленения есть точка привязки, которая по умолчанию размещается между центрами масс соединенных тел. Свойства каждого сочленения зависят от выбранного типа и его параметров. Параметры сочленений можно разделить на две группы:
- Общие параметры - базовый набор параметров, общий для всех сочленений.
- Параметры для конкретного типа - набор конкретных параметров для каждого типа сочленения.
Смотрите также#
Программная реализация:
- Joint class
- JointFixed class
- JointHinge class
- JointBall class
- JointPrismatic class
- JointCylindrical class
- JointWheel class
- JointSuspension class (устарело)
- JointPath class
- JointParticles class
Примеры использования:
Фрагмент видеоурока по физике про сочленения
Добавление сочленения#
Предположим, у вас есть два объекта с назначенными физическими телами. Помните, что телу (body) должна быть назначена форма (shape). Чтобы соединить их с помощью сочленения в UnigineEditor , выполните следующие шаги:
- Откройте окно World Hierarchy
- Выберите первое тело для соединения
- Перейдите на вкладку Physics в окне Parameters.
-
В разделе Joints выберите подходящий тип сочленения и щелкните Add.
- Выберите второе тело, указав его имя в диалоговом окне, и нажмите Ok.
- Задайте параметры сочленения в разделе Joints.
Вы можете включить визуализацию сочленения, выбрав панель Helpers → элемент Physics → параметр Joints (Visualizer должен быть включен).
Fixed Joint#
Фиксированные сочленения соединяют два тела таким образом, чтобы их положение строго сохранялось по отношению друг к другу.
Fixed Joint
|
Параметры Fixed Joint
|
Основные параметры ограничения этого сочленения включают:
Rotation 0 | Задает ориентацию первого тела относительно точки привязки. |
Rotation 1 | Задает ориентацию второго тела относительно точки привязки |
Это сочленения также имеет набор общих параметров , общих для всех типов сочленения.
Для получения дополнительной информации см. описание JointFixed Class. Пример, иллюстрирующий соединение двух тел с помощью фиксированного сочленения, можно найти здесь .
Посмотрите иллюстрацию фиксированного сочленения в нашем видеоуроке по физике .
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
|
Основные параметры ограничения этого сочленения включают:
Joint axis | Координаты оси сочленения. |
Angular limit angle | Предел угла поворота, определяет, насколько соединенные тела могут изгибаться от оси соединения. |
Angular limit from | Минимальный угол в диапазоне скручивания вокруг оси сочленения. Угол указывается в градусах в диапазоне [ -180 ; 180 ]. |
Angular limit to | Максимальный угол в диапазоне скручивания вокруг оси сочленения. Угол указывается в градусах в диапазоне [ -180 ; 180 ]. |
Это сочленение также имеет набор общих параметров , общих для всех типов сочленений.
Дополнительные сведения см. в описании класса JointBall . Пример, иллюстрирующий соединение двух тел с помощью шарового сочленения, можно найти здесь .
Посмотрите иллюстрацию настроек шарового сочленения в нашем видеоуроке по физике .
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
|
Основные параметры ограничения этого сочленения включают:
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 :
- Выберите раму автомобиля.
- Добавьте колесный шарнир.
- Укажите колесо, которое нужно прикрепить.
- Если тела соединяются программно:
- b0 is a frame.
- b1 is a wheel.
Wheel Joint |
Параметры Wheel Joint |
Основные параметры ограничения этого сочленения включают:
Ось подвески (Axis 0) | Координаты вертикальной оси, которая действует как цилиндрическое сочленение, обеспечивающее управление и демпфирование. |
Ось шпинделя колеса (Axis 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#
Подвески используются для создания подвески колес автомобилей. Он соединяет два твердых тела : первое тело представляет собой раму, второе - колесо. К этому шарниру прикреплен угловой мотор .
- Если тела соединяются с помощью UnigineEditor :
- Выберите раму автомобиля.
- Добавьте suspension-сочленение.
- Укажите колесо, которое нужно прикрепить.
- Если тела соединяются программно:
- b0 is a frame.
- b1 is a wheel.
Suspension Joint
|
Параметры Suspension Joint
|
Основные параметры ограничения этого сочленения включают:
Ось подвески (Axis 0) | Координаты вертикальной оси, которая действует как цилиндрическое сочленение, обеспечивающиее управление и демпфирование. |
Ось шпинделя колеса (Axis 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 :
- Выберите твердое тело (rigid).
- Добавить path-сочленение.
- Укажите path-тело.
- Если тела соединяются программно:
- b0 - это BodyRigid.
- b1 - это BodyPath.
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 :
- Выберите твердое тело, ragdoll- или dummy-тело.
- Добавьте соединение частиц.
- Укажите тело ткани (cloth) или тело веревки (веревки).
- Если тела соединяются программно:
- b0 - это BodyRigid / BodyRagdoll / BodyDummy.
- b1 - это BodyCloth / BodyRope.
Particles Joint
|
Параметры Particles Joint
|
Основные параметры ограничения этого сочленения включают:
Threshold | Определяет расстояние для прикрепления вершин ткани или веревки к другому телу. |
Size | Определяет область для закрепления вершин ткани или веревки на другом теле. |
Это сочленение также имеет набор общих параметров , общих для всех типов сочленений.
Для получения дополнительной информации см. описание JointParticles Class. Пример, иллюстрирующий прикрепление тканевого тела с помощью соединения частиц, можно найти здесь .
Пример, иллюстрирующий использование веревки и particles-сочленения, можно найти здесь .
В нашем видеоуроке по физике показано, как прикрепить веревку или ткань к другим телам с помощью particles-сочленения.
Общие параметры соединения#
Общие параметры сочленений
|
Все сочленения, независимо от их типа, имеют некоторые общие параметры:
Enabled | Флаг, указывающий, включено ли сочленение. |
Collision | Флаг, указывающий, включено ли обнаружение столкновений между соединенными телами. |
Anchor | Положение точки привязки, вокруг которой ограничено движение сочленения. По умолчанию якорь размещается между центрами масс соединенных тел. |
Linear restitution | Линейная жесткость сочленения. Определяет, насколько быстро он компенсирует линейное изменение координат между двумя телами. Когда тела тянутся друг от друга, восстановление управляет величиной силы, которая применяется к обоим телам, чтобы их опорные точки снова выровнялись.
Максимальное значение 1 может привести к дестабилизации физики (поскольку прилагаются слишком большие силы). |
Angular restitution | Угловая жесткость сочленения. Определяет, насколько быстро он компенсирует изменение угла между двумя телами. Когда тела поворачиваются относительно друг друга, восстановление управляет величиной силы, которая применяется к обоим телам, так что их опорные точки снова выравниваются.
Максимальное значение 1 может привести к дестабилизации физики (поскольку прилагаются слишком большие силы). |
Linear softness | Линейная эластичность сочленения. Определяет, усредняются ли линейные скорости тел при растяжении сочленения.
|
Angular softness | Угловая эластичность сочленения. Определяет, усредняются ли линейные скорости тел при скручивании сочленения.
|
Max force | Максимальное усилие, которое можно приложить к сочленению. Если этот предел превышен, сочленение разрывается. Значение по умолчанию - inf , т.е. сочленение неразрывно. |
Max torque | Максимальный крутящий момент, который можно приложить к сочленению. Если этот предел превышен, сочленение разрывается. Значение по умолчанию - inf , т.е. сочленение неразрывно. |
Number of iterations | Сочленения, как и столкновения, рассчитываются итеративно. Этот параметр указывает количество итераций, используемых для решения сочленений. Обратите внимание: если это значение будет слишком низким, пострадает точность вычислений. |
Двигатели и пружины#
Сочленения могут иметь двигатели и связанные с ними пружины.
Пружины пытаются удерживать тела, соединенные сочленением, на определенном расстоянии (линейном) или под углом (угловой). Поведение конкретной пружины зависит от ее жесткости и коэффициента демпфирования.
Двигатели обеспечивают движение или вращение тел, связанных с шарниром, относительно друг друга за счет приложения крутящего момента (или силы) к степени свободы сочленения. Существуют линейные и угловые двигатели, которые оказывают ограниченное усилие на сочленение, толкая или вращая связанные объекты.
У двигателей есть два параметра:
- Target velocity
- Maximum force (или крутящий момент), который доступен для достижения этой скорости.
Это очень простая модель реальных двигателей. Тем не менее, это очень полезно при моделировании двигателя, который перед подсоединением к сочленению приводится в действие редуктором. Такие устройства часто управляются путем установки целевой скорости и могут генерировать только максимальное количество энергии для достижения этой скорости (что соответствует определенному количеству силы, доступной в сочленении).
Чтобы активировать угловой двигатель , выполните следующие действия:
- Установите angular velocity - целевая угловая скорость двигателя. Это значение определяет, насколько быстро двигатель может вращаться.
- положительное значение - двигатель вращается против часовой стрелки.
- отрицательное значение - двигатель вращается по часовой стрелке.
- Установите angular torque - максимальный крутящий момент, прилагаемый двигателем для достижения целевой скорости. Это значение определяет, насколько быстро двигатель достигает максимальной скорости.
- 0 отключает двигатель.
- Если указано отрицательное значение, вместо него будет использоваться 0 .
Чтобы активировать линейный двигатель , выполните следующие действия:
- Установите linear velocity - целевая линейная скорость двигателя. Это значение определяет, насколько быстро двигатель может толкать.
- положительное значение - двигатель толкает вперед.
- отрицательное значение - двигатель движется назад.
- Установите linear force - максимальное усилие, прилагаемое двигателем для достижения заданной скорости. Это значение определяет, насколько быстро двигатель достигает максимальной скорости.
- 0 отключает двигатель.
- Если указано отрицательное значение, вместо него будет использоваться 0 .
Транспортные средства#
Транспортные средства важны в играх в реальном времени, поэтому их следует описывать отдельно. Есть два подхода к моделированию движущихся транспортных средств. У каждого подхода есть соответствующий тип соединения для соединения колес с кузовом автомобиля.
- Первый подход использует suspension joint и предполагает, что колеса представлены как физические тела с формами (shapes). Поскольку каждое колесо имеет форму коллайдера, столкновения с объектами на земле обрабатываются правильно. Например, такая машина плавно едет по бордюру. Этот подход требует дополнительных расчетов и должен использоваться, когда требуется более точное моделирование, особенно для ступенчатой поверхности земли и колес сложной формы.
- Второй подход использует wheel joint и предполагает, что колеса виртуальные. Колеса не сталкиваются с поверхностью дороги. Вместо этого лучи падают от кузова автомобиля, чтобы обнаружить неровности поверхности. В этом случае резкие изменения рельефа обрабатываются неточно. Этот подход быстрее первого и обеспечивает приемлемые результаты для ровной местности, например для моделирования гоночных автомобилей. Однако на пересеченной местности он может работать некорректно.
Оба сочленения имеют связанный с ними мотор , который вращает колеса и толкает автомобиль вперед.