查看: 814|回复: 5

如何关闭osgviewer的水平看图到俯视光线从暗到亮的渐变效果

[复制链接]

该用户从未签到

发表于 2015-11-4 11:01:48 | 显示全部楼层 |阅读模式
用qt编程,使用osgviewer(刚入门用这个显示简单)显示一个osg的文件,物体在水平方向显示很暗,当旋转到俯视的角度时很亮,过程逐渐渐变。现在我想不管哪个角度都一样很亮,能在不管哪个角度查看都很清楚。
调用  scene->getOrCreateStateSet()->setMode(GL_LIGHTING,osg::StateAttribute::OFF | osg::StateAttribute::OVERRIDE);  也不生效。
请问各位大侠有什么方法能解决这个问题?

下面是我的代码
    QWidget* addViewWidget(osgQt::GraphicsWindowQt* gw, osg::Node* scene)
    {
        osgViewer::View* view = new osgViewer::View;
        addView(view);

        osg::Camera* camera = view->getCamera();
        camera->setGraphicsContext(gw);

        const osg::GraphicsContext::Traits* traits = gw->getTraits();

        camera->setClearColor(osg::Vec4(0.2, 0.2, 0.6, 1.0));
        camera->setViewport(new osg::Viewport(0, 0, traits->width, traits->height));
        camera->setProjectionMatrixAsPerspective(30.0f, static_cast<double>(traits->width) / static_cast<double>(traits->height), 1.0f, 10000.0f);


        scene->getOrCreateStateSet()->setMode(GL_LIGHTING,osg::StateAttribute::OFF | osg::StateAttribute::OVERRIDE);
        view->setSceneData(scene);
        view->addEventHandler(new osgViewer::StatsHandler);
        view->setCameraManipulator(new osgGA::MultiTouchTrackballManipulator);
        gw->setTouchEventsEnabled(true);
        return gw->getGLWidget();
    }

该用户从未签到

发表于 2015-11-4 14:16:54 | 显示全部楼层
看了楼主的代码,和楼主的思路一样,楼主现在解决了吗?或者楼主调试下,毕竟场景简单,看看在绘制时候光照到底关闭没有

该用户从未签到

发表于 2015-11-4 21:05:41 | 显示全部楼层
默认是视点光源,也就是说光源跟着视点动,直接把视点光源关掉,手动添加几个固定光源就行了。

该用户从未签到

 楼主| 发表于 2015-11-5 15:21:25 | 显示全部楼层
我搞定了,就是在代码里面加上:

camera->getOrCreateStateSet()->setMode(GL_LIGHTING,osg::StateAttribute::OFF | osg::StateAttribute::OVERRIDE);

之前用的 node->getOrCreateStateSet()->setMode(GL_LIGHTING,osg::StateAttribute::OFF | osg::StateAttribute::OVERRIDE);  不好使

该用户从未签到

发表于 2015-11-7 21:30:19 | 显示全部楼层
你这样做只是关闭了当前的默认光照。其实我同意smash

该用户从未签到

发表于 2015-11-26 23:10:29 | 显示全部楼层
zzugis 发表于 2015-11-4 14:16
看了楼主的代码,和楼主的思路一样,楼主现在解决了吗?或者楼主调试下,毕竟场景简单,看看在绘制时候光照 ...

不好意思,已经解决了,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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