|
原因:因为要做3ds转换成flt模型的需求,就看了看OpenFlight的转换方式,里面的原理是:利用FltExportVisitor 写入模型的头,组,各个节点。 但是我发现在写入:attr文件时,就是 void writeATTRFile( int unit, const osg::Texture2D* texture ) const; 这个函数,
因为:代码段:
std::string name;
if (_fltOpt->getStripTextureFilePath())
name = osgDB::getSimpleFileName( texture->getImage()->getFileName() );
else
name = texture->getImage()->getFileName();
name += std::string( ".attr" );
因为这里的.attr文件和纹理是针对原来读入的Node节点的,所以这样attr和纹理就是原来的,
举例如:在E盘的 Plane.3ds文件和纹理,被转换到C: plane.flt 模型,但是纹理和attr却链接到E盘的路径上,觉得这样有些瑕疵,
应该在这里获取新的路径,把attr写入新的路径,并把纹理文件重写写入到新的路径里。
这是我的个人看法。请大家轻拍。我的测试版本是osg2.8.2,不知道新的修改过来了吗 |
|