Assimp mRootNode解析后的值无效

问题描述 投票:0回答:1

我使用通用方式通过assimp加载模型:

Error Mesh::loadFromFile(const std::filesystem::path& path) {
    Assimp::Importer importer;

    auto scene = importer.ReadFile(path.string(), aiProcess_Triangulate | aiProcess_FlipUVs | aiProcess_GenSmoothNormals | aiProcess_JoinIdenticalVertices);

    if (!scene)
        return { {std::string() + "Model importing error: " + importer.GetErrorString(), ErrorCode::General} };

    loadModel(scene); << // Breakpoint

    glRegisterData();

    return std::nullopt;
}

我正在从搅拌器中加载Monkey,并以FBX格式导出。在“ // Breakpoint”中,设置断点以查看场景内容。还有一些奇怪的值:

scene watch screenshot

我们可以看到,“场景”值是正确的:1个网格,0个其他对象,根节点不为null。

但是根节点具有意外值:

  • mParent必须为null(我想是,但是有一些值。
  • mNumChildren是一些随机数。 (必须为0或1)
  • mChildren是一个坏指针
  • mNumMeshes是一个随机数
  • mMeshes也是一个损坏的指针
  • 但有趣的是,该mName有效。

此奇怪的值会导致访问冲突或其他意外行为。

在docs中说,RootNode始终对任何文件格式有效,至少根节点具有0个子节点,并且自身可以包含网格。

注意:导入器处理场景的生存期。但是我仅在此功能范围内使用场景,因此它不是生命周期对象问题。

c++ opengl 3d assimp
1个回答
0
投票

Assimp已针对x86平台进行了编译,但是使用该lib为x64平台进行了配置。非常奇怪,没有任何错误消息,而只是意外行为。

© www.soinside.com 2019 - 2024. All rights reserved.