带有骨骼的 Assimp + COLLADA 模型 = 不正确的顶点位置

Posted

技术标签:

【中文标题】带有骨骼的 Assimp + COLLADA 模型 = 不正确的顶点位置【英文标题】:Assimp + COLLADA models with bones = incorrect vertex positions 【发布时间】:2014-07-25 10:24:36 【问题描述】:

我正在使用 Assimp 加载使用 Blender v2.7 创建和导出的 COLLADA 模型,但我注意到一个有趣的问题。每当我在“对象模式”而不是“编辑模式”中将(在 Blender 中)转换应用于网格时,生成的转换不会应用于我从 Assimp 导入器数据中读取的顶点,而是应用于 @987654322 的 mParent 矩阵@ 包含网格。

这不是真正的问题,因为我可以读取网格的顶点,然后将它们乘以 aiNodemParent 矩阵以获得正确位置的网格顶点。

每当我尝试对有骨骼的网格做同样的事情时,问题就会出现。我不知道为什么,但在这种情况下,我在“对象模式”中应用的转换既没有应用于我直接从网格中读取的顶点,也没有应用于aiNodemParent 矩阵。

有人可以向我解释如何使用 Assimp 和 COLLADA 模型获得具有骨骼的网格的顶点的正确位置吗?

【问题讨论】:

我认为这以某种方式涉及 OpenGL / GLSL?您谈到矩阵相乘和不正确的顶点位置,但没有给出相关的实现细节。在一遍又一遍地看到这个问题之后,我的预感是你没有正确处理整数顶点属性。 不是这样的。问题是我找不到 Assimp 的导入器在加载具有骨骼的网格时应该加载的对象转换。 【参考方案1】:

也许更新 collada importer/exporter 可以解决这个问题。

【讨论】:

以上是关于带有骨骼的 Assimp + COLLADA 模型 = 不正确的顶点位置的主要内容,如果未能解决你的问题,请参考以下文章

带有 Assimp 的 OpenGL (GLSL) 中的骨骼动画

DirectX 12 中 Assimp 的骨骼动画错误

从 Assimp 加载 Collada (dae) 模型显示不正确的法线

如何使用 assimp 在 C++ 中旋转蒙皮模型的骨骼?

在 Assimp 中获取骨骼动画的变换矩阵

使用 ASSIMP 的骨骼动画