1. 程式人生 > >dae格式檔案解析(頂點、蒙皮)

dae格式檔案解析(頂點、蒙皮)

dae格式比較開放,不同軟體匯出的格式可能有所不同,但原理應當是一樣的。以Blender匯出的為例。

首先看骨骼部分,隨便做了一個模型,先看節選的library_controller部分。

<library_controllers>
<controller id="boness_plane-skin" name="boness">
<skin source="#plane002-mesh">
<bind_shape_matrix>
</bind_shape_matrix>
<source id="boness_plane-skin-joints"></source>
<source id="boness_plane-skin-bind_poses"></source>
<source id="boness_plane-skin-weights"></source>
<joints>
<input semantic="JOINT" source="#boness_plane-skin-joints"/>
<input semantic="INV_BIND_MATRIX" source="#boness_plane-skin-bind_poses"/>
</joints>
<vertex_weights count="212">
<input semantic="JOINT" source="#boness_plane-skin-joints" offset="0"/>
<input semantic="WEIGHT" source="#boness_plane-skin-weights" offset="1"/>
<vcount></vcount>
<v></v></vertex_weights></skin></controller></library_controllers>




這個模型一共有212個頂點。

skin-joints指骨骼數,本模型一共有15骨骼,而skin-bind_poses指的是骨骼的矩陣,15*16=240個數據。

skin-weights指的是蒙皮陣列,一共有919個數據。

vcount下陣列長度為212,所有資料加起來為919,而v下是15個骨骼和919個蒙皮資料的對應。

vcount每一個數據是一個頂點對應的蒙皮資料數,所以每一個頂點對應的蒙皮權重和骨骼數就可以得出來了。