閱讀 Advanced Animation
談到SkinWeights里面的TransformMatrix的時候一筆帶過,我始終不理解這個matrix有何用處,因為我感覺所有的頂點變換都被 Frame里面的階層體系做了,那么SkinWeights里面的matrix有什么用。
經過我一個晚上的思考,看了GameDev論壇的帖子,終于理解了。
首先講建模,建模建出來的是一些頂點,這些頂點組成了最原始的mesh。
最原始的mesh中有SkinWeights信息
SkinWeights
{
名字;
影響的頂點數;
頂點的索引;//就是影響了幾個頂點
頂點權重;//乘以Frame TransformMatrix的百分比
最后就是一個4*4的矩陣;
}
這個4*4矩陣是這時骨骼在 Mesh中的位置的逆矩陣,也就是相對于 local坐標系。
我說的明白點,手腕是個骨骼,手指尖是手腕影響的頂點。就是一個點,vetex,在自身坐標系下。
那么用 手指尖這個點 * SkinWeightsMatrix 得到的就是個位置,什么位置?就相當于把手腕連帶指尖移到坐標原點。當然,手腕在坐標原點的位置。
至于Frame中存儲的階層體系矩陣就是現在骨骼的位置。
找到現在手腕骨骼的矩陣, 手指尖Vertex* SkinWeighsMatrix*(肩膀的Matrix*胳膊肘的matrix*手腕的matrix),
那么手指尖自然就變換到了相應的位置。
我說得這么通俗,不知道傳達到思想沒?
參考鏈接
http://www.gamedev.net/community/forums/topic.asp?topic_id=479158
http://www.gamedev.net/community/forums/topic.asp?topic_id=392242
最后感慨下,GameDev的論壇果然是好地方