通過查看osgProxyNode.cpp源文件,我們找到了保存節點時會影響該類型節點保存方式的幾個Option String,如下:
配置參數及說明 |
|
配置字符串 |
說明 |
inlineExternalReferencesInIVEFile
|
嵌入外部引用項到文件中,採用該種模式時,已load進來的模型會直接替換掉其代理節點,這樣保存出來的模型將會是一個不再依賴已經load進來得外部引用項的大模型文件 |
noWriteExternalReferenceFiles |
generated external reference ive files 在保存過程中如果遇到外部引用節點,比如PageLOD/ProxyNode時,將其保存爲同目錄下,原文件名的ive格式模型,並將引用路徑設置爲新文件的路徑 |
useOriginalExternalReferences |
used original external reference files 使用原外部引用路徑,對其不作任何修改,原樣保存,需要注意的是,採用該種方式時導出模型後,需要將其原來的引用依賴模型按照之前的路徑一併打包 |
OutputTextureFiles |
export texture files during write 保存時導出紋理,有時候我們需要保存模型文件中的紋理到文件,比如IVE文件中嵌入的紋理,這時我們可以加入該配置字符串,保存文件時,osg就會幫我們把模型中的所有紋理圖片保存到相應目錄 |
auto opt = new osgDB::Options;
opt->setOptionString("useOriginalExternalReferences");
setIncludeExternalReferences(optionsString.find("inlineExternalReferencesInIVEFile")!=std::string::npos);
setWriteExternalReferenceFiles(optionsString.find("noWriteExternalReferenceFiles")==std::string::npos);
setUseOriginalExternalReferences(optionsString.find("useOriginalExternalReferences")!=std::string::npos);
setOutputTextureFiles(optionsString.find("OutputTextureFiles")!=std::string::npos);
// 調用帶配置參數保存函數,就可以靈活的根據我們設置的參數保存場景了
osgDB::writeNodeFile(*nodePtr,"xxx.osgt",opt);