2012-02-02 52 views
1

我目前正在爲當前項目開發一個骨架動畫系統。我想大概瞭解它是如何工作的,但是在查看一些不同項目的來源時,我想知道爲什麼每個骨骼的縮放,旋轉和平移值都是單獨存儲的。你可以將它們全部存儲在一個矩陣中嗎?那不是更有效率,還是你需要更多的數學來獲得單獨的值使其效率更低?存儲骨骼動畫的SRT值

此外,雖然我在它,顯然有2種常見的方法來存儲值,這是通過矩陣,或使用向量和四元數。後者更頻繁地用於避免萬向節鎖。但是我的項目只有2個自由度。什麼是最有效的方式來存儲我的價值觀?

回答

1

不,矩陣不會更高效,因爲您必須使用4x4矩陣,所以需要16個浮點數。這主要是因爲旋轉+平移的方式存儲在矩陣中。

如果以SRT形式存儲值,則最終會生成9個浮點數,因爲旋轉四元數的w分量可以從其他負載重新計算。

此外,許多遊戲引擎不支持非均勻縮放,所以你可以縮小到1浮點的比例,最終每個骨骼8浮點數!

這就是壓縮前:因爲你知道,骨骼不會移動過去的某個點(它們是體積限制的),那麼有沒有點分配精確到那些將永遠無法達到的範圍,這樣你就可以編碼這些彩車下來說16位,所以你最終得到每個骨頭4浮游物。

現在公平起見,我從來沒有用壓縮實現最後一部分;這對我來說似乎有點極端,我沒有時間。

但是,從每個骨骼64個字節到每個骨骼32個字節,節省50%!