liv*_*muk 4 c# opengl opentk assimp
我正在使用 Assimp.net 将动画 .dae 文件导入我的 OpenTK 引擎并努力建立可用的分层骨骼结构。
在我正在关注的教程中,根骨骼或“关节”包含它的子关节列表,以及它们的子关节列表等等。
Assimp 返回Mesh带有对象列表的每个导入对象Bone,封装了骨骼的Name,OffsetMatrix和VertexWeights,但没有关于它的子骨骼或父骨骼。
本Scene,其中包含了Mesh,确实有总名单nodes(其中一些是骨头),这些确实具有parentName价值,但通过递归比较检查建立等级越来越凌乱快速远未发挥作用。
我怎样才能隔离根骨骼,然后是孩子,然后是他们的孩子,等等?
原来每个节点都包含一个名为type的子节点的集合,从那里我开发了以下解决方案。childrenNodeCollection
找了根骨头,迭代每一个node中scene,检查它的名字在发现bones包含在列表中mesh,那么如果node有这不是在父母的名字bones列表,那么它必须是根骨头。
要构建骨骼层次结构,请children从上面找到的“根骨骼”节点中获取 ,然后在网格bones列表中找到匹配的名称,并从那里提取所需的顶点权重和偏移矩阵。接下来,递归通过这些儿童的儿童用同样的方法与上述搜索:遍历每个node场景直到匹配bone名字发现,然后从提取数据bone的内部bones列表,这样做的反向,直到有没有孩子离开了。
如果有更好的方法,我很想听听。
| 归档时间: |
|
| 查看次数: |
1200 次 |
| 最近记录: |