Скелетная анимация, смешивающая верхнюю / нижнюю часть тела, глобальное или локальное пространство

Если модель состоит из двух кубов, верхний куб и нижний куб выровнены по оси z, а нижний куб является родителем верхнего куба.

Даем две скелетные анимации:

Анимация A: верхний куб остается неподвижным, нижний - вращается по часовой стрелке.

анимация B: верхний куб остается статичным, нижний - статичным

В файле скелетной анимации хранятся локальные преобразования.

то есть в анимации А нижний куб может иметь два ключевых кадра: кадр 0: поворот на 0 градусов, кадр 50: поворот на 360 градусов

затем смешайте А и В

A: upper_weight = 1 lower_weight = 0

B: верхний вес = 0 нижний вес = 1

какой правильный результат?

а. как верхний, так и нижний сохраняют статичность

б. верхний куб вращается против часовой стрелки

я думаю, что они должны сохранять статичность, это гармонично сочетается с глобальным пространством, потому что меньший вес А = 0, значит игнорировать более низкие трансформации?

но если я смешаю их в локальном пространстве, в соответствии с локальным вращением верхнего куба, он будет вращаться.

я гуглю и вижу людей, которые говорят, что лучше смешивать локальные преобразования, но я не думаю, что это дает правильный результат, какие-либо предложения?

1 ответ

Решение

я думаю, что они должны сохранять статичность, это гармонично сочетается с глобальным пространством, потому что более низкий вес А = 0, значит игнорировать более низкие преобразования?

Нет.

Вы сказали, что верхняя часть тела - это дитя нижней части тела. Это означает, что если нижняя часть тела имеет локальное вращение, это вращение влияет на "глобальное" вращение каждого потомка этой кости.

Следовательно, "глобальное" вращение верхней части тела А будет вращением на 360 градусов. Даже если вы замаскируете трансформацию нижней части тела, это все равно накопленное вращение, определенное в данных анимации А. Таким образом, если ваши данные анимации хранятся в виде "глобальных" преобразований, то верхняя часть тела А все равно будет иметь это вращение, даже если локальное преобразование является статическим.

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

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