前一篇文章并没有解决好问题,原因是设置完后,效果不好,最后仔细研究后修改了解决办法:
只保留默认光源,但是默认光源的位置是在右上角,同时设置默认光源的环境光,这样即使这个面没有正对着默认光源也不是暗的,原来试过,设置的都是1.0,1.0,1.0,1.0,导致整个场景都亮的分不清模型边界了,还以为不是设置这个,原来是由于设置的太亮了,结果饶了个大圈子(额外加光源)。
关键代码如下:
<span style="white-space:pre"></span>
{
_viewer->getLight()->setPosition(osg::Vec4(1.0f, 1.0f, 0.0f, 0.0f));
_viewer->getLight()->setAmbient(osg::Vec4(0.6f, 0.6f, 0.6f, 1.0f));
_viewer->getLight()->setDiffuse(osg::Vec4(0.2f, 0.2f, 0.2f, 1.0f));
}