Хранение значений SRT для скелетной анимации - PullRequest
1 голос
/ 02 февраля 2012

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

Кроме того, пока я занимаюсь этим, очевидно, есть 2 распространенных способа хранения значений, которыепо матрицам, или используя векторы и кватернионы.Последний используется чаще, чтобы избежать блокировки карданного подвеса.Однако у моего проекта есть только 2 степени свободы.Какой самый эффективный способ хранения моих ценностей?

1 Ответ

1 голос
/ 02 февраля 2012

Нет, матрица не была бы более эффективной, потому что вам пришлось бы использовать матрицу 4х4, поэтому 16 операций с плавающей запятой.Это в основном из-за того, как вращение + перемещение сохраняются в матрице.

Если вы сохраните значения в форме SRT, вы получите 9 поплавков, так как компонент w вращательного кватерниона можно пересчитать из других при загрузке.

Более того, многие игровые движки этого не делают.поддерживает неравномерное масштабирование, поэтому вы можете уменьшить масштаб до 1 поплавка и получить до 8 поплавков на кости!

И это до сжатия: так как вы знаете, что кости не пройдут определенную точку (они ограничены по объему), тогда нет смысла присваивать точность тем диапазонам, которых он никогда не достигнет, так что вы можете закодировать эти числа с плавающей точкой, скажем, до 16 бит, так что вы получите 4 числа с плавающей точкой на кости.

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

Но переход с 64 байтов на кости до 32 байтов на кость экономит 50%!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...