2012-05-11 36 views
3

我已經能夠使用我自己的加載程序加載我編寫的collada的靜態幾何。但下一步是添加動畫。我遇到的問題是當一個instance_controller有多個骨架時會發生什麼。在我目前的模型中,我試圖加載被引用的每個節點都引用每個關節。例如具有多個骨架的collada動畫

<instance_controller url="#geom-Cylinder018-skin1"> 
<skeleton>#node-Bone024</skeleton> 
<skeleton>#node-Bone020</skeleton> 
<skeleton>#node-Bone016</skeleton> 
<skeleton>#node-Bone009</skeleton> 
<skeleton>#node-Bone005</skeleton> 
<skeleton>#node-Bone001</skeleton> 
<skeleton>#node-Bone025</skeleton> 

我不知道我對此應該怎麼做?目前我將它們全部鏈接到visual_scene中的正確節點。然而,模型中的每個節點都會完成上面所看到的內容!我使用AssimpView加載它只是爲了看到它實際渲染和工作正常。有人可以向我解釋我在上述情況下應該做什麼。由於

回答

6

COLLADA spec,它說,<skeleton><instance_controller>

表示,其中一個皮膚控制器是開始尋找它需要

所以聯合 節點,具有多instance_controller中的骨架指針就意味着指向的節點都應該被搜索到正確的節點。 <controller>本身告訴你哪些節點應該用於關節。這將有一個看起來是這樣的一個來源:

<library_controllers> 
    <controller id="skin"> 
    <skin source="#base_mesh"> 
     <source id="Joints"> 
     <Name_array count="4"> Root Spine1 Spine2 Head </Name_array> 
     ... 
     </source> 
     ... 
    </controller> 
</library_controllers> 

<node>,要應搜索與每個關節名的sid節點<skeleton>點。例如,對於上述的控制器,所述節點指向看起來像這樣:

<node id="Skeleton1" sid="Root"> 
    <node sid="Spine1"> 
    <node sid="Spine2"> 
     <node sid="Head"/> 
    </node> 
    </node> 
</node> 

在控制器每個接頭名稱對應於與該SID值的節點。如果你有多個骨架標籤,這意味着你需要爲給定的sid搜索更多的節點。

+0

非常感謝!我已經在其他幾個網站上發佈了這些內容,我會將它們鏈接到您的回覆。 –

+0

沒問題,祝你好運! – jterrace