Нет, матрица не была бы более эффективной, потому что вам пришлось бы использовать матрицу 4х4, поэтому 16 операций с плавающей запятой.Это в основном из-за того, как вращение + перемещение сохраняются в матрице.
Если вы сохраните значения в форме SRT, вы получите 9 поплавков, так как компонент w вращательного кватерниона можно пересчитать из других при загрузке.
Более того, многие игровые движки этого не делают.поддерживает неравномерное масштабирование, поэтому вы можете уменьшить масштаб до 1 поплавка и получить до 8 поплавков на кости!
И это до сжатия: так как вы знаете, что кости не пройдут определенную точку (они ограничены по объему), тогда нет смысла присваивать точность тем диапазонам, которых он никогда не достигнет, так что вы можете закодировать эти числа с плавающей точкой, скажем, до 16 бит, так что вы получите 4 числа с плавающей точкой на кости.
Теперь, чтобы быть справедливым, я никогда не реализовывал эту последнюю часть со сжатием;это показалось мне немного экстремальным, и у меня не было времени.
Но переход с 64 байтов на кости до 32 байтов на кость экономит 50%!