查看: 1681|回复: 6

设置光线后模型的细节看不见了

[复制链接]

该用户从未签到

发表于 2012-1-4 10:59:39 | 显示全部楼层 |阅读模式
大家好!请教一个折腾了很久的问题,我把在3dMax中设计的模型导入OSG后,默认情况下:水平方向上的面都是黑色的,而手动添加光源后,有些模型细节却看不见了,看起来是白色的一片。请看图:
默认:

默认效果

默认效果

添加光源后:

设置光源后效果

设置光源后效果

设置光源的代码如下:
osg::StateSet* rootStateSet = sceneRoot->getOrCreateStateSet();

osg::ref_ptr<osg:ight> sunLight = new osg::Light;
sunLight->setAmbient(osg::Vec4(1.0f, 1.0f, 1.0f, 1.0f));
sunLight->setDiffuse(osg::Vec4(1.0f, 1.0f, 1.0f, 1.0f));
sunLight->setSpecular(osg::Vec4(1.0f, 1.0f, 0.75f, 1.0f));
sunLight->setConstantAttenuation(1.0f);
sunLight->setLinearAttenuation(0.0f);
sunLight->setQuadraticAttenuation(0.0f);
sunLight->setPosition(osg::Vec4(1667.0f, 1667.0f, 1000.0f, 1.0f));

rootStateSet->setAttributeAndModes(sunLight.get(), osg::StateAttribute::ON);
麻烦各位高手帮忙分析一下,谢谢了!

该用户从未签到

发表于 2012-1-4 12:34:36 | 显示全部楼层
应该是你的灯光位置不正确吧

该用户从未签到

发表于 2012-1-5 09:18:31 | 显示全部楼层
材质或光照设置的过亮

该用户从未签到

 楼主| 发表于 2012-1-5 10:35:45 | 显示全部楼层
fenma3422 发表于 2012-1-5 09:18
材质或光照设置的过亮

具体应该调哪个值呢?请指教~

该用户从未签到

发表于 2012-1-6 09:41:09 | 显示全部楼层
  1. sunLight->setAmbient(osg::Vec4(1.0f, 1.0f, 1.0f, 1.0f));
  2. sunLight->setDiffuse(osg::Vec4(1.0f, 1.0f, 1.0f, 1.0f));
  3. sunLight->setSpecular(osg::Vec4(1.0f, 1.0f, 0.75f, 1.0f));
复制代码
这也太亮了,请修改这里吧,环境光很低甚至可以不用,散射和镜面光也亮的要死

该用户从未签到

 楼主| 发表于 2012-1-9 12:30:56 | 显示全部楼层
array 发表于 2012-1-6 09:41
这也太亮了,请修改这里吧,环境光很低甚至可以不用,散射和镜面光也亮的要死

谢谢锐哥

该用户从未签到

发表于 2012-1-9 13:59:31 | 显示全部楼层
建议:导出模型时注意Light和Material的导出,程序中设置灯光时最好根据场景或模型的Sphere建立位置等信息,然后就是Array说的光线参数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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