Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Перенацілення 3D-скелетів

Для спільного використання анімацій між кількома Скелетами

Godot має тривимірні доріжки позиції/обертання/масштабу (які в цьому документі називаються доріжками «Трансформування») із шляхами вузлів до кісток для анімації кісток скелета. Це означає, що ви не можете поділитися анімацією між кількома скелетами, використовуючи однакові назви кісток.

Godot дозволяє кожній кістці мати зв’язок «батько-нащадок» і може мати обертання та масштаб, а також положення, що означає, що кістки зі спільною назвою можуть мати різні значення трансформації.

Скелет зберігає значення трансформації, необхідні для пози за замовчуванням як Bone Rest. Якщо Bone Pose дорівнює Bone Rest, це означає, що Скелет знаходиться в стандартній позі.

Примітка

У Godot 3 та Godot 4 поведінка Bone Pose відрізняється. У Godot 3 Bone Pose залежить від Bone Rest, але в Godot 4 вона включає Bone Rest. Дивіться цю статтю для отримання додаткової інформації.

Моделі скелетів мають різні опори для кісток залежно від середовища, з якого їх було експортовано. 'Наприклад, кістки моделі glTF, виведені з Blender, мають «Edit Bone Orientation» як обертання Bone Rest. Однак існують скелетні моделі без будь-яких обертань Bone Rest, як-от модель glTF, виведена з Maya.

Щоб поділитися анімацією в Godot, необхідно зіставити залишки кісток, а також назви кісток, щоб у деяких випадках видалити небажані треки. Ви можете зробити це за допомогою імпортера сцен.

Варіанти ретаргетингу

Карта кісток

Коли ви виберете вузол Skeleton3D у розширеному меню імпорту сцени, праворуч з’явиться меню з розділом «Перенацілення». Розділ Retarget має єдину властивість bone_map.

../../_images/retargeting1.webp

Вибравши вузол Skeleton, спочатку налаштуйте новий BoneMap і class_skeletonprofile. У Godot є стиль під назвою class_skeletonprofilehumanoid для гуманоїдних моделей. У цьому посібнику припущено, що ви використовуєте class_skeletonprofilehumanoid.

Примітка

Якщо вам потрібен профіль, який відрізняється від class_skeletonprofilehumanoid, ви можете експортувати class_skeletonprofile із редактора, вибравши Skeleton3D і скориставшись меню Skeleton3D на панелі інструментів вікна 3D.

Коли ви використовуєте class_skeletonprofilehumanoid, автоматичне відображення буде виконано, коли встановлено class_skeletonprofile. Якщо автоматичне відображення не працює добре, ви можете відобразити кістки вручну.

../../_images/retargeting2.webp

Будь-які відсутні, повторювані або неправильні зіставлення стосунків «батько-дочірній» буде позначено пурпуровою/червоною кнопкою (залежно від налаштувань редактора). Він не блокує процес імпорту, але попереджає про те, що анімації можуть не надаватися належним чином.

Примітка

Автоматичне відображення використовує зіставлення шаблонів для назв кісток. Тому ми рекомендуємо використовувати загальні англійські назви для кісток.

Після того, як ви налаштуєте bone_map, у наведених нижче розділах доступні кілька параметрів.

../../_images/retargeting3.webp

Видалити треки

Якщо ви імпортуєте ресурси як AnimationLibrary, яка буде спільно використовуватися, ми рекомендуємо ввімкнути ці параметри. Однак, якщо ви імпортуєте ресурси як сцени, у деяких випадках їх слід вимкнути. Наприклад, якщо ви імпортуєте персонажа з анімованими аксесуарами, ці параметри можуть призвести до того, що аксесуари не анімуються.

Крім кісткової трансформації

Видаляє з анімації будь-які доріжки, окрім доріжки трансформації кістки.

Неважливі посади

