Введение в физику артикуляции
Физическая артикуляция представляет собой набор артикуляционных тел, организованных в логическом дереве, в котором каждое родительско-детское отношение отражает взаимно ограниченное относительное движение.
Основная цель физики сочленений состоит в том, чтобы обеспечить реалистичное физическое поведение для коммерческих и промышленных неигровых приложений, которые включают сочленения. Например, они делают гораздо проще, чем обычные Сочленения, чтобы симулировать роботические руки и кинематические цепи.
Настройка сочленения по сравнению с обычными соединениями
В самом базовом сценарии, чтобы получить два физических тела, связанных с одним соединением, вы можете либо построить соединение, либо использовать обычные соединения, как описано в следующей таблице.
| Unity компонент | Артикуляторная установка | Настройка с обычным соединением |
|---|---|---|
| Hierarchy |
|
|
| Связь | GameObjects имеют иерархическое отношение (родитель-ребёнок). Примечание: Физика использует иерархию преобразований Unity для выражения отношения родитель-ребёнок. |
GameObjects не обязательно имеют иерархическое отношение. Примечание: В более сложных сценариях вы можете свободно имитировать кинематические петли. |
| Физические тела | Оба GameObjects имеют компонент Артикулятор Тела, который определяет свойства физического тела (в числе прочих). | Оба GameObjects имеют компонент RigidBody, который определяет свойства физического тела (среди прочих). |
| Совместное | Тело Артикулятора дочернего объекта GameObject содержит свойства соединения, где можно выбрать тип соединения. | Один из GameObjects также имеет компонент Joint. Свойства Joint зависят от типа добавляемого компонента Joint. |
Однако, общее поведение не одинаково в обоих случаях, особенно если вы распространяете этот принцип на множество физических тел и суставов.
Если вы попытаетесь использовать обычные соединения для моделирования кинематических цепей, таких как в тряпочной кукле, роботической руке или механизме с несколькими параллельными шарнирами, движок физики может столкнуться с неразрешимыми сценариями и оставить некоторые ограничения неудовлетворенными. Это может привести к замедленному и нереалистичному движению. Соединения не только будут выглядеть странно, но и будет невозможно использовать их для симулирования реального устройства, что затруднит усилия по моделированию или прототипированию промышленных конструкций.
Создание артикуляции в Unity
Чтобы создать физическую артикуляцию в Unity, вы должны добавить компонент Тело артикуляции к каждому GameObject, из которого состоит артикуляция. Каждый компонент Тело артикуляции позволяет настроить в одном месте:
Физические свойства тела соответствующего GameObject. В основном, его масса и то, как он реагирует на физическую среду.
Тип и свойства соединения, которое соединяет GameObject с его родительским GameObject (за исключением корня соединения).
Следующий пример показывает простую физическую артикуляцию, которая включает 3 физических тела и 2 сустава:
Чтобы построить такую артикуляцию в Unity:
Создайте линейную иерархию из 3 GameObjects.
Добавьте компонент «Артикуляторный корпус» к каждому из этих трех GameObjects.
Настроить каждый компонент тела шарнира (согласно вышеприведенной графике):
| GameObject | Конфигурация деталей кузова |
|---|---|
| А (корень) | Вы можете определить свойства физического тела только для GameObject A. |
| B | Можно определить:
|
| C | Можно определить:
|
Примечание: По определению, соединение может иметь только один корень и не может иметь кинематических петель. Если вам нужны кинематические петли, используйте обычные соединения.
Ограничение: Если вы хотите построить очень длинные цепочки артикуляции, вы все равно должны знать, что Unity поддерживает максимальную глубину иерархии 64 GameObjects.
Типы суставов и степени свободы
Существует четыре типа артикуляторных соединений, которые можно выбрать и настроить с помощью тела артикулятора:
Неподвижное соединение: обеспечивает жесткое, неразрушающееся и не растягивающееся соединение между кузовами.
Призматический шарнир: предотвращает любое движение, кроме скольжения по определенной оси.
Revolute соединение: позволяет вращение вокруг определенной оси (как петля).
Шаровое соединение: анатомическое соединение, которое позволяет два поворота и один поворот.
Все заблокированные степени свободы в сочленении являются неразрушимыми и нерастягиваемыми по конструкции. Чтобы достичь этого, движок физики использует уменьшенное координатное пространство, в котором тела имеют координаты только вокруг разблокированных осей движения.
В отличие от этого, для регулярных итеративных соединений движок физики применяет максимальное координатное пространство, которое гарантирует удовлетворение ограничений только в том случае, если решающий может сходиться после набора итераций.
Физика артикуляции демо
Ознакомьтесь с демонстрационным проектом по робототехнике от Unity, чтобы поэкспериментировать с последовательно связанной рукой робота с шарнирными соединениями.