Решили: после перестройки рига клипы ПЕРЕГЕНЕРИРУЮТСЯ из рецептов, а маски ПЕРЕСОБИРАЮТСЯ из
иерархии — переносить пути (RigMigrate) в обоих случаях неверно. Аватар пересобирается всегда.
Логический id сустава в профиле — это имя кости, а не отдельная метка рядом с ним.
Почему: перестройка сдвинула позу покоя локтя в саму кость, поэтому хранимые в клипе абсолютные
углы стали неверны на эту величину — перенос путей сохранил бы связь и оставил кривые. Рецепты же
авторят в дельтах от покоя: перегенерация даёт ту же позу при других числах. Маски перечисляют всё
дерево целиком, а дерева больше нет — repoint переносит записи, но не убирает исчезнувшие и не
добавляет новые узлы. Отдельная логическая метка (elbow.R) при имени кости LowerArm_R — второй
владелец: переименуй узел, и они разойдутся без единой ошибки компиляции.
Грабли:
- Авторские поля профиля переживают пересборку только по ID. Сменился id — знак сгиба и лимит молча вернулись к нулю, а нулевой знак разгибает колено в обратную сторону. Лечится картой прежних id, живущей ровно до первой пересборки.
- Профиль варианта авторских полей не имел вовсе — они были только у базы, и после пересборки вариант остался с нулями. Перенесены явно.
- Клип без рецепта нужно вести отдельно: у копья свой
CombatIdle, и он чинится псевдонимами путей, а не перегенерацией. Human128остался со старой структурой и после перестройки потерял все анимации (489 путей в никуда): он самостоятельный риг, но кормится ОБЩИМИ клипами. Легаси, оставлен осознанно.
Владелец правды: BoneUnitClipRecipes.cs (содержание клипов), RigProfile.cs (замеры и id),
BoneRigLayoutTests (раскладка и живость путей).