从const aiScene *转换为aiScene *,ASSIMP

时间:2015-11-27 03:51:09

标签: c++ assimp

我正在尝试将ASSIMP lib中的FindSceneCenter函数应用于从文件导入的aiScene*对象。

    // Read file via ASSIMP
    Assimp::Importer importer;
    const aiScene* scene = importer.ReadFile(path, aiProcess_Triangulate | aiProcess_FlipUVs);
    // Check for errors
    if(!scene || scene->mFlags == AI_SCENE_FLAGS_INCOMPLETE || !scene->mRootNode) // if is Not Zero
    {
        cout << "ERROR::ASSIMP:: " << importer.GetErrorString() << endl;
        return;
    }
    aiVector3D out, min, max;
    Assimp::FindSceneCenter(scene, out, min, max); // Problem here

问题是这个函数需要[aiScene *]对象作为参数,但导入的场景是[const aiScene *]并且是Assimp::Importer类的属性。有功能Assimp :: Importer :: GetOrphanedScene()可以从Importer返回导入的场景和释放所有权,但我不知道如何正确删除此场景(Docs说释放后它将成为我的头痛)。

1 个答案:

答案 0 :(得分:0)

如果函数没有修改对象,那么你应该纠正它以获取const指针(如果可以的话)。如果您无法修改该功能,那么在此处使用const_cast来编译代码是可以接受的。但是,由您来确保对象不会被更改,否则可能会发生不好的事情。