【问题标题】:Construct Assimp bone hierarchy, beginning at the root构建 Assimp 骨骼层次结构,从根开始
【发布时间】:2018-12-15 22:17:55
【问题描述】:

我正在使用 Assimp.net 将动画 .dae 文件导入我的 OpenTK 引擎并努力建立可用的层次骨骼结构。

在我关注的tutorial 中,根骨或“关节”包含其子关节的列表,以及其子关节的列表等。

Assimp 返回每个导入的Mesh 对象和Bone 对象列表,封装骨骼的NameOffsetMatrixVertexWeights,但没有关于它的子骨骼或父骨骼。

包含MeshScene 确实有一个总计nodes 的列表(其中一些是骨头),这些确实有一个parentName 值,但通过递归比较检查构建层次结构正在得到凌乱的快速,远不能正常工作。

如何分离根骨,然后是孩子,然后是他们的孩子等等?

【问题讨论】:

    标签: c# opengl opentk assimp


    【解决方案1】:

    原来每个节点都包含一个名为children 类型为NodeCollection 的子节点的集合,我从那里开发了以下解决方案。

    要找到根骨骼,遍历scene 中的每个node 并检查是否在bones 包含在mesh 中的列表中找到它的名称,然后如果node 的父名称不在 bones 列表中,那么它必须是根骨骼。

    要构建骨骼层次结构,从上面找到的“根骨骼”节点中获取 children,然后在 meshesbones 列表中找到匹配的名称,然后从那里提取所需的顶点权重和偏移矩阵。接下来,使用与上述相同的方法递归搜索这些孩子的孩子:迭代场景中的每个node,直到找到匹配的bone名称,然后从bones中的bone中提取数据列出,然后反向执行,直到没有孩子为止。

    如果有更好的方法,我很乐意听到。

    【讨论】:

      猜你喜欢
      • 2016-07-31
      • 1970-01-01
      • 2014-09-23
      • 2017-01-30
      • 2015-03-17
      • 2019-08-06
      • 2017-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多