osgParticle.PrecipitationEffect是OpenSceneGraph中的一个粒子系统,用于模拟雨、雪等天气效果的粒子效果。
// 创建一个默认的PrecipitationEffect
osg::ref_ptr<osgParticle::PrecipitationEffect> precipitationEffect = new osgParticle::PrecipitationEffect();
// 设置粒子效果的粒子发射速度
precipitationEffect->setParticleSpeed(1.0f);
// 设置粒子效果的最大粒子数
precipitationEffect->setMaxNumberOfParticles(1000);
// 设置粒子效果的粒子纹理
osg::ref_ptr<osg::Image> image = osgDB::readImageFile("textures/snowflake.png");
osg::ref_ptr<osg::Texture2D> texture = new osg::Texture2D;
texture->setImage(image);
precipitationEffect->setDefaultParticleTemplate(new osgParticle::Particle);
precipitationEffect->getDefaultParticleTemplate()->setTexture(0, texture);
osg::ref_ptr<osg::Group> root = new osg::Group;
root->addChild(precipitationEffect);
osgViewer::Viewer viewer;
viewer.setSceneData(root);
viewer.run();
void setParticleScale(const osg::Vec3& scale)
设置粒子效果的缩放比例。
const osg::Vec3& getParticleScale() const
返回粒子效果的缩放比例。
void setParticleColor(const osg::Vec4& colorBegin, const osg::Vec4& colorEnd)
设置粒子效果的渐变颜色。
void getParticleColor(osg::Vec4& colorBegin, osg::Vec4& colorEnd) const
返回粒子效果的渐变颜色。
osg::Vec2f &getParticleSizeRange()
返回粒子效果的粒子大小范围。
void setParticleSizeRange(const osg::Vec2f &range)
设置粒子效果的粒子大小范围。
osgParticle::PrecipitationEffect::Type getType() const
返回粒子效果的类型,目前支持三种类型:雪(SNOW)、雨(RAIN)和粉尘(DUST)。
void setType(osgParticle::PrecipitationEffect::Type type)
设置粒子效果的类型。
OpenSceneGraph 3.4.0 Documentation: osgParticle.PrecipitationEffect