【发布时间】:2020-07-17 03:23:24
【问题描述】:
我正在开发一个使用 assimp 解析 .fbx 文件的骨骼动画系统。我想要完成的是能够加载仅包含骨架(骨架/钻机)的 .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() 返回一个空字符串,没有提供任何反馈说明为什么会这样。
所以我的问题是......为什么只加载电枢时AI_SCENE_FLAGS_INCOMPLETE 位会被翻转为真?我应该直接忽略这一点并继续我的快乐方式,还是有一些担心的理由?
(是的,我已经加载了多个其他文件,这些文件包含没有骨架的网格和带有骨架的网格,但没有报告任何错误。似乎只有一个只包含骨架的文件才有问题。)
【问题讨论】:
-
if中有多个条件。你怎么知道AI_SCENE_FLAGS_INCOMPLETE是true的第二个? -
因为有一个 aiScene 并且有一个 RootNode,因为如果它们被评估为假,我将无法成功解析任何一个元素......加上在调试器中验证......我会编辑代码块,以便其他读者更清楚。感谢您指出这一点:)
-
对。对。调试信息会有所帮助。快照就可以了。
-
添加了来自调试器的屏幕截图。真的没什么可看的,只是进入块,
aiImporter.GetErrorString()返回一个空字符串,如所述。