查看: 1375|回复: 1

场景中的一个Node或group如何生成写入到一个osg文件中

[复制链接]
  • TA的每日心情
    开心
    2020-3-20 17:50
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2020-3-9 20:57:03 | 显示全部楼层 |阅读模式
    group里我加了很多个有偏移的模型,现在想把这个group导出到一个osg文件里
    这个代码如何做到
  • TA的每日心情
    开心
    2020-3-20 17:50
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2020-3-9 21:02:22 | 显示全部楼层
    本帖最后由 liyihongcug 于 2020-3-9 21:09 编辑

    //读取
    #include <osgDB/ReadFile>

    osg::ref_ptr<Node> node = osgDB::readNodeFile("cow.osg");
    osg::ref_ptr<Image> image = osgDB::readImageFile("lz.rgb");

    //保存
    #include <osgDB/WriteFile>
    osgDB::writeNodeFile(*node, "saved.osg");


    生成osg图像并保存
    #include "osgViewer/Viewer"

    #include "osgDB/WriteFile"

    #include "osgDB/ReadFile"

    #include "osgGA/TrackballManipulator"

    #include <osgViewer/GraphicsWindow>



    void main()

    {

        //////////////////////////////////////////////////////////////////////////

        //得到屏幕分辨率

        osg::GraphicsContext::WindowingSystemInterface* wsi = osg::GraphicsContext::getWindowingSystemInterface();

        unsigned int width, height;

        wsi->getScreenResolution(osg::GraphicsContext::ScreenIdentifier(0), width, height);

        ///////////////////////////////////////////////////////////////////////////

        osgViewer::Viewer v;

        v.setSceneData(osgDB::readNodeFile("axes.osg"));

        v.setCameraManipulator(new osgGA::TrackballManipulator());

        v.frame();

        osg::ref_ptr<osg::Image> image = new osg::Image;

        image->readPixels(0,0,width,height, GL_RGB,GL_UNSIGNED_BYTE);

        osgDB::writeImageFile(*image,"abc.jpg");

    }





    osgDB::writeNodeFile和osgDB::Registry::instance()->writeNode都能写出osg文件,他们有什么主要区别吗
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

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

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

    联系我们

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