Зона использования NLA-редактора.

Чудненько. Из прошлого урока стало понятно, что это за инструмент — нелинейный монтаж экшенов, и даже ушёл страх перед его использованием. Да вот только где же он применим? Чтобы ответить на этот вопрос, нужно немного поломать логику своего мышления. Мы не привыкли делить задачи на составляющие, это не в нашей природе: письмо пишется с первой строчки и до последней, яма копается сверху вниз, дорогу можно пройти, осмелившись на первый шаг и все остальные за ним. Но работа в NLA-редакторе требует совсем иного подхода. Научно это называют декомпозицией задачи: разделением на подзадачи. Таким образом вы пишете в письме сначала самые важные абзацы, в потом заполняете пространство между ними, проходите дорогу, телепортируясь в те её участки, которые хочется пройти именно сейчас и даже яму копаете с любой удобной для вас глубины.

Физически эти метафоры выглядят неубедительно, зато в случае с NLA-редактором работает идеально. Это позволяет делить работу между людьми, сортировать квалифицированный и чисто технический труд… И, конечно, анимацию дробить на составные части, делать небольшими кусочками и собирать в NLA редакторе. Возьмём прикладную задачу: персонаж стоит, идёт, машет по пути рукой, начинает бежать. И, чтобы жизнь мёдом не казалась, зададим всему этому добру траекторию по кривой.

Заготовки

Чтобы не растягивать урок, я заранее заготовил несколько экшенов:

  • персонаж стоит;
  • идёт;
  • бежит;
  • машет рукой;
  • удержание локации на нуле;
  • перемещение рута при хотьбе;
  • прибавление скорости при беге (скорости, при которых не проскальзывают ноги).

Заготовку для практики можно скачать тут.

 

Сюжет будет таким:

  • персонаж стоит полубоком к камере — 3 секунды;
  • замечает камеру — две из первых трёх ;
  • начинает идти вперёд;
  • машет рукой, глядя в камеру;
  • начинет бежать, заворачивая по кривой, и пробегает мимо камеры.

 

Сюжет, прямо скажем, довольно простой, но на его примере можно будет увидеть логику работы и оценить скорость сборки этого конструктора, при условии, что детали уже разложены перед вами. Let’s start it .

 

Интерфейс настроен. NLA-editor готов к работе. Выделен скелет персонажа. Сам персонаж находится в нулевой координате.

 

Первым делом добавляем статичный экшн — Stand. Тут персонж просто стоит. Нам нужно, чтобы это занимало по времени не больше трёх секунд. Учитывается время с нахлёстом на следующий стрип.

 

Далее персонаж начинает идти и делает примено шесть шагов. В цикле хотьбы заложено два шага, а значит, после добавления стрипа “Walk” необхоимо выставить ему  три цикла. Причём из статики персонаж будет выходить в один шаг, поэтому делаем нахлёст на статику в половину цикла. Но дальше планируется переход на бег, поэтому заложим всё-таки 4 цикла — один для нахлёста с бегом.

 

Затем персонаж начинает бежать, это тоже около шести шагов, но персонаж убегает за кадр, поэтому добавленому стрипу Run заложим 6 циклов (про запас). Добавляем его в редактор, и выставляем в нахлёст со стрипом походки в один цикл (два шага).

 

Махание рукой. Этот стрип под названием “Hand” нужно расположить над стрипом походки, где-то посередине, и настроить его наплыв уже вручную, чтобы рука аккуратно переходила в махание, а не рывком. Стоит обратить обратить внимание на то, что все у всех стрипов стоит режим смешивания Replace — замена. И рука не исключение. Но если прежние стрипы заменяли друг друга постепенно: один угасает, другой нарастает; то в случае руки, стрип Hand как бы внедряется в стрип походки и в нём замещает движение руки. Но если вы захотите повторить то же самое в домашних условиях, учтите(!) в таком замещающем стрипе не должно быть никаких ключей, кроме как на руку. Ведь вы хотите заместить движение руки и только руки.

 

Готово. Расставлены основные стрипы и нахлёсты. Сейчас персонаж двигается, как задумано, только делает всё на одном месте. Движение головы я пока не стал делать, т.к. я хочу ориентировать его в сторону камеры, а это можно сделать только в движении. Собственно, движением и займёмся.

 

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

 

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

 

