Как я уже говорил, смешивание анимаций всегда, начиная с версии 1.0, могло быть реализовано в MAYAc помощью системы констрейнов. И может до сих пор.. Тот же Брюс Виллис мог быть одновременно приконстрейнен и к кабине вертолета, летящего по пути, и крылу самолета, двигающегося по ключам, в соответствии с указаниями диспетчеров. Смешивание анимации в этом случае сводится к анимации весов констрейна, определяющих, какую долю анимации Брюс Виллис унаследует от вертолета, а какую от Боинга.

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

В соответствии в основной концепцией AAAYA об анимации атрибутов, а не объектов, следует сразу внести ясность: когда мы говорим о смешивании различных типов анимации на одном объекте, на вход анимированного атрибута поступает результат усреднения или смешивания двух (или нескольких) значений, вычисляемых, например, анимационной кривой и констрейном.

Если в обычном случае анимационная кривая или констрейн напрямую присоединены к анимированному атрибуту, то в случае их смешивания, связи исходящие от них сначала смешиваются в специальном «блендере» - ноде типа pairBlend, а затем результат смешивания передается в анимированный атрибут.

На практике для того, чтобы получить смешивание анимаций, достаточно просто проанимировать один и тот же атрибут объекта двумя разными способами: например, сначала поставить ключи на атрибуты translate, а затем применить к объекту Point Constraint; или сначала создать для атрибута expression, а потом поставить на этот же атрибут ключи.

Чтобы быстро увидеть пример смешивания анимаций, возьмите любой объект, например куб, и сначала хорошенько потрясите его с помощью expression:

pCubel .ty=rand(-1,1); А затем поставьте на атрибут translateY несколько ключей, задающих движение по вертикали. Результирующее движение будет определяться поставленными ключами, однако в Channel Box можно будет увидеть дополнительный атрибут blendExpressionl и дополнительную ноду с названием pairBlendl.

Цвет атрибута translateY станет зеленым, что свидетельствует о том, что он зависит теперь не от анимационной кривой или от expression, а от ноды pairBlendl.

Новый атрибут blendExpressionsI определяет, в каких пропорциях смешиваются две анимации: ключевая и процедурная.

Установите значение blendExpressionsI =0.5, и вы увидите, как объект движется по ключам, одновременно хаотически вздрагивая.

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

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


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