2013-02-23 42 views
4

什麼是骨重量,骨骼影響,關節,偏移和局部矩陣?互聯網上沒有特定的文章能夠很好地解釋邏輯。我仍然不知道每個骨骼是否有與其他模型組合在一起的不同模型。或者如何處理這些矩陣,如何設置骨骼,組合和皮膚...我會很高興,如果你可以分享任何文章或關於opengl骨骼動畫的知識。OpenGL中骨骼動畫背後的邏輯

回答

5

其中一些術語在不同實現之間會有所不同。與其試圖提供具體的定義,我寧願對皮膚的工作方式給出一個非常粗略的概述,因爲我認爲這就是你所要求的。

此外,這是不是特別GL具體...

主要的想法是,你把多邊形模型,並將其連接到一個骨架。模型中的每個頂點都分配給一個或多個骨骼。在這種情況下,骨骼實際上只是一種轉換,儘管它們通常被視爲骨架,因爲骨骼通常是在層次結構中創作的,並且自然會類似於實際的骨架。

A「聯合」可能僅僅意味着「骨」,或在其他情況下可能實際上是指兩塊骨頭的連接方式和關節...

當骨骼是分層次的,他們將有「本地」這些變換描述了他們相對於父母的變換。在運行時,轉換通常會被連接起來,以至於它們都在同一個空間中。

使用權重完成頂點向骨骼的分配。權重將通常爲加起來爲每個頂點1。重量可以通過靠近骨骼自動分配,但通常由藝術家手動調整。通常它們使用藝術包中的工具「繪製」到3D模型上。

在運行時,頂點由它們受其影響的每個骨骼轉換,最終的頂點位置是這些不同轉換結果的加權平均值。如何計算加權平均值可能會有所不同,但這是一般方法。

但是,對於運行時應用程序,通常很重要的是將影響頂點的不同骨骼的數量保持爲最小,並且可能存在相對較小的上限; 4,也許。因此,不是爲每個頂點提供骨骼中每個骨骼的權重,而是通常提供固定數量的聯合指數以及相應的權重。

請注意,您在剝皮時通常不會對紋理座標執行任何操作,但幾乎可以肯定必須重新計算法線和可能的切線向量。同樣,如何做到這一點可以因實現而有所不同。

+0

感謝您的回答,抱歉我遲到的回覆。我有一個關於這些局部和絕對變換矩陣的問題,它們與我們在opengl中自定義生成的一樣,就像在這個鏈接中一樣:http://www.songho.ca/opengl/gl_transform.html(OpenGL變換矩陣)? – deniz 2013-02-24 10:39:43