简述
开发过程中遇到模型发黑。一般情况是光照和模型的法线设置不正确。
(1)osg中光照只会对有法线的模型起作用,而模型经过缩放后法线是不会变得,所以需要手动设置属性,让法线随着模型大小变化而变化。node->getOrCreateStateSet()->setMode(GL_RESCALE_NORMAL, osg::StateAttribute::ON);
(2)有些时候可能是光照的问题,有个笨办法是直接把模型的光照关闭
node->getOrCreateStateSet()->setMode(GL_LIGHTING, osg::StateAttribute::OFF| StateAttribute::OVERRIDE);
(3)如果模型始终是一面发黑一面正常,可能是只有平行光,需要设置个全局光。