我迷失了骨骼動畫。我已經閱讀了一些關於這方面的內容,但他們仍然是我不明白的一件事。這是我的結論。 我看到3種方式的動畫網格帶骨頭:Directx 11骨骼動畫
我有一個包含頂點,頂點緩衝,索引緩衝和紋理着色器的一類網格,並變換矩陣。我可以使用每個骨骼的類,增加重量,並且我可以很容易地爲模型製作動畫。但是這意味着使用太多的內存,因爲一些事情只有一次纔會被使用。
使用頂點着色器。在輸入頂點參數中添加權重和骨骼索引,並使用矩陣數組作爲全局變量,因此在着色器中我只需使用骨骼矩陣。這個解決方案對我來說似乎更有效率,但我記得在directx 11教程(來自Rastertek)時他說HLSL應該很快,因爲它使用了很多時間,我認爲這會太重。無論如何,這是我會嘗試的解決方案,至少要知道這是否有效。
對每個骨骼使用矩陣和逆矩陣。就閱讀而言,這是可以採取的方式。但這是我不瞭解的方式。爲什麼在這裏使用矩陣逆,以及矩陣如何與頂點「連接」。我的意思是如果我移動右手骨骼的矩陣,在代碼中說只有右手頂點將被使用?
所以我的問題是:
- 是第二種方法是否可行?或者對於具有一些網格和動畫的GPU來說它會太多?
- 有人可以解釋矩陣鏈接到頂點的方式,爲什麼矩陣逆使用?或者聯繫我一下。
我希望你明白我的意思,因爲我不確定我是否解釋得很好。請原諒我的英語,我做得儘可能好。提前致謝。
對於第二種方式,我的意思是使用頂點着色器,而不是像素着色器,編輯後。但我想我明白了這個問題。當我想渲染一個靜態模型時,我只使用我的着色器類中的渲染函數,但如果我使用動畫模型,我將不得不使用這個函數爲每個骨骼與世界矩陣乘以骨骼變換作爲世界矩陣參數對嗎?順便說一句,謝謝你的解釋。 – Aulaulz
不,您只發出一個繪圖調用,提供所有必要的信息,包括矩陣和頂點權重。 –
然後,我仍然不知道着色器如何知道前臂的像素將與前臂矩陣相關聯。 – Aulaulz