Кривые IPO

Относится к Blender v2.31

Рис. 2. Окно IPO (IPO Window).

В качестве примера используем стандартный файл Блендера, открывающийся при запуске. Чтобы увидеть точную картину происходящего, используем Ctrl-ВЛЕВО. При этом справа отобразится окно IPO (Рис 2). Конечно, любое окно можно переключить в режим IPO с помощью соответствующего пункта меню, определяющего тип окна, но более удобно работать одновременно и с 3D-  и с IPO-окнами. В окне IPO отображаются используемые каналами кривые IPO, а также все остальные доступные каналы. С окном IPO можно делать такие же преобразования, как и  с любыми другими окнами Блендера, например, увеличение, уменьшение и пр .

В дополнение к стандартным каналам, которые задаются клавишей I, можно использовать т.н. дельта-каналы, такие как dLocX. Они позволяют использовать относительное изменение. Эта возможность используется, как правило, если нужно управлять несколькими объектами при помощи одного IPO. Кроме того, это позволяет работать со "слоями" анимации, добиваясь тем самым интересных эффектов без использования сложных кривых.

Каждая кривая в окне IPO может быть выделена отдельно с помощью ПКМ. Операции перемещения (Grab) и масштабирования (Size) действуют здесь также, как в 3D-окне. Кривая может быть выбрана щелчком мыши на цветной кнопке около имени нужного канала в столбце справа. Щелчок на имени канала позволяет скрыть/показать соответствующую кривую. Выделив все кривые (A) и сдвинув их вправо (G), можно сместить всю анимацию во времени.

Кривые можно переключить в режим редактирования (Edit Mode) как по отдельности, так и вместе, выделив то, что нужно, и нажав TAB. При этом будут показаны индивидуальные вершины и направляющие. Направляющие Безье ведут себя также, как в объекте кривой линии (Curve Object):

Направляющие можно перемещать, выделив их среднюю вершину при помощи ПКМ. При этом выделятся и две другие вершины. Режим перемещения включается клавишей G, либо удерживанием ПКМ и движением мыши. Если таким же образом выделить и перемещать одну из крайних вершин, это приведет к повороту направляющей.

При повороте направляющих, их тип будет изменён автоматически:

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

Кривые IPO имеют важное свойство, отличающее их от обычных кривых: невозможно поместить горизонтально более одного участка кривой. Петли и окружности недопустимы и бессмысленны в системе IPO. Кривая IPO может иметь только одно значение для заданного времени, что контролируется автоматически в окне IPO. При перемещении участка кривой по горизонтали видно, как выделенные вершины двигаются "сквозь" кривую. Это позволяет копировать участки кривой (SHIFT-D) и перемещать их во времени.

Важно, как кривая IPO будет восприниматься вне её самой.  В подменю Curve>>Extend Mode, вызываемом из заголовка окна IPO, присутствуют четыре опции: (Рис. 3).

Рис. 3. Опции продолжения IPO

Действие каждой из них показано на Рис. 4.

Рис. 4. Продолженные кривые IPO.

Режимы продолжения кривой (слева направо):

Режим Constant (постоянная):

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

Режим Extrapolation (экстраполяция):

Концы выделенных кривых продолжаются в том направлении, куда они указывают.

Режим Cyclic (цикл):

Кривая IPO повторяется циклически.

Режим Cyclic Extrapolation (циклическая экстраполяция):

Кривая IPO экстраполируется циклически.

Кривые IPO могут быть не только кривыми Безье; доступны ещё два типа, для выбора которых нужно использовать T или подменю Curve>>Interpolation Mode. При этом режим интерполяции выделенных кривых может быть установлен в:

Кривые IPO могут быть заданы не только через ключевые кадры. Их можно нарисовать "от руки", используя CTRL-ЛКМ. Правила следующие:

В данном окне ещё нет модуля IPO и выделен один канал:

Будет создан модуль IPO и первая кривая IPO с единственной вершиной, помещённой там, где был щёлчок мыши.

Уже есть модуль IPO и выделен канал, где кривая IPO ещё не задана:

Будет добавлена новая кривая с единственной вершиной.

Есть модуль IPO и выделен канал, имеющий кривую IPO:

К выделенной кривой IPO будет добавлена новая точка.

Перечисленное невозможно, если в режиме редактирования выделено более одной кривой IPO.

Tip Как сделать объект вращающимся
 

Лучший способ быстро задать осевое вращение объекта: выделить объект, в окне IPO выделить один из каналов "Rot" и, используя CTRL-ЛКМ, вставить две точки. Если осевое вращение должно быть непрерывным, следует применить пункт меню Curve>>Extend Mode>> Extrapolation.

Единственным недостатком работы с кривыми перемещения является ограниченная свобода преобразований. С кривыми перемещения можно работать вполне интуитивно только тогда, когда они могут быть представлены в базисе XYZ.  Для позиции объекта это подходит, но для размера и вращения существуют более удобные способы математического описания: матрицы 3х3 для размера и квартерионы (4 числа) для вращения. Их также можно было бы обрабатывать в каналах, но это может привести к путанице и математически сложным ситуациям.

Ограничиться при задании размера объекта тремя числами XYZ кажется вполне очевидным, но это делает невозможными прямоугольные искажения, например, сжатие объекта по диагонали (сдвиг). Простым решением является использование иерархии. Неоднородный предок (Parent) при масштабировании будет искажать потомка (Child), "сдвигая" его. 

Ограничения, возникающие при использовании трёх чисел для вращения объекта, менее понятны. Это так называемое вращение Эйлера, являющееся неоднородным, т.е. одно и то же вращение может быть выражено разными числами. Это приводит к неприятному эффекту, когда становится невозможно повернуть объект из одной позиции в другую. Работая с несколькими ключами вращения, пользователь может внезапно  столкнуться с довольно неожиданной интерполяцией, или с невозможностью выполнить частичное осевое вращение вручную. В этом случае также лучшим решением является использование иерархии. Предок всегда будет присваивать заданное вращение осей к потомку. (Полезно знать, что вращения по X, Y и Z вычисляются одно за другим. Кривая, воздействующая на канал RotX, всегда задаёт вращение по оси Х.)

К счастью, Блендер внутри себя вычисляет всё в матрицах и квартерионах. Этим объясняется то, что иерархия работает правильно, и режим вращения (R) делает то, что от него ожидается. Ограничения проявляются только в кривых IPO, но в данном случае простота их использования преобладает над не очень понятной математической чистотой.