osg.Fog类表示场景中的雾。雾是由于距离,天气或其他环境因素而导致景物的模糊或不透明效果。在OpenSceneGraph中,osg.Fog对象用于模拟和增强场景中的雾化效果。
osg::Fog::Fog();
osg::Fog::Fog(const osg::Fog& fog, const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY);
第一个构造函数创建一个空的雾对象。第二个构造函数使用另一个雾对象的值对新对象进行初始化。
void setMode(Mode mode);
设置雾的模式。模式可以是LINEAR
、EXP
或EXP2
,分别表示线性方程、指数方程和双倍指数方程。
Mode getMode() const;
获取雾的模式。
void setColor(const osg::Vec4& color);
设置雾的颜色。颜色参数是一个四维向量,分别表示红、绿、蓝和透明度。
const osg::Vec4& getColor() const;
获取雾的颜色。
void setDensity(float density);
设置雾的密度。密度参数表示单位距离内雾的体积。
float getDensity() const;
获取雾的密度。
void setStart(float start);
设置线性雾的开始距离。
float getStart() const;
获取线性雾的开始距离。
void setEnd(float end);
设置线性雾的结束距离。
float getEnd() const;
获取线性雾的结束距离。
osg::ref_ptr<osg::Fog> fog = new osg::Fog;
fog->setMode(osg::Fog::Mode::EXP);
fog->setColor(osg::Vec4(0.5, 0.5, 0.5, 1));
fog->setDensity(0.01);
osg::ref_ptr<osg::StateSet> state = node->getOrCreateStateSet();
state->setAttributeAndModes(fog.get());
这段代码创建了一个指数雾对象,颜色为灰色,密度为0.01,并将其作为节点的状态集属性。