osgShadow.LightSpacePerspectiveShadowMapVB
模块osgShadow.LightSpacePerspectiveShadowMapVB
模块是OpenSceneGraph中的实用工具,用于生成光空间透视阴影贴图。该模块基于LightSpacePerspectiveShadowMap技术,使用了可变阴影映射(VSM),提供了高效的动态阴影处理能力。
osgShadow.LightSpacePerspectiveShadowMapVB
模块主要由以下类组成:
osgShadow::ShadowMap
:实现阴影贴图的生成;osgShadow::MatrixdArrayCallback
:计算每一个等分矩阵;osgShadow::LightSpacePerspectiveShadowMapVB
:用于计算可变阴影映射和阴影矩阵;osgShadow::ShadowTechnique
:定义了阴影算法的接口类;osgShadow::ShadowedScene
:接受一个场景节点,生成带阴影的场景。将osgShadow.LightSpacePerspectiveShadowMapVB
模块添加到你的项目中,并使用以下代码创建阴影:
osg::ref_ptr<osgShadow::LightSpacePerspectiveShadowMapVB> lsm = new osgShadow::LightSpacePerspectiveShadowMapVB;
lsm->setLight(light);
lsm->setTextureSize(osg::Vec2s(2048, 2048));
lsm->setMinNearFarRatio(.1);
lsm->setNumSplits(2);
lsm->setSplitDistribution(osgShadow::LightSpacePerspectiveShadowMapVB::LOGARITHMIC);
其中,light
是你设置的光源,可以使用以下代码创建:
osg::ref_ptr<osg::Light> light = new osg::Light;
light->setDirection(osg::Vec3(-1.0f,-1.0f,-1.0f));
然后,将stage
和shadowedScene
添加到场景节点中:
osg::ref_ptr<osg::Group> root = new osg::Group;
root->addChild(stage);
root->addChild(shadowedScene);