我正在使用assimp库来加载模型到我的ios应用程序。但对于一些大型模型文件,加载时间对于Mobil应用来说太长。无法通过使用导出器类导出模型与assimp
考虑转换处理时间。我决定在运行时间之前通过工具转换我的模型。
我的主要目标是将此场景写入文件。
我有非常基本的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到一个文件中。
任何意见或帮助表示赞赏。
有关BLOB文件的任何建议? –
@Amourreux:正如我在另一个问题中所说的,我不使用这个库;我只是阅读文档。但[blob结构](http://assimp.sourceforge.net/lib_html/structai_export_data_blob.html)为您提供了一个指向它在内存中写入的指针,所以'fwrite(blob-> data,1,blob-> size,文件)'应该工作,遍历'next'指针,直到你到达链的末尾。不过,我不知道为什么你想这样做,而不是直接导出到文件。 –
实际上,我只是想创建一个结构(aiScene)的二进制文件。在这种情况下,场景结构。通过这种方式,我跳加载时间短。也许这是我对结构的误解。我不想使用导出类,因为导出器像转换器一样工作。 非常感谢您的建议。 –