我正在使用 assimp 库将模型加载到我的 ios 应用程序中。但是对于一些大型模型文件来说,加载时间对于移动应用程序来说太长了。
考虑转换处理时间。我决定在运行前通过工具转换我的模型。
我的主要目标是将这个场景写入文件。
我有非常基本的 C++ 经验。首先我尝试了 assimp::expoerter 类。
我在导出设置上遵守了 assimp 库。
但是当我尝试使用导出方法时,我收到了这个错误消息。
No matching member function for call to 'Export'
方法在那里,但我不能使用它。
scene = (aiScene*) aiImportFile([[openPanel filename] cStringUsingEncoding:[NSString defaultCStringEncoding]], aiPostProccesFlags | aiProcess_Triangulate | aiProcess_FlipUVs | aiProcess_PreTransformVertices | 0 );
if (scene) {
NSString *pPath = [openPanel filename];
pPath =[NSString stringWithFormat:@"%@%@", pPath, @"_new"];
NSLog(@"New file Path : %@", pPath);
Assimp::Exporter *exporter = new Assimp::Exporter();
exportFormatDesc = exporter->GetExportFormatDescription(0);
exporter->Export(scene, exportFormatDesc->id, pPath);
const aiExportDataBlob *blob = exporter->ExportToBlob(scene, exportFormatDesc->id);
size_t blobSize = blob->size;
aiString blobName = blob->name;
}
然后通过阅读Assimp::Exporter Class Reference给了我使用aiExportDataBlob创建文件的想法。
ExportToBlob 返回一个内存缓冲区 (blob) 的链接列表,每个都引用一个输出文件(在大多数情况下,当然只有一个输出文件,但是由于 Assimp 旨在支持多种文件格式,因此需要这种额外的复杂性)。
如果您打算使用内存中的数据,ExportToBlob 特别有用。
const aiExportDataBlob *blob = exporter->ExportToBlob(scene, exportFormatDesc->id);
size_t blobSize = blob->size;
aiString blobName = blob->name;
但我不知道将此blob写入文件。
任何建议或帮助表示赞赏。