osgShadow.ShadowSettings
是一个用于控制阴影的类,它可以被应用到场景的节点中,以产生逼真的阴影效果。
首先,需要创建一个 osgShadow.ShadowSettings
对象,并对其进行配置。例如,可以设置阴影的分辨率、阴影的柔和度、阴影的类型等等。配置完成后,将 osgShadow.ShadowSettings
对象应用到需要产生阴影的节点中即可。
下面展示一个简单的样例:
//创建osgShadow.ShadowSettings对象
osg::observer_ptr<osgShadow::ShadowSettings> settings = new osgShadow::ShadowSettings;
//设置阴影分辨率
settings->setTextureSize(osg::Vec2s(2048, 2048));
//设置阴影柔和度
settings->setSoftnessWidth(0.005f);
//设置阴影种类为阴影映射
settings->setShadowMapProjectionHint(osgShadow::ShadowSettings::ShadowMapProjectionHint::PERSPECTIVE_SHADOW_MAP);
//将ShadowSettings应用于需要产生阴影的节点
osg::ref_ptr<osgShadow::ShadowedScene> shadow_scene = new osgShadow::ShadowedScene;
shadow_scene->setShadowSettings(settings);
shadow_scene->addChild(model_node);
osgShadow.ShadowSettings
类osgShadow.ShadowSettings
是一个用于控制阴影的类。
ShadowSettings()
创建一个 osgShadow.ShadowSettings
对象。
float getSoftness()
返回阴影柔和度。
void setSoftness(float softness)
设置阴影柔和度,范围为 [0,1]
。
float getSoftnessWidth()
返回阴影柔和度的宽度。
void setSoftnessWidth(float softnessWidth)
设置阴影柔和度的宽度。
osg::Vec2s getTextureSize()
返回阴影贴图的大小。
void setTextureSize(const osg::Vec2s& size)
设置阴影贴图的大小。
osgShadow::ShadowSettings::ShadowMapProjectionHint getShadowMapProjectionHint()
返回阴影种类。
void setShadowMapProjectionHint(osgShadow::ShadowSettings::ShadowMapProjectionHint shadowMapProjectionHint)
设置阴影种类。
void setCastsShadowTraversalMask(unsigned int mask)
设置产生阴影的节点的遍历掩码。
unsigned int getCastsShadowTraversalMask()
获取产生阴影的节点的遍历掩码。
void setReceivesShadowTraversalMask(unsigned int mask)
设置接收阴影的节点的遍历掩码。
unsigned int getReceivesShadowTraversalMask()
获取接收阴影的节点的遍历掩码。