Выйду в отдельный Blender. Мой мозг взорвался при попытке смешать два стрипа разной скорости перемещения. Ожидания от работы со стрипами в корне не совпадают с реальной логикой работы в NLA. Но это нужно увидеть, чтобы понять. Вот кубик. Смотрим на него сверху. У кубика три экшена. Один — Stand — кубик просто стоит на месте 100 кадров. Другой — Move -движение с определённой скоростью. Третий — Move2 - движение с большей скоростью. Хорошо, тест первый. Беру стрип Move. Ставлю в первый кадр. Смотрим анимацию. Пока всё хорошо. Теперь я хочу, чтобы кубик ускорялся и полз уже с большей скоростью. Для этого добавляю стрип Move2, ставлю его в нахлёст с первым стрипом, и, конечно, как умный человек, включаю ему режим смешивания Add — добавления, чтобы нарастание позиции второго стрипа просто складывалось со следующим стрипом. Но стоит запустить анимацию, как происходит нечто не поддающееся объяснению. На нахлёсте всё словно бы пошло, как надо, но в кадре, где первый стрип заканчивается, происходит скачёк кубика чуть ли ни в нулевую позицию. Самое время выбросить компьютер в окно. Но, попробуем успокоиться и разобраться, что же в логике NLA-editor было понято неверно.

 

Удалим для начала все стрипы. Теперь снова добавим стрип Move на первый кадр. Всё работает — кубик ползёт. Попробуем сделать нарастание скорости кубика. Выключим галочку Auto Blend и поставим кадров 15 наплыва. Но вот беда. На анимации это не сказалось вообще никак! Т.е. вроде есть наплыв на стрипе, но ускорения на кубике нет. Это первый звоночек. Идём дальше. Отодвинем стрип вправа на 15й кадр. И вот тут начинается какая-то чехарда. Если во время проигрывания анимации, нажать сброс — клавиша Escape. То анимация останавливается, ползунок спрыгивает в первый кадр, но кубик(!) остаётся в своём последнем положении, не спрыгивая в нулевую координату. Даже если у стрипа стоит режим Hold — раскидывающий влияние стрипа в обе стороны. Излечить эту болезнь очень просто. Достаточно на нижний трек поставить стрип Stand в первый кадр (только выключим ему режим Auto Blend). Тут и отскок в нулевой кадр появился и даже ускорение вылезло. Мы близки у разгадке. Стрип Stand — это просто экшн кубика, где он стоит на одном месте. Что произойдёт, когда закончится влияние стрипа Move ? Кубик остановится, т.к. у стрипа стоит режим Hold Forvard — который фиксирует позицию объекта по окончанию стрипа. Если, например, выставить режим экстраполяции Nothing, то в момент окончания стрипа кубик будет выскакивать в нулевую позицию. Это, кажется, понятно. Ну а теперь попробуем с замедлением остановить кубик. Включен режим Hold Forvard, Blend Out выкручен на 15 кадров. Но вместо замедления на анимации происходит какая-то ересь. Кубик быстренько, за 15 кадров возвращается в нулевую координату, даже при наличии режима Hold Forvard. Что произошло? Произошло то, что мы и задали стрипу — снижение влияния. Вот тут все пазлы готовы, остаётся их только сложить. Возрастание и убывание влияние стрипа это не влияние напрямую на кубик, это влияние данного стрипа на другие стрипы! Поэтому, когда за 15 кадров влияние стрипа уходит в ноль, сбрасываются все(!) его параметры. Т.е. вообще все! Поэтому, если вы попытаетесь смешать таки образовм два стрипа перемещения, получится ерунда, как ни крути. Что же делать в случаях, когда нужно, ускорить движение при помощи стрипа, а затем ещё и замедлить? Всё, просто! Сейчас покажу. Дублирую стрип Move и ставлю немного правее. Режим Add прибаляет скорость, кубик . Ещё раз дублирую и сдигаю, но на этот раз ставлю режим смешивания Subtract. Это снижает скорость до первоначальной. Если вы найдёте более простой способ предсказуемо управлять скоростью объекта стрипами, обязательно сообщите о нём.

 

