查看: 4654|回复: 7

如何从.ive文件中提取 纹理image

[复制链接]

该用户从未签到

发表于 2009-6-3 15:26:31 | 显示全部楼层 |阅读模式
//node = osgDB::readNodeFile("D:\\share\\terrain\\terrain.ive");
        osg::Node *node = osgDB::readNodeFile("D:\\d.ive");

        TextureVisitor textureTV;
        node->accept( textureTV );

        std::map<std::string, osg::Image*> imageList = textureTV.getImages();
       
        std::map<std::string, osg::Image*>::iterator iter = imageList.begin();

        unsigned int cnt = 0;
        char* buffer = new char[2000];

        for( ;iter != imageList.end(); iter++ )
        {
                sprintf(buffer, "d:\\TextureImage%d.bmp", cnt++ );
                std::string str = iter->first;
                osg::Image* img = iter->second;
                unsigned int aaa = img->getTotalSizeInBytes();
                aaa = img->getPixelSizeInBits();
                osgDB::writeImageFile(*(iter->second), buffer);
        }

其它代码类似OSG编程入门指南  6.2.4  
读入.osg文件时可以正确取得,但是读入.ive文件就不行(获取图像不正确 有哪位知道原因吗?

该用户从未签到

发表于 2009-6-4 00:18:53 | 显示全部楼层
编写访问器,,进行遍历~~~~~

该用户从未签到

 楼主| 发表于 2009-6-4 09:20:48 | 显示全部楼层
已经编写的访问器,并且可以成功获取.osg文件中的纹理图片。但是加载.ive文件获取不了。
请高手指教    谢谢

该用户从未签到

发表于 2009-6-4 09:22:38 | 显示全部楼层
先使用osgDB另存为osg文件 再导出图片能行吗?

该用户从未签到

 楼主| 发表于 2009-6-4 09:31:39 | 显示全部楼层
>先使用osgDB另存为osg文件 再导出图片能行吗?
=>这是一个方法 但是这样做不怎么好 影响性能啊。
有哪位高手直接从.ive获取过纹理图片吗?   请赐教

该用户从未签到

发表于 2009-6-4 10:45:58 | 显示全部楼层
我不知道您的TextureVisitor的具体内容是什么,因此无法判断您用了什么方法来获取ive文件中的图片。一般来说,由于ive是压缩格式,图片数据已经保存为Image对象,因此我们可以从Texture对象的getImage()中得到图片数据并提取。

此外,您的问题应该和GIS/VPB没有直接关系,因此建议您今后把类似的问题发在主讨论区,不然我个人和其他一些朋友可能不会立即注意到,多谢理解。

该用户从未签到

发表于 2010-10-24 09:39:34 | 显示全部楼层
我就是学习的《OSG编程入门指南 》上纹理节点访问的例子 ,ive格式的提取不出纹理来啊,
osg::Texture2D对象——getImage()
跟ive生成时选择的压缩方式有关吗?
不压缩生成ive可以获取到纹理的
--compressed ……就不行了

该用户从未签到

发表于 2010-10-24 11:12:56 | 显示全部楼层
书中的例子不可能考虑到各个方面,只是提供一种可行的方案或者方法,您根据您的具体应用可以修改~~~这里需要您重写一下遍历器的纹理获取和存储方式即可~~~~~~·
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表