EN RU
Ocutri

ocutri

Offshore software development and R&D for non-standard and science intensive tasks.

Contact Us

Ретаргетинг одной и нескольких анимаций в 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:
    'перекошенность' в кости Hips
  3. В iClone 3DXchange модель импортируется без данного дефекта:
    В iClone 3DXchange модель импортируется без данного дефекта
  4. Перетаскиваем (драг-н-дроп) любой из Male2_*.bvh в iClone 3DXchange.
  5. Затем делаем драг-н-дроп всех необходимых Male2_*.bvh в Motion Library:
    драг-н-дроп всех необходимых анимаций в Motion Library
  6. Нажимаем кнопку Add All to Perform.
    Add All to Perform
  7. Получаем все анимации в разделе Perform Editor.
    Получаем все анимации в разделе Perform Editor
  8. Экспортируем. File -> Export to Other 3D Format -> Export BVH...
  9. Выставляем галку [x] Reset Bone Offset и экспортируем.
    Выставляем галку [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 следующие:
    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.
    Asset Browser Templates / Characters / Character
  16. И перетащим (драг-н-дроп) на скелет Girl. Появится tooltip Characterize, кликаем по нему.
    tooltip Characterize
    Для удобства перетаскивать можно на Hips-кость в Navigator / Scene, результат тот же:
    Для удобства перетаскивать можно на Hips-кость в Navigator / Scene
  17. Получаем следующее сообщение:
    Получаем сообщение
    Нажимаем Ok.
  18. Еще одно сообщение:
    Еще одно сообщение
    Нажимаем Close.
  19. Переименуем только что созданного персонажа (Character)...
    Переименуем только что созданного персонажа
    ...в GirlChar.
    ...в GirlChar
  20. Сделаем двойной щелчок по GirlChar.
  21. Убедимся, что в Character Controls выбран Character: GirlChar и открыта вкладка Definition.
    в Character Controls выбран Character: GirlChar и открыта вкладка Definition
  22. Далее — местами творческий, местами рутинный процесс маппинга костей. LMB (клик левой кнопкой мыши) по кости в окне просмотра:
    процесс маппинга костей
  23. RMB (клик правой кнопкой мыши) по соответствующей кости в Character Controls / Definition, Assign Selected Bone:
    Character Controls / Definition, Assign Selected Bone
  24. Для удобства скрываем отображение моделей:
    скрываем отображение моделей
  25. Хорошим признаком является соответствие названий костей Girl и внутреннего представления MotionBuilder:
    соответствие названий костей персонажа
                        и внутреннего представления MotionBuilder
  26. Не забываем про более мелкие кости, такие как Shoulder (Clavicle):
    Не забываем про более мелкие кости, такие как Shoulder (Clavicle)
  27. Абсолютный минимум — это все кости из группы “Base (required)”.
    Абсолютный минимум — это все кости из группы 'Base (required)'
  28. После этого нажимаем галку Characterize.
    нажимаем галку Characterize
  29. Выбираем Biped:
    Выбираем Biped
  30. Переходим к Male2. Перетаскиваем Character на скелет Male2:
    Перетаскиваем Character на скелет
    Нажимаем Characterize.
  31. Выбираем Biped:
    Выбираем Biped
  32. Переименовываем только что созданный Character в MaleChar.
    Переименовываем только что созданный Character
  33. У Male2 сам маппинг костей в порядке.
    маппинг костей в порядке
  34. Проблема в том, что поза, в которой мы его видим, считается Т-позой.
    Проблема в том, что поза, в которой мы его видим, считается Т-позой
  35. Выключаем [ ] Characterize у MaleChar.
  36. Выбираем BVH:Hips, RMB -> Select Branches.
    BVH:Hips Select Branches
  37. RMB -> Zero -> Rotation.
    Zero -> Rotation
  38. Получаем:
    Получаем после Zero -> Rotation
  39. Теперь это нужно привести к Т-позе.
  40. Крутим кости с выключенным [ ] Characterize у MaleChar, пока не получим Т-позу.
  41. Включаем [x] Characterize у MaleChar.
  42. Включаем [x] Characterize у GirlChar.
  43. У GirlChar в Character Settings выбираем Input Type: Character, [x] Active; Input Source: MaleChar.
    выбираем Input Type: Character, [x] Active; Input Source: MaleChar
  44. Проигрываем анимацию. Скелет Girl должен повторять анимацию Male2.
    Проигрываем анимацию
  45. Чтобы «запечь» полученную перенесенную на Girl анимацию в ее скелет, нажимаем Plot Character.
    нажимаем Plot Character
  46. Выбираем Skeleton.
    Выбираем Skeleton
  47. Настройки по умолчанию вполне подойдут.
    Настройки по умолчанию
    Более подробное описание этих параметров:
    http://mocappys.com/retargeting-animation-motionbuilder/#Plot_Properties_Window_Explained
  48. Проверяем, что plotting прошел успешно.
    plotting прошел успешно
    С такими настройками персонаж GirlChar должен сохранить анимацию.
  49. Выберите Hips-кость Girl.
    Выберите Hips-кость
  50. File -> Motion File Export…
    File -> Motion File Export
    Нужно убедиться, что выбран Content: Selected Models and Children.
  51. Получаем сообщение:
    Получаем сообщение
    Нажимаем Yes (три раза).
  52. Вот искомая RL_G6_Hair 1:
    искомая RL_G6_Hair 1
  53. Переименовываем эту кость, заменив пробел на подчеркивание (RL_G6_Hair_1).
  54. Еще раз делаем File -> Motion File Export, предварительно выбрав Hips-кость.
  55. На этот раз успешно экспортировали.
  56. Открываем полученный bvh в iClone 3DXchange. Проигрываем анимацию.
    Открываем полученный 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:
    Переимпортируем исправленный bvh в MotionBuilder
    Результат налицо.
  65. Таким образом, мы выполнили ретаргетинг одной анимации.
  66. Выполним ретаргетинг нескольких анимаций.
  67. Откроем нашу основную сцену с MaleChar и GirlChar.
  68. Выберем BVH:Hips.
  69. File -> Motion File Import.
    File -> Motion File Import
  70. При импорте большого количества анимаций может возникнуть следующая ошибка:
    При импорте большого количества анимаций может возникнуть ошибка
  71. В таком случае делим исходный набор на несколько частей и импортируем их по отдельности. В нашем случае обходимся двумя партиями, в каждой примерно по 75 анимаций.
  72. После того, как закончили импортировать все необходимые анимации, выбираем GirlChar и включаем линковку на MaleChar:
    включаем линковку на MaleChar
  73. Двойным щелчком по тэйкам запускаем проигрывание соответствующих анимаций.
    Двойным щелчком по тэйкам запускаем проигрывание анимаций
  74. Далее на GirlChar делаем Plot Character.
    делаем Plot Character
  75. Выбираем Skeleton:
    Выбираем Skeleton
  76. Важная галка — [x] Plot All Takes.
    [x] Plot All Takes
  77. Ретаргетинг можно оценить в том числе по поведению модели (скина). Ретаргетинг можно оценить в том числе по поведению модели (скина)
  78. File -> Motion File Export, предварительно выбрав рутовую кость (Hips) Girl.
    File -> Motion File Export, предварительно выбрав рутовую кость (Hips) Girl
  79. Как вы уже догадались, полученные bvh необходимо переэкспортировать в bvh в iClone 3DXchange с включенным флагом [x] Reset Bone Offset.
    полученные bvh необходимо переэкспортировать в bvh в iClone 3DXchange с включенным флагом [x] Reset Bone Offset
  80. Это — победа.
    победа
  81. Для проверки импортируем исправленные bvh в пустую сцену MotionBuilder:
    импортируем исправленные 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



Появились вопросы? Задайте их нам:


Написать
info@ocutri.com
Или можете написать прямо здесь: