Ретаргетинг: карта костей, Rest и проверка движения
Подготовка исходных данных, актуальные настройки импорта и диагностика результата.
Что требуется для общей анимации
Одинаковые имена костей не делают два скелета совместимыми. У них могут отличаться иерархия, исходная поза, ориентация осей, пропорции и пути анимационных треков. Ретаргетинг согласует эти данные; простое переименование не исправляет всё остальное.
Bone Rest — опорная трансформация кости. В Skeleton3D локальная Bone Pose включает положение относительно родительской кости: это не дополнительное смещение, автоматически умножаемое на Rest ещё раз. ResetBonePose() восстанавливает локальную позу из Rest. Не переносите формулы для относительной добавки к Rest без проверки.
Подготовьте исходный и целевой скелет
- Сначала импортируйте каждый персонаж отдельно и проверьте его собственные анимации. Ошибка скиннинга или экспорта до ретаргетинга не исправляется картой имён.
- Откройте расширенные настройки импорта модели и выберите Skeleton3D. В разделе Retarget назначьте
BoneMap. - Назначьте профиль. Для стандартного гуманоида используйте
SkeletonProfileHumanoid; для другой структуры нужен соответствующийSkeletonProfile. - Проверьте каждое существенное соответствие: кость профиля → кость исходного скелета. Например,
Hips → Pelvis. Автоматическая подсказка имён в редакторе требует проверки; особенно левой/правой стороны, позвоночника и родителей. - Настройте одинаковую целевую схему имён и пути скелета у моделей, которые будут использовать одну AnimationLibrary. Проверьте пути треков и уникальное имя скелета, если оно используется.
Сам по себе ресурс BoneMap не переименовывает и не переставляет кости живого Skeleton3D. Назначение Profile из C# не анализирует произвольный скелет автоматически. Возможны дублирующиеся назначения одной исходной кости — исправьте их до оценки движения.
Выберите способ согласования Rest
Текущий импортёр содержит настройку retarget/rest_fixer/retarget_method:
| Метод | Назначение и проверка |
|---|---|
| None | Не выполнять выбранное преобразование Rest этим методом; остальные включённые операции импорта проверяйте отдельно |
| Overwrite Axis | Согласовать опорные оси с профилем. Сравните деформацию и ориентацию после повторного импорта |
| Use Retarget Modifier | Использовать встроенную схему с модификатором и исходным скелетом. Она требует согласованных имён костей; включите переименование и проверьте предупреждения |
Это встроенные варианты импортёра. Выбор модификатора не гарантирует правильный результат для любого рига. Храните исходную модель и настройки; сравнивайте методы на одной анимации, меняя один параметр за раз.
Настройки, которые меняют результат
| Настройка | Что важно |
|---|---|
| Apply Node Transforms | Применение трансформаций дерева при подготовке скелета. Проверьте масштаб, поворот и соседние объекты, а не только вид персонажа в покое |
| Normalize Position Tracks | Нормализация позиционных треков относительно опорной высоты; MotionScale участвует в масштабе движения. Это не гарантия устранения скольжения стоп |
| Remove Tracks → Except Bone Transform | Может удалить анимацию аксессуаров и другие необходимые треки; не включайте без проверки состава клипа |
| Remove Tracks → Unimportant Positions | Убирает часть позиционных треков, сохраняя важные для профиля. Оцените пропорции и перенос движения |
| Remove Tracks → Unmapped Bones | Варианты None, Remove и Separate Library; это не просто флаг. Проверьте судьбу хвоста, волос и дополнительных костей |
| Fix Silhouette | Коррекция к позе профиля. Проверьте плечи, локти, колени и стопы; сильное различие силуэтов может потребовать правки исходника |
Внутренний ключ apply_node_transforms и некоторые подписи используют слово Node; это имя настройки импортёра, а не отдельный тип игровой системы. Значения и названия могут быть локализованы в интерфейсе.
Проверка после повторного импорта
Воспроизведите один и тот же клип на исходном и целевом персонаже. Проверьте покой, ходьбу, поворот и крайние положения конечностей. Отдельно проверьте высоту таза, движение корня, контакты стоп, аксессуары и треки вне скелета.
| Симптом | Проверка |
|---|---|
| Клип не двигает персонажа | Путь к Skeleton3D и кости в треке, AnimationLibrary, схема имён и переименование |
| Кости изгибаются не туда | Стороны тела, родители, Rest и оси профиля |
| Изменились пропорции | Позиционные треки, нормализация, трансформации дерева и масштаб |
| Пропали аксессуары или их движение | Удаление треков и несопоставленные кости |
| При модификаторе движение сломано | Переименование костей, предупреждения импорта и пути треков |
Общие действия импорта — в настройках модели. Правильная карта имён необходима, но качество деформации и движения подтверждается на конкретном персонаже.