文件读取
//方法一:
osg::Node* Node=osgDB::readNodeFile(文件路径, new osgDB::Options("选项内容"));
//方法二:
osg::ref_ptr<osgDB::Options> options = new osgDB::Options("选项内容");
osg::Node* pNode=osgDB::readNodeFile(文件路径, options));
文件写入
//参数1:需要存入的模型,参数2:文件保存的路径,参数3:options
osgDB::writeNodeFile(node, path, new osgDB::Options("选项内容"));
模型太大时,加快读取时间
//关闭模型优化绘制
osg::ref_ptr<osgDB::Options> options = new osgDB::Options(std::string("noTriStripPolygons"));
osgb文件过大,对纹理进行压缩
//压缩纹理
osg::ref_ptr<osgDB:::Options> options = new osgDB::Options;
options->setOptionString( "Compressor=zlib" );
osg中读取obj文件时,obj文件会旋转90°
//设置文件读取不旋转
osg::ref_ptr<osgDB::Options> options = new osgDB::Options("noRotation");
在纹理文件不存在(或者读取失败)时,生成一张空的纹理对象osg::Image,并记录下纹理文件对应的路径(选项只对osg2,osgb,osgt,osgx起作用,)
osg::ref_ptr<osgDB::Options> options = new osgDB::Options("ForceReadingImage");
在读取模型中含有dds格式纹理的时候,需要用到这个选项。如在命令行中使用osgviewer aaa.osg -O dds_flip
osg::ref_ptr<osgDB::Options> options = new osgDB::Options("dds_flip"));
used original external reference files 使用原外部引用路径,对其不作任何修改,原样保存,需要注意的是,采用该种方式时导出模型后,需要将其原来的引用依赖模型按照之前的路径一并打包
osg::ref_ptr<osgDB:::Options> options = new osgDB::Options;
options->setOptionString("useOriginalExternalReferences");
嵌入外部引用项到文件中,采用该种模式时,已load进来的模型会直接替换掉其代理节点,这样保存出来的模型将会是一个不再依赖已经load进来得外部引用项的大模型文件
osg::ref_ptr<osgDB:::Options> options = new osgDB::Options;
options->setOptionString("inlineExternalReferencesInIVEFile");
generated external reference ive files在保存过程中如果遇到外部引用节点,比如PageLOD/ProxyNode时,将其保存为同目录下,原文件名的ive格式模型,并将引用路径设置为新文件的路径
osg::ref_ptr<osgDB:::Options> options = new osgDB::Options;
options->setOptionString("noWriteExternalReferenceFiles");
export texture files during write 保存时导出纹理,有时候我们需要保存模型文件中的纹理到文件,比如IVE文件中嵌入的纹理,这时我们可以加入该配置字符串,保存文件时,osg就会帮我们把模型中的所有纹理图片保存到相应目录
osg::ref_ptr<osgDB:::Options> options = new osgDB::Options;
options->setOptionString("OutputTextureFiles");
在写ive模型文件的时候只写纹理文件对应的路径,而不是默认的将纹理数据写入ive文件
osgDB::writeNodeFile(node, path, new osgDB::Options("noTexturesInIVEFile"));
osgb转osg时会保留小数位数,不会显示所有的小数位,读取osgb文件时获取的精度会更为准确。写出osg文件时指定精度(double)
osgDB::writeNodeFile(node, path, new osgDB::Options("precision 12"));
写出文件时不丢失光照
osgDB::writeNodeFile(node, path, new osgDB::Options("IncludingHint");
写出带纹理osgb时设置压缩,节省空间
osgDB::writeNodeFile(node, path, new osgDB::Options("WriteImageHint=IncludeFile");
转载原文
转载原文
转载原文
WriteImageHint=IncludeFile