Constrain (Ограничение) присутствует в сцене в виде объекта “nxRigidConstraint”. Ограничения могут либо
связывать вместе два “Rigid Body”, либо привязывать один “Rigid Body” к фиксированному положению
в мировом пространстве. “Child” (Дочерним) объектом ограничения должен быть “Dynamic Rigid Body”.
“Parent” (Родительский) объект может быть Dynamic, Kinematic, Static или ничем.
(для привязки к мировому пространству).
Ограничения по умолчанию являются “unbreakable” (нерушимыми): независимо от того, насколько сильны
приложенные к ним силы, независимо от того, как далеко они могут быть вынуждены нарушить
свои пределы, они останутся в силе и попытаются вернуть свой “Rigid Body” в желаемый диапазон. Однако
ограничения могут быть установлены на хрупкие тела. Вы можете установить независимые пределы силы
и крутящего момента, за пределами которых ограничение “сломается”, отключится и больше
не будет применяться к симуляции.
Большинство ограничений связывают два “Rigid Body”. Ограничение связано с “Parent” (родительским)
“Rigid Body”, перемещающимся и вращающимся вместе с ним. Например, представьте себе автомобиль с
автомобильной дверью. Автомобиль и дверь соединены hinges (шарнирным) ограничением,
при этом автомобиль является “Parent” (родительским), а дверь - “Child” (дочерним). Пределы того,
насколько далеко может открываться и закрываться дверь, не меняются при вращении двери, а зависят
от того, как поворачивается автомобиль.
Ограничение между двумя “Dynamic Rigid Body” ведет себя аналогично реальному миру: силы,
действующие на один “Rigid Body”, могут переноситься на другой в любом направлении. Большую часть
времени вождение автомобиля будет “тянуть” за собой дверь автомобиля. Однако, если у некоторых
родительских объектов изменится иерархия и они откроют дверь, кузов автомобиля тоже сдвинется с места.
(При условии, что двери не ломаются.) Если только “Parent” (родительский) объект не является
кинематическим (или ничем), вероятность того, что он будет двигаться, так же велика, как
и вероятность того, что “Child” (дочерний) будет двигаться.
Чтобы создать ограничение между двумя объектами,
выберите “Parent” (родительский объект), за которым следует “Child” (дочерний) объект в сцене,
а затем выберите:
Maya HotBox > PhysX > Constraints > Create Constraint (Рис.10) Ограничение будет автоматически
размещено посередине, соединяющих два объекта. Во вьюпорте “Parent” (родительский объект)
будет помечен как “P”, в то время как “Child” (дочерний) объект будет помечен как “C”.
Размещение ограничения влияет на смещение от родительского элемента, к которому применяется
ограничение. В случаях, когда два “Rigid Body” визуально соприкасаются
(дверь, соединенная с дверной рамой), обычно требуется, чтобы ограничение размещалось на оси
дочернего объекта. В тех случаях, когда два “Rigid Body” разделены (мяч, качающийся на крюке),
обычно требуется, чтобы ограничение размещалось на оси родительского объекта. Чтобы переместить
размещение ограничения, вы можете щелкнуть по ограничению в Outliner и использовать инструмент
перемещения (клавиша W) или поворота (клавиша E). Если вы обнаружите, что визуализация отображения
ограничения слишком мала, вы можете использовать инструмент масштабирования (клавиша R)
для увеличения размера отображения значка. Это влияет только на то, насколько велик значок ограничения
во вьюпорте, и не влияет на эффекты симуляции ограничения.
Выберите вкладку Attribute Editor > Constraint, для constraints (ограничений). вы можете изменить
такие атрибуты, как limits (лимиты); Damping (Затухание); Spring (упругость) и не только.
Рис.10
Как описано выше, ограничения также могут использоваться для ограничения “Rigid Body”
относительно глобального местоположения в сцене. Создайте динамический “Rigid Body”, а затем выберите
Maya HotBox > PhysX > Constraints > Create Constraint (Рис.10)
Ограничение будет автоматически размещено в центре объекта. Повторите описанные выше действия,
чтобы переместить ограничение в соответствующее место. “Rigid Body” будет установлен в качестве
родительского объекта. Если вы хотите поменять местами Parent и Child объекты (доступно когда связываете
2 физ. тела например “Rigid Body”), выделите ноду Constraint в Outliner перейдите
в Attribute Editor > Advanced - установите флажок “Reverse Parent/Child”
Существует три типа “springiness” (упругости), поддерживаемых Constraints (ограничениями):
01 - Limit Bounciness: (Рис.11)
Когда ограничение достигает своего лимита (limit), при необходимости оно может отскочить от предела.
Например, представьте себе дверь в вашем доме. Если вы захлопните дверь, защелка щелкнет, и она не
отскочит назад. (Значение ограничения “Limit Bounciness” будет равно 0,0) Однако теперь представьте,
что вы сняли дверную защелку. Захлопывание двери приведет к тому, что она отскочит от дверной рамы.
Просто установка этого значения не имитирует реальную пружину.
02 - Springiness: (Рис.11)
Когда ограничение достигает края своего лимита (limit), оно может при необходимости превысить лимит
(limit) и приложить усилие, чтобы вернуть его к лимиту (limit). Например, представьте себе шнур для
банджи, привязанный к человеку и мосту. Когда человек прыгает с моста, он свободно падает до тех пор,
пока длина шнура банджи не достигнет своей длины покоя. (Достигнут радиус ограниченного предела XYZ.)
В этот момент шнур банджи начинает растягиваться, прилагая усилие, чтобы вернуть человека на длину
шнура. Сила может заставить человека ускориться и стартовать выше, чем необходимо (шнур начинает
изгибаться сам по себе), но никакая сила не применяется, как только человек возвращается
за пределы "лимита (limit).
03 - Damping:
Атрибут сочетается с упругостью, чтобы описать, через какое количество “mud” (грязи)
проходит объект, как только он превышает лимит (limit).
Установка предельной упругости помогает заставить ограничение вести себя как пружина из реального мира,
которая активна только в определенное время. Чтобы имитировать пружину реального мира, параметры
привода “Goal/Position” (Цели/Положения) в компоновке “Goal” (Цели) должны быть установлены в
соответствии с жесткостью пружин, которых вы хотите достичь с помощью ограничения.
Рис.11