Assimp 从搅拌机加载电枢导致 AI_SCENE_FLAGS_INCOMPLETE

Assimp loading armature from blender causing AI_SCENE_FLAGS_INCOMPLETE

我正在研究使用 assimp 解析 .fbx 文件的骨骼动画系统。我希望完成的是能够加载仅包含骨架 (skeleton/rig) 的 .fbx 文件。然后我将该骨架加载到我自己的数据结构中,并将其作为网格的成员分配给它的引用(多个网格指向相同的骨架数据)。

加载包含单个骨架(从搅拌机导出)的 .fbx 文件后,assimp 似乎按预期加载了所有内容:

但是,AI_SCENE_FLAGS_INCOMPLETE 位似乎由于某种原因被翻转了,因为我发现自己在以下块中:

if (this->aiScene->mFlags & AI_SCENE_FLAGS_INCOMPLETE)
{
    std::string errorMessage = this->aiImporter.GetErrorString();
    std::cout << "ERROR::ASSIMP::" << errorMessage << "\n";
    std::cin.get();
    exit(EXIT_FAILURE);
}

...只有 this->aiImporter.GetErrorString() returns 一个空字符串,没有提供关于为什么会这样的反馈。

所以我的问题是...为什么 AI_SCENE_FLAGS_INCOMPLETE 位在仅加载电枢时会翻转为真?我应该忽略它并继续我的快乐之路,还是有什么值得担心的地方?

(是的,我已经加载了多个其他文件,其中包含没有骨架的网格和有骨架的网格,没有报告任何错误。似乎只有包含骨架的文件才有问题。)

编辑 (调试截图)

我相信你应该可以安全地忽略它。该标志只是在没有加载网格时设置(如果我理解正确的话,在您的情况下是故意的)。

您可以在此处查看设置该标志的条件:https://github.com/assimp/assimp/blob/7e5a0acc48efc54d7aa7900c36cd63db1fbeec9b/code/Blender/BlenderLoader.cpp#L411-L417