我已经能够使用我自己的装载器为我写的collada加载静态几何体.然而,下一步是添加动画.我遇到的问题是当instance_controller有多个骨架时会怎么做.在我当前的模型中,我试图加载每个被绑定的节点引用每个关节.例如
<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>
Run Code Online (Sandbox Code Playgroud)
我不确定我的想法是什么?目前,我将它们全部链接到visual_scene中的正确节点.但是,模型中的每个节点都会执行您上面看到的内容!我已经使用AssimpView加载它只是为了看到它实际呈现并且工作正常.任何人都可以向我解释在上述情况下我应该做些什么.谢谢
在COLLADA规范中,它说<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>
Run Code Online (Sandbox Code Playgroud)
在<node>该<skeleton>指向应搜索与一个节点sid每个关节的名字.例如,对于上面的控制器,指向的节点如下所示:
<node id="Skeleton1" sid="Root">
<node sid="Spine1">
<node sid="Spine2">
<node sid="Head"/>
</node>
</node>
</node>
Run Code Online (Sandbox Code Playgroud)
控制器中的每个联合名称对应于具有该sid值的节点.如果您有多个骨架标签,则只需要搜索给定sid的更多节点.
| 归档时间: |
|
| 查看次数: |
791 次 |
| 最近记录: |