среда, 26 июня 2013 г.

In-place to Root Motion через NLA

Когда передо мной встала задача создать Root Motion анимацию, то я уже тогда пытался делать через In-place. В декабре прошлого года (тогда я занимался экспериментами с Mecanim) мне удавалось делать это только если небыло никаких IK системы.
Собственно оно и сейчас так, однако что делать если главная кость все таки немного движется? поворачивается, незначительно меняет положение? Или у неё есть множество ключевых кадров?


Про NLA я уже тогда знал. Но я не стал копать в этом отношений, поскольку FBX экспорт НЕ поддерживал вывод анимационного клипа из NLA. Но вот я работаю уже не с fbx, а с smd. И тут все по-другому...
Current/NLA. NLA MATHAFACKA!

Итак.

1) Для начала нужно запечь анимацию и удалить все IK.
2) Создаем новый анимационный клип, сбрасываем позу на регдолл.
3) Переместить главную и непрекрепленые кости на нужное расстояние

На скрине видно, что я не сбрасывал позу, хотя желательно. Почему? Потому что при добавлений значения в NLA будут добавляться лишние переменные положения.
Алсо, ставить ключи ТОЛЬКО на Location. И не забудьте отрубить авто-ключ, а то замучался выяснять почему у меня ставит ключи на все....
Можно пренебречь правилом только для вращения - там все равно обычно нули. А вот для масштаба нет - тогда в результате у нас кости будут с масштабом 2.000, поскольку он складывает значения не задумываясь.
Итак мы создали нужное движение. В чем магия?
Не забудьте включить активным основную анимацию
4) Создаем новое окно, выбираем NLA Editor (я обычно Curve Editor в него перевожу). Для удобства нажмите Ctrl + Space, чтобы развернуть на максимум - остальные окна пока не нужны.
5) Не забываем нажать N чтобы появилось та панелька справа. И еще нажмите на значок снежинки, чтобы разблокировать первую дорожку.
6) В окошке у вас должно быть пусто и не уютно. Смело нажимаем блендеровскую общую комбинацию создания (Shift + A если кто не знает) выбираем сначала главный анимационный клип, затем добавляем наш только что созданный анимационный клип.
7) Выбираем наш верхний клип (который добавили последним) и в правой панельке, в менюшке Active Strip параметр Blending меняем на Add. Т.е. мы добавляем все анимированные значения верхнего анимац. клипа на нижний
Знаю, пишу как пьянная курица лапой, но это мой текущий скилл рисования мышкой, щито поделать....
Снова нажимаем Ctrl + Space возвращаясь к многооконию :D
Проигрываем анимацию. Все должно работать. Если нет (а объяснил я щас довольно плохо, много специфичных слов), то ниже описал подводные камни, с которыми я столкнулся.

1) Авто ключ отрубить, если включен. Смысл в том, что ничего, кроме motion значения добавляться в оригинальную анимацию не должно. По этой причине ни в коем случае нельзя ставить ключ на Scale, который всегда равен единице (или больше ее).
Он посчитает так: Оригинальный скейл (1.000) + накладываемая анимация с ключем скейла 1.000 = 2.000. После такого все кости выворачивает в йух.

2) Переход одной анимации в другую отключить. Там наверху на скрине вижно Auto Blend In/Out. Снять галку и нижним значениям присвоеть нуль :D.

3) Нет времени объяснять, Action Blending не подоидет. Только просто Blending. Не ошибитесь.

4) Смотрите чтобы ключи имели только кости, а не сам меш.

5) Так уж получилось, что все ключи ставятся в pose space. Сменить систему координат нельзя. Поэтой причине нельзя анимировать IK кости, которые обычно развернуты так и сяк. У них получаются не корректные значения при добавлений, как бы правильно ты бы не ставил кадры.
Я сдвигал только по оси Y (смотрите на значения Location). Однако он уже записал в X, Y, Z. При добавлений получится хрень. Такие дела.

Если что-то упустил, или не понятно что-то: спрашивайте - помогу, расскажу, дополню.

Комментариев нет:

Отправить комментарий