Видаляє з анімацій треки позиції, окрім root_bone та scale_base_bone, визначених у class_skeletonprofile. У class_skeletonprofilehumanoid це означає, що потрібно видалити треки позиції, окрім "Root" та "Hips". Починаючи з Godot 4, анімації включають Bone Rest у значенні Transform. Якщо вимкнути цю опцію, анімація може непередбачувано змінити форму тіла.

Некартовані кістки

Видаляє з анімації невідповідні доріжки трансформації кісток.

Перейменування кісток

Перейменувати Bones

Перейменуйте нанесені кістки.

Унікальний вузол

Робить Skeleton унікальним вузлом із назвою, указаною в skeleton_name. Це дозволяє уніфікувати шляхи доріжок анімації незалежно від ієрархії сцени.

Фіксатор відпочинку

Еталонні пози, визначені в class_skeletonprofilehumanoid, мають такі правила:

  • Гуманоїд займає Т-позу

  • Гуманоїд стоїть обличчям до +Z у правосторонній системі координат Y-UP

  • Гуманоїд не повинен мати Transform as Node

  • Направляє вісь +Y від батьківського суглоба до дочірнього

  • Обертання +X згинає суглоб, як м’яз, що скорочується

Ці правила є зручними визначеннями для анімації змішування та інверсної кінематики (IK). Якщо ваша модель не відповідає цьому визначенню, вам потрібно виправити це за допомогою цих параметрів.

Застосуйте перетворення вузла

Якщо ресурс неправильно експортовано для спільного використання, імпортований скелет може мати трансформацію як вузол. Наприклад, glTF, експортований з Blender без виконання «Apply Transform», є одним із таких випадків. Схоже, що модель відповідає визначенню, але внутрішні трансформації відрізняються від визначення. Цей параметр виправляє такі моделі, застосовуючи Transforms під час імпорту.

Примітка

Якщо імпортована сцена містить об’єкти, відмінні від скелетів, цей параметр може мати негативний ефект.

Нормалізація доріжок позиції

Відстеження положення використовується здебільшого для руху моделі, але використання анімації руху між моделями різного зросту може спричинити появу ковзання через різницю в довжині кроку. Цей параметр нормалізує значення відстеження позиції на основі висоти scale_base_bone. Висота scale_base_bone зберігається в Skeleton як motion_scale, а нормалізовані значення доріжки позиції множаться на це значення під час відтворення. Якщо цей параметр вимкнено, треки позиції не нормалізуються, а motion_scale скелета завжди імпортується як 1.0.

З class_skeletonprofilehumanoid, scale_base_bone є "Hips", тому висота стегон використовується як motion_scale.

Перезаписати Axis

Уніфікує опори для кісток моделей, перезаписуючи їх відповідно до еталонних поз, визначених у class_skeletonprofile.

Примітка

Це найважливіша опція для обміну анімацією в Godot 4, але майте на увазі, що ця опція може призвести до жахливих результатів, якщо оригінальний зовнішній набір Bone Rest є важливим. Якщо ви хочете обмінюватися анімацією, зберігаючи оригінальний Bone Rest, подумайте про використання Realtime Retarget Module.

Виправити силует

Спроби зробити силует моделі відповідним еталонним позам, визначеним у class_skeletonprofile, наприклад T-Pose. Це не може виправити силуети, які надто відрізняються, і це може не спрацювати для виправлення рулону кісток.

З class_skeletonprofilehumanoid цю опцію не потрібно вмикати для моделей у Т-позі, але її слід увімкнути для моделей з А-позою. Однак у цьому випадку результати фіксованої стопи можуть бути поганими залежно від висоти каблука моделі, тому може знадобитися додати назви кісток class_skeletonprofile, які ви не хочете фіксувати, у масив filter ,як у прикладі нижче.

../../_images/retargeting4.webp

Крім того, для моделей із зігнутими колінами або стопами може знадобитися відрегулювати висоту scale_base_bone. Для цього ви можете використовувати опцію base_height_adjustment.