bool SceneLoader::LoadScene(const std::string& file_name, Scene& scene, std::string& status) { Assimp::Importer importer; importer.SetPropertyInteger(AI_CONFIG_PP_SBP_REMOVE, aiPrimitiveType_POINT | aiPrimitiveType_LINE); const aiScene* assimp_scene = importer.ReadFile(file_name, aiProcess_Triangulate | aiProcess_JoinIdenticalVertices | aiProcess_FixInfacingNormals | aiProcess_FindDegenerates | aiProcess_ValidateDataStructure); // | aiProcess_ImproveCacheLocality // | aiProcess_RemoveRedundantMaterials // | aiProcess_FixInfacingNormals | aiProcess_FindDegenerates // | aiProcess_OptimizeGraph | aiProcess_OptimizeMeshes); status = std::string(importer.GetErrorString()); if (!status.empty() || NULL == assimp_scene) { return false; } status = "OK"; for (uint32_t i = 0; i < assimp_scene->mNumCameras; ++i) { ImportCamera(scene, assimp_scene->mCameras[i]); } for (uint32_t i = 0; i < assimp_scene->mNumLights; ++i) { ImportLight(scene, assimp_scene->mLights[i]); } std::cout << "mNumMaterials = " << assimp_scene->mNumMaterials << std::endl; for (uint32_t i = 0; i < assimp_scene->mNumMaterials; ++i) { ImportMaterial(scene, assimp_scene->mMaterials[i]); } std::cout << "mNumMeshes = " << assimp_scene->mNumMeshes << std::endl; for (uint32_t i = 0; i < assimp_scene->mNumMeshes; ++i) { ImportMesh(scene, assimp_scene->mMeshes[i]); } return true; }
UMaterial* T3DMaterialParser::ImportMaterialT3DFile(const FString &FileName) { FString MaterialT3D; if (FFileHelper::LoadFileToString(MaterialT3D, *FileName)) { ResetParser(MaterialT3D); MaterialT3D.Empty(); return ImportMaterial(); } return NULL; }