gpt4 book ai didi

c# - 从根开始构建 Assimp 骨骼层次结构

转载 作者:行者123 更新时间:2023-12-03 22:15:28 26 4
gpt4 key购买 nike

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

tutorial我正在关注,根骨骼或“关节”包含它的子关节列表,以及它们的子关节列表等等。

Assimp 返回每个导入的 Mesh具有 Bone 列表的对象物体,包裹骨骼的 Name , OffsetMatrixVertexWeights ,但没有关于它的 child 或 parent 的骨头。
Scene ,其中包含 Mesh ,确实有列表总数nodes (其中一些是骨头)而且这些确实有 parentName但是通过递归比较检查构建层次结构很快就会变得困惑并且远不能正常工作。

我怎样才能隔离根骨骼,然后是 child ,然后是他们的 child ,等等?

最佳答案

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

寻找根骨 ,迭代每个 nodescene并检查它的名称是否在 bones 中找到mesh 中包含的列表, 那么如果 node有一个不在 bones 中的父名称list 那么它必须是根骨骼。

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

如果有更好的方法,我很想听听。

关于c# - 从根开始构建 Assimp 骨骼层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51225072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com