А теперь вернёмся к нашему персонажу и завершим работу над ним. Для начала возьмём стрип Move. Сам по себе он представляет из себя длиииинный экшн, в котором персонаж из нулевой точки перемещается поступательно за Root с той скоростью, которая необходима, для движения персонажа в походке без проскальзывания ступней. Берём стрип Move. Начало его выставляем там же, где стартует стрип Walk. И наплыв выставляем такой же, как у стрипа Walk. Т.е. с одинаковой скоростью нарастает интенсивность обоих стрипов и вместе с первым шагом персонаж начинает перемещаться.

Важно сказать, что это первый экшн, в котором присутствует позиция кости Root — главной кости, отвечающей за перемещение персонажа. И когда мы откидываемся на первый кадр (внимание), персонаж не откидыватся в нулевую позицию. Т.е. продолжает использовать последнюю полученную информацию о позиции. Чтобы персонаж возвращался в ноль, добавляю с первого кадра стрип Zero_Location. Тут Root зафиксирован в нуле по всей длинне кадра. Заработало. И вылечено отпрыгивание. Наконец в том же кадре, где персонаж переходит на бег, добавляем стрип Turbo в режиме смешивания Add и выставляем нарастание влияние стрипа в длинну нахлёста походки и бега. Новая скорость складывается со старой и персонаж ускоряется. Если вам понадобится более плаынй переход, то можно анимировать нарастание вручную, а затем отрегулировать кривые.

Вот и всё… персонаж делает всё, что мы хотели, кроме двух моментов: поворота головы и поворота персонажа во время бега. Добьём.

 

Выставлю камеру, как мне кажется удачным. Чтобы из левого края кадра персонаж двигался немного по диагонали в правую часть кадра.

 

У меня нет заготовки, которая бы поворачивала голову именно в нужную сторону. Но угадать такой поворот практически невозможно. Переходим на кадр, в котором голова начинает поворачиваться в сторону камеры. Это почти начало, кадр десятый, я думаю. Перснаж за 20 кадров поворачивает свою голову к  камере, некоторое время смотрит в камеру, затем персонаж смотрит в сторону, куда собирается идти. Все созданные нами ключи появляются и в новом экшене, можем назвать его Head, и отображаются в виде прозрачных ромбиков в NLA-editor. Теперь, когда экшн нас устраивает, преобразуем его в стрип. Тут есть специальная кнопка слева от прозрачных ромбиков. Отлично. И мы получаем финальную анимацию с поворотом головы.

 

Последнее. Выставить траектории по кривой. И нет, я не собираюсь делать это в NLA-редакторе. Просто я хочу показать, что анимация, полученная в нём, это такая же анимация в виде экшенов. Поэтому я возьму заранее заготовленную кривую. Её начало и ориджин находятся в нулевой координате, там же где и главная кость персонажа в первом кадре. Затем я привязываю Root к кривой при помощи констрейна Clamp To и осталось только добавить стрип для поворта. Сам по себе персонаж не повернётся. Иииии…. Готово!

 

Сегодня мы рассмотрели прикладное применение нелинейного монтажа анимации в NLA-редакторе. Я надеюсь, что, несмотря на непривычность самого процесса, вы проникнитесь логикой процесса и вдохновитесь на подвиги и эксперименты, или даже придумаете, как ускорить работу. Для себя я подметил, что полностью собирать анимацию в NLA редакторе — занятие не для слабонервных, но если проделать увиденное в уроке, то позже можно легко применять эту технологию для дополнения анимации за счёт заготовок. Ведь создав основной, ведущий экшн, длинной во всю сцену, уже в NLA-редакторе к нему можно добавлять дополнительные движения.

На этом всё.
Вперёд, к новым знаниям, вместе с курсом Blender Level Up!

P.S.:  варианты применения NLA-editor:

  • внедрение заготовок в уже сделанную анимацию (добавить взмах руки в цикл походки);
  • смещение нейтрального положения (добавление офсета) в готовый экшн (готовый прыжок мяча можно перенести или развернуть);
  • разведение работы над одним экшеном на нескольких человек (движение тела и, отдельно, липсинг) и затем совмещение в NLA;
  • инструмент для смещения нейтрального положения костей при работе с данными захвата движения (motion capture)…