【问题标题】:collada animation with multiple skeletons具有多个骨骼的 collada 动画
【发布时间】:2012-05-20 06:11:41
【问题描述】:

我已经能够使用我自己编写的 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>

我不确定我应该用这个做什么?目前,我将它们全部链接到 visual_scene 中的正确节点。但是,模型中的每个节点都会执行您在上面看到的操作!我已经使用 AssimpView 加载了它,只是为了看到它实际被渲染并且工作正常。任何人都可以向我解释在上述情况下我应该做什么。谢谢

【问题讨论】:

    标签: animation collada


    【解决方案1】:

    COLLADA spec 中,它表示&lt;skeleton&gt; 下面的&lt;instance_controller&gt;

    指示皮肤控制器开始搜索关节的位置 它需要的节点

    因此,instance_controller 中有多个骨架指针仅意味着应该搜索所有指向的节点以寻找正确的关节节点。 &lt;controller&gt; 本身会告诉您哪些节点应该用于关节。它将有一个看起来像这样的源:

    <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>
    

    &lt;skeleton&gt; 指向的&lt;node&gt; 应该搜索每个关节名称为sid 的节点。例如,对于上面的控制器,指向的节点如下所示:

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

    控制器中的每个关节名称对应于具有该 sid 值的节点。如果您有多个骨架标签,这仅意味着您需要为给定的 sid 搜索更多节点。

    【讨论】:

    • 非常感谢!我已在其他几个网站上发布了此内容,我会将它们链接到您的回复。
    猜你喜欢
    • 2011-04-02
    • 1970-01-01
    • 2012-10-17
    • 2011-10-09
    • 2014-10-16
    • 2014-09-23
    • 2017-05-05
    • 2013-11-03
    • 2021-06-09
    相关资源
    最近更新 更多