// (Use ‘cycleCheck -e off’ to disable this warning.) //

Именно о них сейчас и пойдет речь. Проведите следующий простой эксперимент.

Создайте сферу и цилиндр.

Выберите сферу, затем цилиндр и создайте Point Constraint, привязывающий цилиндр к сфере.

А теперь выполните операцию Edit=>Parent.

Коль скоро цилиндр был выбран вторым, он становится «родителем» сферы.

Теперь попробуйте перемещать сферу. Впечатляет?

Подумайте теперь, что же происходит? Вы перемещаете сферу, сфера тащит за собой цилиндр, прикрепленный к ней с помощью Point Constraint. Однако цилиндр является родителем для сферы и поэтому должен тащить за собой сферу, которая тащит цилиндр и т.д. Получается замкнутый круг. Такой круг и трактуется MAYA как цикл в дереве зависимостей.

При этом MAYA проявляет завидное терпение и старается не «упасть» от таких циклических издевательств; она даже сообщает о наличии циклов в сцене с помощью замечания в Script Editor:

// Warning: Cycle on ‘pCylinder1_pointConstraint1.target[0].targetParentMatrix’ may not evaluate as expected. (Use ‘cycleCheck -e off’ to disable this warning.) //

При появлении такого приговора следует внимательно пересмотреть связи между объектами и атрибутами, чтобы выявить некорректные зависимости. В данном случае ответственность лежит целиком на вас: ведь вы продумывали иерархию и связи между объектами. Поэтому при появлении такого сообщения в Script Editor при работе с констрейнами сразу проверьте взаимодействия между объектами и логику влияния объектов друг на друга. Объект, указанный в сообщении, помогает понять, в каком месте возник цикл.

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

Пример использования констрейнов. Конструирование карданной передачи Как я уже упоминал, с помощью констрейнов можно собирать некоторые работающие конструкции, который потом можно легко анимировать. В анимации персонажей констрейны применяются для «навешивания» на модель управляющих объектов, облегчающих «руководство» персонажем, а также для определения взаимодействий между различными частями персонажа. Об этом можно подробнее прочитать в соответствующей главе, а сейчас я бы хотел привести пример использования констрейнов для задач конструирования работающих механизмов, например, для анимации карданной передачи.

Данный пример описывает «инженерный» подход к работе с констрейнами (его любезно предоставил Володя Забелин). Использование констрейнов в данном случае весьма нетривиально, но является практически единственным способом решить поставленную задачу. Не верите? Тогда попробуйте решить ее по-другому.

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


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