Поэкспериментируйте со значениями Up Axis, чтобы убедиться, что можно задавать ориентацию не только «глазами вверх», но и «боком вверх», и даже «брюхом вверх». Не забудьте про опции Inverse Front и Inverse Up. Они позволяют развернуть объект «задом наперед» и «вверх тормашками».
Когда направление движения по пути становится параллельным направлению «вверх», заданному через World Up Vector, объект может внезапно перевернуться. В нашем случае это может произойти, если на пути движения встретится вертикальный участок. Эта проблема связана с тем, что в таких случаях объект пытается смотреть «вверх» одновременно и «носом» и «макушкой». «Макушка» при этом, может стремительно вращаться.
Эту проблему решают обычно выбором направления World Up Vector таким образом, чтобы оно никогда не совпадало с касательной к пути движения. Если же траектория столь замысловата, что нельзя подобрать такой вектор, проблема решается выбором альтернативного метода разворота «макушки» объекта, а именно World Up Type=Object Up. В этом случае требуется создать дополнительный объект {обычно это локатор) и указать его имя в поле World Up Object. После этого объект будет двигаться по пути и стараться ориентироваться своей «макушкой» на локатор, который можно ловко анимировать, управляя ориентацией объекта. Подробнее о том, как избежать проблемы перекручивания и внезапных переворотов, вы можете прочитать в разделе про констрейны, а именно в описании Aim Constraint.
Атрибуты Front/Up/Side Twist позволяют «доворачивать» объект на нужный угол, если это необходимо: ведь атрибуты rotate самого объекта заблокированы входящими связями от ноды motionPathl. Вы можете анимировать атрибуты Twist любым способом.
Чтобы включить режим «мотоциклетного наклона внутрь поворота», существует опция Bank (крен). Соответствующие атрибуты позволяют задать диапазон автоматического крена.
Редактирование анимации по пути Теперь поговорим немного об внутреннем устройстве анимации по пути.
Как следует из Channel Box, на атрибутах translate и rotate объекта появились некоторые связи. Перемещением и вращением объекта теперь управляет нода motionPathl, в чем нетрудно убедиться, открыв Hypergraph.
Примечание. Если отключить опцию Follow в атрибутах ноды motionPath, атрибуты rotate объекта, очевидно, «освободятся» от таких связей, так как в этом случае объект не должен поворачиваться вдоль пути, и вы можете анимировать его вращение любым угодным вам способом, например, нацелив его в нужную точку с помощью Aim Constraint.
Самый «главный» атрибут ноды motionPath - это U Value. Он определяет, в каком месте на кривой располагается объект.
Как вы знаете, «конкретное место на кривой» задается параметром U. Очевидно, что если кривая имеет контрольные точки, неравномерно распределенные в пространстве, и построена по умолчанию с использованием параметризации типа Uniform, то параметр U (или U-координата) распределен вдоль кривой совершенно неравномерно. Именно поэтому опция Parametric Length по умолчанию выключена, и объект движется вдоль кривой не в соответствии с параметризацией, а пропорционально длине кривой. В этом случае атрибут U Value представляет собой длину пройденного участка кривой. Точнее говоря, он изменяется от нуля до единицы, отражая, какую часть полной длины кривой объект уже «проехал».