我正在使用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)的二進制文件。在這種情況下,場景結構。通過這種方式,我跳加載時間短。也許這是我對結構的誤解。我不想使用導出類,因爲導出器像轉換器一樣工作。 非常感謝您的建議。 –