Получение анимации для правильного рендеринга с помощью Three.js ObjectLoader

Я пытаюсь визуализировать анимацию в Three.js, используя меш от MakeHuman. Сетка загружается правильно, но при запуске анимации она сильно искажается. Если я добавлю SkeletonHelper, то увижу, что скелет выполняет анимацию правильно, однако его ориентация отличается от сетки.

Когда сетка загружается, она обращена лицевой стороной вниз, а скелет - правой стороной вверх. Если я поверну сетку в Three.js так, чтобы она была правой стороной вверх, то скелет переместился вверх ногами по какой-то причине. Я не уверен, может ли это способствовать искажению сетки.

Вот шаги, которые я предпринимаю:

  1. Сделайте меш в MakeHuman.
  2. Экспорт в виде файла Collada *.dae.
  3. Импорт в Blender.
  4. Перенацелитесь в mocap-файл BVH с помощью дополнения MakeWalk Blender.
    • Если я сейчас играю анимацию в Blender, она выглядит идеально.
  5. Поскольку несколько сайтов говорят, что это решило их проблемы, я очищаю любое местоположение, вращение или масштаб на сетке и арматуре.
  6. Экспортируйте всю сцену, используя экспортер Three.js для Blender.
  7. Загрузите сцену и встроенную анимацию, используя ObjectLoader.

Любая помощь приветствуется. Благодарю.

Обновление - я смог (кратко) заставить модель в основном анимироваться, как ожидалось (с небольшим искажением), и скелет и сетка оба указывали в одном направлении, но теперь я не могу воспроизвести свой успех. Я совершенно уверен, что (в Blender) либо очистка, либо применение поворота, местоположения и масштаба - вот что имело значение, но когда я пытаюсь снова выполнить шаги, я больше не могу этого сделать. Скелет и сетка снова не синхронизированы. Это должно быть проблемой, верно?

Я думаю, мне нужно применить вращение и местоположение, но очистить шкалу. Однако, когда я пытаюсь применить местоположение, масштаб больше не кажется "очищенным". Думаю, я не понимаю, как работает Blender. Как правильно очистить или применить Rot,Loc,Scale? Применить / очистить до или после ретаргетинга на BVH? Возможно оба? Нужно ли делать это на каждой сетке и / или кости?

1 ответ

Решение

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

Как только вы импортируете модель в Blender (и все сетки выбраны по умолчанию), очистите поворот, расположение и масштаб. Затем, если модель направлена ​​не туда, нажмите "n", чтобы отобразить панель " Преобразование", выберите корневой узел сетки в Outliner и поверните его, если необходимо. Затем нажмите Ctrl+A, чтобы применить вращение.

Таким образом, в основном, вместо сохранения поворота, установленного в процессе импорта, очистите его и примените свой собственный.

Другие вопросы по тегам