bool SaveMeshGridToFileAssimp( std::string sFilename, aiMesh* pMesh, std::string sFormat) { // Create root node which indexes first mesh aiNode* root = new aiNode(); root->mNumMeshes = 1; root->mMeshes = new unsigned int[root->mNumMeshes]; root->mMeshes[0] = 0; root->mName = "root"; aiMaterial* material = new aiMaterial(); // Create scene to contain root node and mesh aiScene scene; scene.mRootNode = root; scene.mNumMeshes = 1; scene.mMeshes = new aiMesh*[scene.mNumMeshes]; scene.mMeshes[0] = pMesh; scene.mNumMaterials = 1; scene.mMaterials = new aiMaterial*[scene.mNumMaterials]; scene.mMaterials[0] = material; std::cout<<"[SaveMeshGridToFile] scene has vertex color: "<< scene.mMeshes[0]->HasVertexColors(0)<<std::endl; sFilename = sFilename + "." + sFormat; aiReturn res = aiExportScene(&scene, sFormat.c_str(), sFilename.c_str(), 0); if(res == 0) { std::cout << "[SaveMeshGridToFile] Mesh export success. File Name "<< sFilename <<std::endl; return true; } else { std::cerr << "[SaveMeshGridToFile] Mesh export fail." << std::endl; return false; } return true; }
static int assimp_export_scene(lua_State *L) { luaX_checktype(L, 1, "scene", LUA_TTABLE); const char *format = luaX_checkstring(L, 2, "format"); const char *filename = luaX_checkstring(L, 3, "filename"); struct aiScene *scene = _convert_scene(L, 1); if (aiExportScene(scene, format, filename, 0)) { aiReleaseImport(scene); lua_pushboolean(L, true); // [-0,+1,-] } else { aiReleaseImport(scene); lua_pushboolean(L, false); // [-0,+1,-] lua_pushstring(L, aiGetErrorString()); // [-0,+1,e] return 2; } return 1; }
void SaveMesh(std::string filename, aiMesh* mesh) { // Create root node which indexes first mesh aiNode* root = new aiNode(); root->mNumMeshes = 1; root->mMeshes = new unsigned int[root->mNumMeshes]; root->mMeshes[0] = 0; root->mName = "root"; aiMaterial* material = new aiMaterial(); // Create scene to contain root node and mesh aiScene scene; scene.mRootNode = root; scene.mNumMeshes = 1; scene.mMeshes = new aiMesh*[scene.mNumMeshes]; scene.mMeshes[0] = mesh; scene.mNumMaterials = 1; scene.mMaterials = new aiMaterial*[scene.mNumMaterials]; scene.mMaterials[0] = material; aiReturn res = aiExportScene(&scene, "ply", (filename + ".ply").c_str(), 0); std::cout << "Mesh export result: " << res << std::endl; }