主流的 骨骼蒙皮動畫 頂點變換方式的一個細節的思考

常見的骨骼蒙皮動畫的頂點變換大致思路是:

 

將綁定姿勢(比如說類人模型的T姿勢)下的頂點位置  變換到  對應骨骼的局部空間(用該骨骼的綁定姿勢空間下矩陣的逆)   再以該骨骼的所需時間點時對應的矩陣處理,重新變換到模型空間。

如果該頂點對應多個joint,將獲得的多個新座標加權平均。

 

以前一直覺得這個算法在對應多個joint時是錯的。

 

以前我的理解是:

以對應兩個joint爲例,某頂點P的模型空間座標爲Pmodel ,該點在joint0局部空間座標根據骨骼蒙皮動畫約定總是 P0, 在joint1局部空間座標根據骨骼蒙皮動畫約定總是P1。 joint0到模型空間的總矩陣M0,joint1到模型空間的總矩陣M­1。權重分別w­0, w1

假設綁定姿勢對應t0時間點

Pmodelt0 =  P0× M0t0 × w0  + P1 ×M­1t0 × w1             (1)

求Pmodelt1

 

常見算法的公式是

Pmodelt1 = Pmodelt0  × (M0t0)-1× M0t1 × w0 + Pmodelt0 × (M1t0)-1× M1t1 × w1                         (2)

如果把等式(1)帶入上式,就會得到一個不倫不類的東西。實際上應該是將等式(1)中的兩項分別做等式(2)中兩項的處理。所以我一直覺得常見算法這裏有問題。

 

今天又想了想,原來沒毛病。

還延續我的假設,但是如果將P0 設爲Pmodelt0  × (M0t0)-1,同理將P1設爲Pmodelt0 × (M1t0)-1,這樣等式(1)從數學上來說就退化成一個恆等式,如果不化簡等式(1),直接帶入等式(2),等式(2)就成立了。

從實際意義上來說,如果令在綁定姿勢時的模型空間頂點座標(加權平均後的) 和 頂點座標在綁定姿勢時在各個joint的局部座標變換到模型空間座標  相等。

(也就是實際上沒必要加權平均了,這時候該點從各個joint算出來的座標都相等)

也就是綁定姿勢時模型空間頂點座標 乘以 各個joint的逆矩陣,得到一個座標,令這個座標爲頂點座標在對應joint的局部座標。

這時就可以簡化頂點的計算方式,也就是常見算法。


這裏可以隨意假設局部座標,只要滿足假設的這套 局部座標  可以滿足等式1就行。

如果恰好假設以上那個假設,那就很方便計算。



 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章