OSG场景光照亮度不正常

1.在某些角度下,加上OSG自带的卡车模型,场景会变暗,其他角度下亮度正常.
2. 没有卡车模型时,场景亮度也正常.
请问这是什么原因?

我创建的太阳光代码(太阳位于天顶), createSunLight返回场景图的根节点:

osg::Group* createSunLight()
{
    osg::ref_ptr<osg::Light> sunLight = new osg::Light;
    sunLight->setLightNum(1);
    //const double sqrt3_3 = 0.577350269189626;
    sunLight->setPosition(osg::Vec4(0, 0, 1, 0.0f));
    sunLight->setAmbient(osg::Vec4(1.0, 1.0, 1.0, 1.0));
    sunLight->setDiffuse(osg::Vec4(1.0, 1.0, 1.0, 1.0));
    sunLight->setSpecular(osg::Vec4(1, 1, 1, 1));
    sunLight->setConstantAttenuation(0);
    sunLight->setLinearAttenuation(0);
    sunLight->setQuadraticAttenuation(0);

    osg::ref_ptr<osg::LightSource> lightSource1 = new LightSourceNoBox;
    lightSource1->setLocalStateSetModes(osg::StateAttribute::ON);
    lightSource1->setLight(sunLight.get());

    osg::ref_ptr<osg::Group> lightGroup(new osg::Group);
    lightGroup->addChild(lightSource1.get());

    osg::ref_ptr<osg::Group> root(new osg::Group);
    root->addChild(lightGroup.get());

    osg::ref_ptr<osg::StateSet> ss(root->getOrCreateStateSet());
    ss->setMode(GL_LIGHT0, osg::StateAttribute::ON);
    ss->setMode(GL_LIGHTING, osg::StateAttribute::ON | osg::StateAttribute::OVERRIDE);

    return root.release();
}

这是大地的材质属性代码:

    osg::ref_ptr<osg::Material> material = new osg::Material;
    material->setAmbient(osg::Material::FRONT_AND_BACK, m_color);
    material->setDiffuse(osg::Material::FRONT_AND_BACK, m_color);
    material->setShininess(osg::Material::FRONT_AND_BACK, 90.0);
    ret->getOrCreateStateSet()->setAttribute(material.get());

下面代码有显著影响,但是也不是期望的,我希望关闭OSG的缺省光源,使用自己的光源.

osgViewer->setLightingMode(osg::View::SKY_LIGHT);

图片说明

图片说明

图片说明

可以看到1,2图都有卡车,但是角度不同,一个明亮,一个黑暗. 1,3图角度相同,有卡车的场景是黑暗的.

各位大神有什么提示吗?

https://blog.csdn.net/qq_38378235/article/details/81058138