查看: 2457|回复: 4

请教light & Gouraud

[复制链接]

该用户从未签到

发表于 2008-10-29 06:35:15 | 显示全部楼层 |阅读模式
请教一下,用 viewer render a scene; data base 是 .flt 格式。
用以下去disable default light from viewer:
osg::ref_ptr<osg::StateSet> lightSS (root->getOrCreateStateSet());

lightSS->setMode(GL_NORMALIZE, osg::StateAttribute::ON);

        lightSS->setMode(GL_LIGHTING, osg::StateAttribute::OFF);
        lightSS->setMode(GL_LIGHT0, osg::StateAttribute::OFF);
        lightSS->setMode(GL_LIGHT1, osg::StateAttribute::OFF);

结果, 有的face   还是不变黑, 查 .flt:
不变的face: drawing---shade---Gouraud
变的face: drawing---shade---lit

怎样才能让light 作用于 设成Gouraud 的 face?

还有怎样贴图?

谢谢

screenshot

screenshot

该用户从未签到

发表于 2008-10-29 09:04:21 | 显示全部楼层
设成高洛德着色的面片相当于对每个顶点都指定了一个颜色值并平滑处理。不过从您的贴图来看,似乎是您的光照设置没有应用于每个节点?您是对场景根节点设置的Light属性吗?此外有可能有些子节点会自己应用一个新的光照设置,可以在设计flt时去掉,也可以强制继承根节点的渲染属性(osg::StateAttribute::INHERIT)。

贴图的方法应该在各种教程中都有介绍,例如《OSG快速入门指导》,NAVY的教程等等。基本的步骤是:
1、指定Geometry的纹理坐标;2、将纹理图片读入Image对象;3、将Image应用于一个Texture2D对象,并将这个Texture2D设置给Geometry所在的Geode节点

该用户从未签到

 楼主| 发表于 2008-10-29 09:41:04 | 显示全部楼层
谢谢 array.

“您是对场景根节点设置的Light属性吗?”


“也可以强制继承根节点的渲染属性(osg::StateAttribute::INHERIT)”
请问是改成:
        lightSS->setMode(GL_LIGHTING, osg::StateAttribute::OFF);
        lightSS->setMode(GL_LIGHTING, osg::StateAttribute::INHERIT);
        lightSS->setMode(GL_LIGHT0, osg::StateAttribute::OFF);
        lightSS->setMode(GL_LIGHT0, osg::StateAttribute::INHERIT);
        lightSS->setMode(GL_LIGHT1, osg::StateAttribute::OFF);
        lightSS->setMode(GL_LIGHT1, osg::StateAttribute::INHERIT);
测了改过的code, 结果跟以前一样
不知该不该用 viewer.setLightingMode(osgViewer::Viewer::NO_LIGHT);

谢谢回答贴图

该用户从未签到

发表于 2008-10-29 10:15:11 | 显示全部楼层
要实现继承应该改成:
lightSS->setMode(GL_LIGHTING, osg::StateAttribute::OFF|osg::StateAttribute::INHERIT);
viewer::setLightingMode似乎意义不大,可以试一下,不过应该不会取消掉OpenGL缺省光照

该用户从未签到

 楼主| 发表于 2008-10-30 02:20:36 | 显示全部楼层
谢谢 array, 鞠躬

还是不work. 我只好请另一组查 .flt, thanks again
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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