查看: 1611|回复: 8

写成ive文件时,模型的贴图丢失

[复制链接]

该用户从未签到

发表于 2010-11-25 18:53:07 | 显示全部楼层 |阅读模式
在读取牛cow.osg 这个模型,再添加操作器,按键盘键比如'z'写出ive模型,发现这个模型的贴图丢失了,
去掉osgUtil::Optimizer又恢复正常。
我想问下不去掉osgUtil::Optimizer,要正常写出模型要怎么办?

该用户从未签到

 楼主| 发表于 2010-11-25 18:55:36 | 显示全部楼层
我试了下通过纹理访问器设置纹理:tex2D->setDataVariance(osg::Object:YNAMIC);或者
tex2D->setUnRefImageDataAfterApply(false);
还是毫无反应,请问下还有什么方法吗? 非常感谢

该用户从未签到

发表于 2010-11-25 20:07:42 | 显示全部楼层
你说去掉osgUtil::Optimizer,是在写IVE的程序中呢,还是在显示IVE的程序中?
而且自动优化常常是不能尽如人意的。

该用户从未签到

发表于 2010-11-26 08:36:21 | 显示全部楼层
请给出您将cow.osg写出为cow.ive的实现代码,直接写出是不会有问题的

该用户从未签到

 楼主| 发表于 2010-11-26 08:37:00 | 显示全部楼层
显示ive的程序中,就是在加载的时候对总节点进行优化啊

该用户从未签到

 楼主| 发表于 2010-11-26 08:40:05 | 显示全部楼层
我要做的功能其实很简单,就是加载模型,然后按键盘用writeNodeFile()写出模型,但是写出时模型的贴图丢失了

该用户从未签到

 楼主| 发表于 2010-11-26 10:31:28 | 显示全部楼层
主程序中:
        osg::ref_ptr<osgViewer::Viewer> m_viewer;
        osg::ref_ptr<osg::Group> m_group;

        osg::ref_ptr<CityManipulator3D> mani3;

m_viewer = new osgViewer::Viewer;
        m_group = new osg::Group;

        mani3 = new CityManipulator3D();

        osg::ref_ptr<osg::Node> node = osgDB::readNodeFile("cow.osg");
        m_group->addChild(node.get());

        mani3->setCenter(osg::Vec3d(0.0, 0.0, 0.0));
        mani3->setDistance(500.0);

        mani3->setRoot(m_group.get());

        osgUtil::Optimizer optimizer;
        optimizer.optimize(m_group.get());

        m_viewer->setCameraManipulator(mani3.get());

        m_viewer->setSceneData(m_group.get());
        m_viewer->realize();
        m_viewer->run();

在操作器中:
                      if (ea.getKey() == 'z' || ea.getKey() == 'Z')
                {
                        osgDB::writeNodeFile(*(sceneRoot), "data\\root.ive");
                        return false;
                }

该用户从未签到

 楼主| 发表于 2010-11-26 10:46:07 | 显示全部楼层
在主程序中直接用writeNodeFile()也是对的,但是到操作器中写出就错了,
请问下还有什么方法能够在‘对场景模型进行变换’之后写出模型的方法嘛?

该用户从未签到

发表于 2010-11-26 15:18:05 | 显示全部楼层
我尝试写了一个类似的程序,在EventHandler中输出没有任何问题,也许您可以考虑自己其他的策略是否有错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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