關於 骨骼動畫之理解蒙皮演算法

2021-07-25 14:56:07 字數 1364 閱讀 6235

把三維骨骼頂點聯絡至骨骼的位置的過程,稱為蒙皮。

蒙皮用的網格是通過頂點聯絡上骨骼,每個頂點可以繫結乙個或者多個骨骼(一般最多允許4根骨骼)。若某頂點只繫結至一根骨骼,它就會完全跟隨該骨骼移動。若繫結至多個骨骼,該頂點的位置就等於把它逐一繫結繫結個別骨骼,在通過權重加權平均。

能把網格頂點從原來位置(繫結姿勢)變換至骨骼的當前姿勢的矩陣稱為蒙皮矩陣。

蒙皮矩陣不是基變更變換(change of basis)。

基的變更:把物體從乙個座標系轉換到另外乙個座標系的過程,明顯,蒙皮矩陣並不是基的變更。

蒙皮矩陣把頂點變形至新位置,頂點在變換前後都在模型變換空間中。

通俗點一點理解就是:模型載入到記憶體中的位置是在模型空間中的座標(並不是其繫結的骨骼座標系下)在做骨骼動畫時,動的其實是骨骼,而繫結到該骨骼的頂點會跟隨骨骼做動畫,所以頂點相對於骨骼位置是不變的(在關節空間下是不變的,變的只是骨骼的位置),因此可以利用這個特性,求出蒙皮矩陣。

一.骨骼檔案

在skeleton檔案中,儲存著骨骼的繫結姿勢下的骨骼座標和骨骼動畫資料,應該會有以下類似資料:

在第一部分資料中,骨骼的繫結資料中的position/rotation/scale都是相對于父骨骼的座標,在讀取資料後,需要求出繫結姿勢的世界座標變換;第二部分表示骨骼之間的父子關係;第三部分是具體的骨骼動畫,其中的

position

是在父空間下,

rotation/scale

都是相對於節點自己的座標系下。

一.軟體蒙皮演算法流程

1. 應用動畫

2. 蒙皮應用

2.1 計算蒙皮矩陣:根據以上的計算公式:

new v = bind v * bindmatrixinverse * c bindmatrix

;附上ogre

的蒙皮矩陣演算法: 

以上矩陣就是ogre計算從繫結姿勢下轉換到當前姿勢下的變換矩

骨骼蒙皮動畫

一 基本原理 骨骼動畫的基本原理就是首先控制各個骨骼和關節,再使附在上面的蒙皮 mesh 與其相匹配。乙個角色由作為 的單一網格模型和按照一定層次組織起來的骨骼組成。骨骼層次描述了角色的結構 相鄰的骨骼通過關節連線,並且可以做出相對的運動。這裡要注意的是,骨骼間是具有 父子 關係的,比如,右前臂是右...

巧用帶有骨骼動畫的四種蒙皮技術

深入研究d3dx 14 帶有骨骼動畫的四種蒙皮技術 darren 基於shader的蒙皮和基於軟體的蒙皮技術 預備知識 1 模型的骨骼 骨骼動畫中的就是一些矩陣資料,這些矩陣儲存的是各個相關頂點的資訊,不同的頂點對應不同的矩陣就得到了骨骼,比如乙個立方體的頂部4個頂點的變化我們將其繫結骨骼是一組矩陣...

從Sprite3D理解3D骨骼動畫原理

為了能夠更好的使用 cocos 為我們提供的 sprite3d 我和大家分享一下 sprite3d 中關於骨骼動畫原理的部分,本文使用 cocos2d x 3.2 版本,這是 cocos 首次出現 3d骨骼動畫的版本,相對與本文寫出來時候最新的 3.5版本,由於沒有其他比如燈光等功能,3d目前引擎支...