Откройте с диска сцену kardanOl.ma. (Если вы «сняли» эту книжку в Интернете и у вас нет диска, сделайте подобную конструкцию с помощью некоторого количества цилиндров).

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

Прежде всего, стоит соединить оба вала в центре с помощью Point Constraint. Нетрудно заметить, что пивоты обоих валов находятся в начале координат. Это сделано для того, чтобы обеспечивать их корректную ориентацию друг относительно друга.

Выберите красный вал, затем синий и выполните Constrain=>Point. Ничего особенно на экрание не произойдет, но при попытке подвигать красный вал, синий будет двигаться вместе с ним.

Не забывайте про Undo.

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

Создайте два локатора (Create=>Locator).

Растащите их в стороны по оси X, чтобы они располагались позади валов.

Назовите один их них LocRed, а второй LocBlue.

Те, кто различает цвета на экране, могут для удобства поменять цвет локаторов на красный и синий, соответственно. Для этого достаточно выбрать локатор, открыть Attribute Editor и в первой закладке (можно и во второй) найти раздел Display=>Drawing Overrides.

В нем следует включить галку Enable Overrides и с помощью слайдера Color выбрать нужный цвет.

Далее я буду ссылаться на красный локатор (LocRed) и синий локатор (LocBlue). Сориентируем оба вала, так чтобы они смотрели своей продольной осью на локаторы.

Выберите красный локатор, затем красный вал.

Выполните Constrain=>Aim.

Сдвиньте локатор вверх и убедитесь, что вал «смотрит» на него своей продольной осью. (Неплохо также помнить, что продольная ось - это локальная ось X для вала).

Теперь выберите синий локатор, затем синий вал.

Выполните Constrain=>Aim.

Синий вал мгновенно развернется так, чтобы «смотреть» на локатор своей продольной осью, однако как бы «задом-наперед».

Это связано с тем, что локальная ось X (используемая по умолчанию для задания направления внутри объекта, «которым» надо смотреть на цель) для синего вала направлена в стороны «скобы», а не в сторону шестеренки. Вместо того, чтобы разворачивать локальную ось, отредактируем атрибуты созданного констрейна.

Выберите синий вал, откройте Attribute Editor.

Перейдите в закладку VAL2_aimConstraint1 и в разделе Aim Constrain Attributes задайте Aim Vector =(-1, 0, 0).

Это означает, что синий вал должен смотреть на цель (aim) направлением, противоположным локальной оси X.

После этого синий вал развернется к своему локатору шестеренкой.

Сдвиньте синий локатор вверх и убедитесь, что вал «смотрит» на него своей продольной осью.

Сохраните сцену (kardan02.ma).

После того, как мы развернули оба вала с помощью констрейнов, может возникнуть резонный вопрос, а как будет крутиться красный вал, если на атрибутах вращений у него -висит» Aim-констрейн? И как он будет передавать свое вращение синему валу, если вращения последнего тоже зависят от Aim-констрейна?


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