Работа с констрейнами была уже немного проиллюстрирована в разделе «Колбасинг» в начале этой главы. Констрейны, как правило, связывают между собой движение двух объектов, однако при создании констрейна для одного твердого тела второй конец констрейна остается свободным и может быть проанимирован вручную произвольным образом. Это относится к пружинам (Spring Constraint) и вращению вокруг оси (Hinge Constarint). Прибивание к точке (Nail Constraint) требует выбора только одного объекта, а связывание «скобой» (Pin Constraint) создается только для двух твердых тел.

Создание констрейнов - процесс интуитивно понятный, традиционно требующий предварительного выбора объектов. Атрибуты констрейнов также немногочисленны и прозрачны для понимания. Я приведу небольшой пример конструирования устройства, требующего комбинирования констрейнов для достижения нужных механических свойств. Не забывайте, что позиция любого констрейна может быть проанимирована любыми доступными в AAAYA способами.

Подвесной таран Сконструируем таран, представляющий собой бревно, подвешенное на двух цепях.

Лучшее бревно это полигональный цилиндр, лежащий на боку (rotateX=90, scaleY = 5). Сделайте его, выберите и создайте поле гравитации: Field=>Gravity.

Нажмите Play.

Цилиндр норовит выпасть снизу из монитора.

Попытки создать два Nail Constraint для одного цилиндра приводят к неутешительному выводу о том, что констрейн всегда крепится к твердому телу строго в центре масс. Редактируя положение атрибутов centerOfMass, можно смещать точку крепления, однако иметь два центра масс невозможно по определению, и поэтому подвесить цилиндр за две точки так просто не получится.

Идея состоит в том, чтобы создать две точки крепления в виде небольших твердых тел, которые можно прикрепить к бревну, например, при помощи Pin Constraint. А эти тела-крепления можно потом подвесить в пространстве обычным Nail Constraint.

Создайте два полигональных кубика и расположите их ближе к краям цилиндра в местах подвеса.

Превратите их в активные твердые тела: Soft/Rigid Bodies=>Create Active Rigid Body.

Пытливые умы тут же возопят: «А как же пятый закон динамики о непересечении твердых тел!!». И будут правы. Но мы и не собираемся использовать эти кубики для столкновений с другими телами и хотим сохранить их расположение относительно бревна.

Поэтому установите для них в Channel Box атрибут твердого тела collisions=off.

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

Теперь прикрепим каждый кубик к цилиндру.

Выберите сначала первый кубик, затем цилиндр и выполните Soft/Rigid Bodies=>Create Pin Constraint. Передвиньте центр созданного констрейна внутрь кубика.

Проиграйте анимацию, посмотрите, как движутся объекты.

Теперь выберите кубик и «прибейте» его к «воздуху» с помощью Soft/Rigid Bodies=>Create Nail Constraint.

Переместите центр нового констрейна вверх по вертикали.

Проиграйте анимацию и проделайте аналогичные действия со вторым кубиком. Бревно должно неподвижно повиснуть на двух креплениях.


⇐ вернуться назад | | далее ⇒