OpenSceneGraph正在向相反的方向投射两个阴影。如何避免呢?

时间:2019-01-15 16:28:14

标签: c++ opengl shadow light openscenegraph

我最近开始研究OpenSceneGraph中的光和阴影,我面临的一个问题是,当我将光指向对象时,阴影朝着光传播的方向投射,但也朝相反的方向投射。

enter image description here

我正在使用阴影映射osgShadow :: ShadowMap技术。以下是我正在使用的代码的相关部分:

osg::ref_ptr<osgShadow::ShadowedScene> root = new osgShadow::ShadowedScene;

// Create a light state set
osg::StateSet* state = root->getOrCreateStateSet();
state->setMode(GL_LIGHT2, osg::StateAttribute::ON);

osg::ref_ptr<osg::Light> light2 = new osg::Light();
light2->setAmbient(osg::Vec4(0.1, 0.1, 0.1, 0.5));
light2->setPosition(osg::Vec4(9.0, 5.0, -1.0, 1.0));
light2->setDirection(osg::Vec3(-1, 0, 0));
light2->setSpotCutoff(LIGHT_CUTOFF_ANGLE);
light2->setLightNum(2);
osg::ref_ptr<osg::LightSource> source2 = new osg::LightSource();
source2->setLight(light2.get());

osg::ref_ptr<osgShadow::ShadowMap> sm2 = new osgShadow::ShadowMap;
sm2->setLight(source2.get());
sm2->setTextureSize(osg::Vec2s(1024, 1024));
sm2->setTextureUnit(1);
root->setShadowTechnique(sm2.get());

root->addChild(source2.get());

// Start the viewer
osgViewer::Viewer viewer;
viewer.setSceneData(root.get());
return viewer.run();

如何避免出现第二个不良阴影?

0 个答案:

没有答案