osgVolume.SampleDensityWhenMovingProperty是用于控制当相机移动时体积渲染的密度的属性类。
该类继承自osg::Vec2f,分别控制了相机移动结束后渲染的密度以及在相机移动过程中渲染的密度。
SampleDensityWhenMovingProperty(const osg::Vec2f& value = osg::Vec2f(0.0f, 0.0f));
value: 初始值,默认为(0.0f, 0.0f)。getType()virtual const char* getType() const override;
返回属性的类型名称,即SampleDensityWhenMoving。
writeTo(WriteHepler& writer) constvirtual void writeTo(WriteHepler& writer) const override;
将属性写入WriteHepler。
readFrom(ReadHelper& reader)virtual void readFrom(ReadHelper& reader) override;
从ReadHelper读取属性。
applyToStateSet(StateSet* stateset) constvirtual void applyToStateSet(StateSet* stateset) const override;
将属性应用到指定的StateSet中。
m_sampleDensity: 指定在相机移动完成后的渲染密度。
m_sampleDensityWhenMoving: 指定在相机移动过程中的渲染密度。
osg::ref_ptr<osgVolume::SampleDensityWhenMovingProperty> density = new osgVolume::SampleDensityWhenMovingProperty(osg::Vec2f(0.5f, 0.1f));
osg::ref_ptr<osg::StateSet> stateset = new osg::StateSet();
density->applyToStateSet(stateset);
上述示例中,创建了一个密度属性类density,并将其应用到一个StateSet中。在相机移动过程中,体积渲染的密度为0.1f,相机移动完成后渲染密度为0.5f。