void FbxParser::LoadScene(const std::string & filePath, GameObjectPtr rootNode) { mFbxManager = FbxManager::Create(); auto ios = FbxIOSettings::Create(mFbxManager, IOSROOT); mFbxManager->SetIOSettings(ios); auto importer = FbxImporter::Create(mFbxManager, ""); auto pos = filePath.find_last_of("/"); mFbxFolder = (std::string::npos == pos) ? "" : filePath.substr(0, pos + 1); Utility::Printf("FbxFolder %s", mFbxFolder.c_str()); if (importer->Initialize(filePath.c_str(), -1, mFbxManager->GetIOSettings())) { mFbxScene = FbxScene::Create(mFbxManager, ""); bool result = importer->Import(mFbxScene); importer->Destroy(); if (result) { auto& globalSetting = mFbxScene->GetGlobalSettings(); FbxGeometryConverter geomConverter(mFbxManager); geomConverter.Triangulate(mFbxScene, true); auto fbxRootNode = mFbxScene->GetRootNode(); if (fbxRootNode) { for (int i = 0; i < fbxRootNode->GetChildCount(); ++i) { LoadNode(rootNode, fbxRootNode->GetChild(i)); } rootNode->FreshData(true); } } } else { auto status = importer->GetStatus(); auto str = status.GetErrorString(); Utility::Printf("FBX File Cant Load %s %s", filePath.c_str(), str); } }