Ретаргетинг одной и нескольких анимаций в MotionBuilder с дальнейшим экспортом

Пошаговая инструкция.


Написать
Подпишитесь на нас:

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

В данной статье мы будем делать ретаргетинг mocap (motion capture) анимаций, подготовленных лабораторией Motion Capture центра  ACCAD (The Advanced Computing Center for the Arts and Design) Государственного университета штата Огайо: http://accad.osu.edu/research/mocap/mocap_data.htm. Из представленных на странице мы используем один из следующих наборов анимаций в формате BVH: Female 1, Male 1, Male 2.

Целевой персонаж для ретаргетинга - девушка Izzy компании Reallusion. Персонаж доступен для свободного скачивания в Unity Asset Store  https://www.assetstore.unity3d.com/en/#!/content/50690 или на странице http://www.reallusion.com/iclone/game/ в другом формате.

Мы будем работать с программами Autodesk MotionBuilder 2015 для ретаргетинга и iClone 3DXchange5 - для вспомогательных целей.

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

Шаги

Внимание! Для настройки Т-позы какого-либо из скелетов необходимо снять галку [ ] Characterize у обоих персонажей.

  1. При импорте в MotionBuilder указанных анимаций (на примере Male2_*.bvh) можно увидеть следующую картину (см. рисунок). Исправить такую “перекошенность” анимаций можно, экспортировав их из iClone 3DXchange в bvh с флагом “Reset bone offset”.
  2. Вот что мы имеем в виду под “перекошенностью” в кости Hips при импорте анимаций Male2 в MotionBuilder:
  3. В iClone 3DXchange модель импортируется без данного дефекта:
  4. Перетаскиваем (драг-н-дроп) любой из Male2_*.bvh в iClone 3DXchange.
  5. Затем делаем драг-н-дроп всех необходимых Male2_*.bvh в Motion Library:
  6. Нажимаем кнопку Add All to Perform.
  7. Получаем все анимации в разделе Perform Editor.
  8. Экспортируем. File -> Export to Other 3D Format -> Export BVH...
  9. Выставляем галку [x] Reset Bone Offset и экспортируем.

    Note: “File Name” — это префикс. Поле не должно быть пустым.
  10. Анимации Male2 исправлены:
  11. Открываем в MotionBuilder Girl.fbx (персонаж доступен для свободного скачивания в Unity Asset Store https://www.assetstore.unity3d.com/en/#!/content/50690).
  12. Делаем File -> Motion File Import…, выбираем любой из исправленных *Male2_*.bvh, для определенности *Male2_A5_PickUpBox.bvh.
  13. Import Options следующие:

    Обратите внимание, что мы выбираем пункт Create (не Merge).
  14. Получаем такую сцену:


    Avatar — reference Girl,
    RL_G6_Hip — рутовая кость (Hips) Girl;
    BVH:reference — reference Male2,
    BVH:Hips — рутовая кость (Hips) Male2.
  15. Выберем в Asset Browser Templates / Characters / Character.
  16. И перетащим (драг-н-дроп) на скелет Girl. Появится tooltip Characterize, кликаем по нему.

    Для удобства перетаскивать можно на Hips-кость в Navigator / Scene, результат тот же:
  17. Получаем следующее сообщение:

    Нажимаем Ok.
  18. Еще одно сообщение:

    Нажимаем Close.
  19. Переименуем только что созданного персонажа (Character)...

    ...в GirlChar.
  20. Сделаем двойной щелчок по GirlChar.
  21. Убедимся, что в Character Controls выбран Character: GirlChar и открыта вкладка Definition.
  22. Далее — местами творческий, местами рутинный процесс маппинга костей. LMB (клик левой кнопкой мыши) по кости в окне просмотра:
  23. RMB (клик правой кнопкой мыши) по соответствующей кости в Character Controls / Definition, Assign Selected Bone:
  24. Для удобства скрываем отображение моделей:
  25. Хорошим признаком является соответствие названий костей Girl и внутреннего представления MotionBuilder:
  26. Не забываем про более мелкие кости, такие как Shoulder (Clavicle):
  27. Абсолютный минимум — это все кости из группы “Base (required)”.
  28. После этого нажимаем галку Characterize.
  29. Выбираем Biped:
  30. Переходим к Male2. Перетаскиваем Character на скелет Male2:

    Нажимаем Characterize.
  31. Выбираем Biped:
  32. Переименовываем только что созданный Character в MaleChar.
  33. У Male2 сам маппинг костей в порядке.
  34. Проблема в том, что поза, в которой мы его видим, считается Т-позой.
  35. Выключаем [ ] Characterize у MaleChar.
  36. Выбираем BVH:Hips, RMB -> Select Branches.
  37. RMB -> Zero -> Rotation.
  38. Получаем:
  39. Теперь это нужно привести к Т-позе.
  40. Крутим кости с выключенным [ ] Characterize у MaleChar, пока не получим Т-позу.
  41. Включаем [x] Characterize у MaleChar.
  42. Включаем [x] Characterize у GirlChar.
  43. У GirlChar в Character Settings выбираем Input Type: Character, [x] Active; Input Source: MaleChar.
  44. Проигрываем анимацию. Скелет Girl должен повторять анимацию Male2.
  45. Чтобы «запечь» полученную перенесенную на Girl анимацию в ее скелет, нажимаем Plot Character.
  46. Выбираем Skeleton.
  47. Настройки по умолчанию вполне подойдут.

    Более подробное описание этих параметров:
    http://mocappys.com/retargeting-animation-motionbuilder/#Plot_Properties_Window_Explained
  48. Проверяем, что plotting прошел успешно.

    С такими настройками персонаж GirlChar должен сохранить анимацию.
  49. Выберите Hips-кость Girl.
  50. File -> Motion File Export…

    Нужно убедиться, что выбран Content: Selected Models and Children.
  51. Получаем сообщение:

    Нажимаем Yes (три раза).
  52. Вот искомая RL_G6_Hair 1:
  53. Переименовываем эту кость, заменив пробел на подчеркивание (RL_G6_Hair_1).
  54. Еще раз делаем File -> Motion File Export, предварительно выбрав Hips-кость.
  55. На этот раз успешно экспортировали.
  56. Открываем полученный bvh в iClone 3DXchange. Проигрываем анимацию.
  57. Казалось бы, всё хорошо.
  58. Проверим, как полученные bvh открываются в MotionBuilder.
  59. Создаем в MotionBuilder пустой проект.
  60. File -> Motion File Import. Импортируем только что созданную bvh.
  61. Замечаем, что у скелета что-то не то с поворотом головы.
  62. Найденный workaround — экспортировать bvh -> bvh в iClone 3DXchange с флагом [x] Reset Bone Offset.
  63. Экспортируем.
  64. Переимпортируем исправленный bvh в MotionBuilder:

    Результат налицо.
  65. Таким образом, мы выполнили ретаргетинг одной анимации.
  66. Выполним ретаргетинг нескольких анимаций.
  67. Откроем нашу основную сцену с MaleChar и GirlChar.
  68. Выберем BVH:Hips.
  69. File -> Motion File Import.
  70. При импорте большого количества анимаций может возникнуть следующая ошибка:
  71. В таком случае делим исходный набор на несколько частей и импортируем их по отдельности. В нашем случае обходимся двумя партиями, в каждой примерно по 75 анимаций.
  72. После того, как закончили импортировать все необходимые анимации, выбираем GirlChar и включаем линковку на MaleChar:
  73. Двойным щелчком по тэйкам запускаем проигрывание соответствующих анимаций.
  74. Далее на GirlChar делаем Plot Character.
  75. Выбираем Skeleton:
  76. Важная галка — [x] Plot All Takes.
  77. Ретаргетинг можно оценить в том числе по поведению модели (скина).
  78. File -> Motion File Export, предварительно выбрав рутовую кость (Hips) Girl.
  79. Как вы уже догадались, полученные bvh необходимо переэкспортировать в bvh в iClone 3DXchange с включенным флагом [x] Reset Bone Offset.
  80. Это — победа.
  81. Для проверки импортируем исправленные bvh в пустую сцену MotionBuilder:
  82. Отсматриваем анимации (двойной щелчок по тэйкам).
  83. На исправленных bvh можно обучать нейросеть.

Документы, которые нам помогли

  1. http://mocappys.com/retargeting-animation-motionbuilder/#for_retargeting_Multiple_File (данный раздел в частности и весь документ в целом)
  2. http://www.3dbuzz.com/forum/threads/186992-Multiple-bvh-s-in-MotionBuilder
Написать