一、osgParticle::Particle类
功能:设置粒子的一些基本属性之类的。 类继承图:独类
1、Particle()
说明:构造函数。
2、Shape getShape () const
说明:得到粒子的形状,Shape有以下枚举值 (这些值大家应该都非常熟悉):POINT, QUAD, QUAD_TRIANGLESTRIP, HEXAGON, LINE
3、void setShape (Shape s)
说明:设置粒子的形状,值得注意的是如果定义 与点线有关的,最好设置一下点大与线宽,这两个(point/linewidth)属于osg::StateAttribute,这就使使用起来非常方便。s可以是POINT, QUAD, QUAD_TRIANGLESTRIP, HEXAGON, LINE
4、bool isAlive () const
说明:查看粒子系统的生命周期是否结束,如果结束了,就返回真,否则返回假。
5、double getLifeTime () const
说明:得到粒子系统的生存周期,单位是秒
6、double getAge () const
说明:得到粒子的年龄,已运行了多长时间,单位是秒
7、const rangef & getSizeRange () const
说明:得到形状态的变化范围,rangef是个包含两个值的小类,因为点与线是通过osg::StateAttribute设置的,所以这个操作以及设置范围的操作只对多边形有效。
8、const rangef & getAlphaRange () const
说明:得到透明度的变化范围
9、const rangev4 & getColorRange () const
说明:得到颜色的变化范围
10、float getRadius () const
说明:单位是米
11、float getMass () const
说明:得到粒子重量,单位是KG
12、float getMassInv () const
说明:得到重量的倒数
13、const osg::Vec3 & getPosition () const
说明:得到位置向量
14、const osg::Vec3 & getVelocity () const
说明:得到速度
15、const osg::Vec3 & getPreviousPosition () const
说明:得到上帧更新时的位置
16、const osg::Vec3 & getAngle () const
说明:得到角度向量
17、const osg::Vec3 & getAngularVelocity () const
说明:得到角速度
18、const osg::Vec3 & getPreviousAngle () const
说明:得到上一帧渲染时的角速度
19、const osg::Vec4 & getCurrentColor () const
说明:得到当前的颜色值
20、void kill ()
说明:摧毁粒子模版
22、void setLifeTime (double t)
说明:设置生命周期,量纲应该是秒,如果设置成<=0,则粒子永不消失
21、void setSizeRange (const rangef &r)
说明:设置尺寸变化范围,当然还是只对多边形形状态是有效的,r是一大一小两个值,代表粒子从生到灭的变化
22、void setAlphaRange (const rangef &r)
说明:设置在生命周期中透明度的变化范围,rangef是一大一小两个值,代表粒子从生到灭的变化
23、void setColorRange (const rangev4 &r)
说明:设置在生命周期中颜色的变化范围,rangef是一大一小两个值,代表粒子从生到灭的变化
24、void setRadius (float r)
说明:设置半径,单个粒子的半径,单位是米。
25、void setMass (float m)
说明:设置重量,设置粒子的重量,单位是KG。
26、void setPosition (const osg::Vec3 &p)
说明:设置位置
27、void setVelocity (const osg::Vec3 &v)
说明:设置粒子的初速度,
28、void addVelocity (const osg::Vec3 &dv)
说明:加上当前速度,加上此变化速度之后的速度
29、void transformPositionVelocity (const osg::Matrix &xform)
说明:改变速度向量值,需要改变的速度的向量值
30、void transformPositionVelocity (const osg::Matrix &xform1, const osg::Matrix &xform2, float r)
说明:改变速度向量值
31、void setAngle (const osg::Vec3 &a)
说明:设置角度
32、void setAngularVelocity (const osg::Vec3 &v)
说明:设置角速度,v为角速度的值
33、void addAngularVelocity (const osg::Vec3 &dv)
说明:增加角速度到当前,dv为角速度的值加上当前值
34、void transformAngleVelocity (const osg::Matrix &xform)
说明:改变角速度向量,xform改变后的角速度向量值
35、bool update (double dt)
void beginRender () const
36、void render (const osg::Vec3 &xpos, const osg::Vec3 &px, const osg::Vec3 &py, float scale=1.0f) const
说明:渲染,粒子系统会自动调用,xpos随时更新的粒子位置值X,ypos随时更新的粒子位置值Y,zpos随时更新的粒子位置值Z,scale缩放程度,默认为是不缩。
37、void endRender () const
说明:结束渲染
38、float getCurrentSize () const
说明:得到当前尺寸
39、void setPreviousParticle (int previous)
说明:设置当前粒子目,设置当前的粒子数目
40、int getPreviousParticle () const
说明:得到上一帧渲染粒子数目
41、void setNextParticle (int next)
说明:设置下一帧渲染粒子数目
42、int getNextParticle () const
说明:得到下一帧渲染粒子
二、osgParticle::ParticleSystem类
类说明:粒子系统类,决定粒子系统的渲染状态等等
1、ParticleSystem ()
ParticleSystem (const ParticleSystem ©, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
说明:构造函数。第二个构造函数为从一个已知的粒子系统类构造新的粒子系统类。第二个为拷贝类型。可选为浅或深拷贝。
2、Alignment getParticleAlignment () const
说明:得到/设置粒子排列方式,是Billboard还是Fixed,一般使用Billboard,但是Billboard在旋转过程中如果粒子叶片过大,可能被某些物体档住,从而失真
3、void setParticleAlignment (Alignment a)
说明:设置粒子的排列方式,是Billboard还是Fixed,一般使用Billboard,但是Billboard在旋转过程中如果粒子叶片过大,可能被某些物体档住,从而失真。
4、const osg::BoundingBox & getDefaultBoundingBox () const
说明:得到BoundingBox
5、void setDefaultBoundingBox (const osg::BoundingBox &bbox)
说明:设置BoundingBox,可能会导致缩放
6、bool getDoublePassRendering () const
说明:得到是否启用DoublePass渲染
7、void setDoublePassRendering (bool v)
说明:启用DoublePass渲染
8、bool isFrozen () const
说明:当前是束在冻结中,如果被冻结,将会暂停渲染直至开启
9、void setFrozen (bool v)
说明:设置是否冻结
10、int numParticles () const
说明:得到总粒子数
11、int numDeadParticles () const
说明:得到死亡粒子数
12、bool areAllParticlesDead () const
说明:判断是否所有粒子都已死亡
13、Particle * getParticle (int i)
const Particle * getParticle (int i) const
说明:得到指向第I个粒子的指针
14、virtual Particle * createParticle (const Particle *ptemplate)
说明:从已有模版中创建新模版,
15、virtual void destroyParticle (int i)
说明: 杀死第I个粒子
16、virtual void reuseParticle (int i)
说明:重新激活第I个粒子
17、Particle & getDefaultParticleTemplate ()
const Particle & getDefaultParticleTemplate () const
说明:得到默认粒子模版
18、void setDefaultParticleTemplate (const Particle &p)
说明:设置默认粒子模版,p为设置默认粒子模版
19、bool getFreezeOnCull () const
说明:得到是否冻结被裁切剔除的粒子(可能不需要显示)
20、void setFreezeOnCull (bool v)
说明:设置是否冻结被裁切剔除的粒子(可能不需要显示),v如果为真则冻,否则不冻
21、void setDefaultAttributes (const std::string &texturefile="", bool emissive_particles=true, bool lighting=false, int texture_unit=0)
说明:设置默认属性,纹理名,emissive_particles是否是放射性的,默认为真,lighting是否有光照效果,默认为真
22、virtual osg::BoundingBox computeBound () const
说明:计算BoundingBox
三、osgParticle::ConstantRateCounter类
类说明:此类用于创建连续发射的粒子,创建在单位时间内发射的粒子。
1、ConstantRateCounter ()
ConstantRateCounter (const ConstantRateCounter ©, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
说明:构造函数。第二个构造函数为从已知的发射器构造新的发射器,默认为浅拷贝。默认为浅拷贝,可以为深拷贝:DEEP_COPY_OBJECTS
2、void setMinimumNumberOfParticlesToCreate (int minNumToCreate)
说明:设置创建的最小粒子数目/每秒(但不是每秒创建的粒子数目)
3、int getMinimumNumberOfParticlesToCreate () const
说明:得到创建的最小粒子数目/每秒
4、void setNumberOfParticlesPerSecondToCreate (double numPerSecond)
说明:设置每秒创建的粒子数(但并不是场景中现有的粒子数)
5、double getNumberOfParticlesPerSecondToCreate () const
说明:得到每秒钟创建的粒子数
6、virtual int numParticlesToCreate (double dt) const
说明:在当前帧中创建的粒子数,dt为在当前帧中创建的粒子数目
四、osgParticle::VariableRateCounter类
类说明:此类用于创建当前场景内共有的粒子,创建场景中共有多少粒子,注意与ConstantRateCounter的 区别
1、VariableRateCounter ()
VariableRateCounter (const VariableRateCounter ©, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
说明:构造函数,第二个构造函数为从已知的类中创建新类。copyop为类拷贝类型,默认为浅拷贝。拷贝类型,默认为浅拷贝,可以为深拷贝。DEEP_COPY_OBJECTS.
2、const rangef & getRateRange () const
说明:得到场景中粒子数的最小与最大值
3、void setRateRange (const rangef &r)
说明:设置场景中粒子数的最小与最大值,范围值r,用于决定场景中粒子数的范围,为一大一小值。
4、void setRateRange (float minrange, float maxrange)
说明:设置场景中粒子的最小与最大值,minrange为当前场景中粒子数目最小值,maxrange为当前场景中粒子数目最大值。
五、osgParticle::RandomRateCounter
类说明:这两个类用于创建发射器,粒子将从此进行发射,具备限制速度与方向的作用
1、 RadialShooter ()
RadialShooter (const RadialShooter ©, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
说明:构造函数,第二个构造函数为从已知的类中创建新类。copyop为类拷贝类型,默认为浅拷贝。拷贝类型,默认为浅拷贝,可以为深拷贝。DEEP_COPY_OBJECTS.
2、const rangef & getThetaRange () const
说明:得到Theta,此角度一般认为是速度方向(量)与Z轴的夹角
3、void setThetaRange (const rangef &r)
说明:设置Theta范围,此角度一般认为是速度方向(量)与Z轴的夹角,范围值,为一大一小双值。
4、void setThetaRange (float r1, float r2)
说明:设置Theta 范围,r1范围值,为一小值,r2范围值,为上限一大值。
5、const rangef & getPhiRange () const
说明:得到Phi范围,此角度一般认为是速度在X-Y平面上的投影与X轴的夹角
6、void setPhiRange (const rangef &r)
说明:设置Phi范围,此角度一般认为是速度在X-Y平面上的投影与X轴的夹角,r范围值,为一大一小双值,设置phi范围。
7、void setPhiRange (float r1, float r2)
说明:设置Phi范围,此角度一般认为是速度在X-Y平面上的投影与X轴的夹角,r1范围值,设置phi范围下限,r2为范围值,设置phi范围上限。
8、const rangef & getInitialSpeedRange () const
说明:得到初始速度范围
9、void setInitialSpeedRange (const rangef &r)
void setInitialSpeedRange (float r1, float r2)
说明:设置初始速度范围,为一大一小双值。r为范围值,为一大一小双值。r1范围值,速度范围下限。r2范围值,速度范围上限。
10、const rangev3 & getInitialRotationalSpeedRange () const
说明:得到最初速度旋转的范围
11、void setInitialRotationalSpeedRange (const rangev3 &r)
void setInitialRotationalSpeedRange (const osg::Vec3 &r1, const osg::Vec3 &r2)
说明:设置最初速度旋转范围,r为范围值,为一大一小双值。r1范围值,速度范围下限。r2范围值,速度范围上限。
12、void shoot (Particle *P) const
说明:设置需要发身的粒子模版,一般需要系统自动调用,P为粒子系统模版。
六、osgParticle::SegmentPlacer
类说明:设置线段性发射源
1、SegmentPlacer ()
SegmentPlacer (const SegmentPlacer ©, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
说明: 构造函数,第二个用于从已知的创建新的SegmentPlacer.拷贝类型,默认为浅拷贝,可以为深拷贝。DEEP_COPY_OBJECTS.
2、const osg::Vec3 & getVertexA () const
说明:得到线段起点 ,用线段的起点与终点来确定发射源的线段
3、void setVertexA (const osg::Vec3 &v)
void setVertexA (float x, float y, float z)
说明:设置线段的起点,设置线段起点,常量方式,起点的x值,起点的y值,起点的z值
4、const osg::Vec3 & getVertexB () const
说明:得到线段的终点。
5、void setVertexB (const osg::Vec3 &v)
void setVertexB (float x, float y, float z)
说明:设置线段的终点,设置线段起点,常量方式,起点的x值,起点的y值,起点的z值
6、void setSegment (const osg::Vec3 &A, const osg::Vec3 &B)
说明:设置线段发射器的起点与终点,A为线段的起点,B为线段的终点。
7、void place (Particle *P) const
说明:设置粒子模版,一般系统自动调用,p为粒子模版。
8、osg::Vec3 getControlPosition () const
说明:得到控制点,为线段的中点
七、osgParticle::MultiSegmentPlacer类
类说明:设置多线段相边的发射源
1、MultiSegmentPlacer ()
MultiSegmentPlacer (const MultiSegmentPlacer ©, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
说明:得到线段起点 ,用线段的起点与终点来确定发射源的线段,拷贝类型,默认为浅拷贝,可以为深拷贝。DEEP_COPY_OBJECTS.
2、int numVertices () const
说明:获得线段的总顶点数
3、const osg::Vec3 & getVertex (int i) const
说明:得到第i个顶点,第i个顶点的索引值。
4、void setVertex (int i, const osg::Vec3 &v)
void setVertex (int i, float x, float y, float z)
说明:设置第i个顶点,第i个顶点的索引值。v为要设置的第i个顶点的值。x为顶点的x值。y为顶点的y值。z为顶点的z值。
5、void addVertex (const osg::Vec3 &v)
void addVertex (float x, float y, float z)
说明:增加一个顶点,在末尾,要增加的顶点的值。x为顶点的x值。y为顶点的y值,z为顶点的z值。
6、void removeVertex (int i)
说明:删除第i个顶点
7、void place (Particle *P) const
说明:设置粒子模版,OSG自己调用
8、osg::Vec3 getControlPosition () const
说明:得到控制点,是顶点序列的第一个点
八、osgParticle::CenteredPlacer
类说明:设置圆环形发射源,为虚基类
1、CenteredPlacer ()
CenteredPlacer (const CenteredPlacer ©, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
说明:得到线段起点 ,用线段的起点与终点来确定发射源的线段,拷贝类型,默认为浅拷贝,可以为深拷贝。DEEP_COPY_OBJECTS.
2、const osg::Vec3 & getCenter () const
说明:得到圆心
3、void setCenter (const osg::Vec3 &v)
void setCenter (float x, float y, float z)
说明:设置圆心,v为圆心坐标。x为圆心坐标的x值。y为圆心坐标的y值,z为圆心坐标的z值。
九、osgParticle::BoxPlacer
类说明:设置盒型发射源从CenterPlacer派生而来
1、BoxPlacer ()
BoxPlacer (const BoxPlacer ©, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
说明:构造函数,第二个构造函数为从已知的BoxPlacer创建新的BoxPlacer。拷贝类型,默认为浅拷贝,可以为深拷贝。DEEP_COPY_OBJECTS.
2、const rangef & getXRange () const
说明:得到X坐标范围
3、void setXRange (const rangef &r)
void setXRange (float r1, float r2)
说明:设置X坐标范围。设置范围,r为一下限一上限值。r1为设置范围的下限值,r2为设置范围的下限值。
4、const rangef & getYRange () const
说明:得到Y坐标范围。
5、void setYRange (const rangef &r)
void setYRange (float r1, float r2)
说明:设置Y坐标范围,r为设置范围,rangef为一下限一上限值。r1为设置范围的下限值。r2为设置范围的上限值。
6、const rangef & getZRange () const
说明:得到Z坐标范围。
7、void setZRange (const rangef &r)
void setZRange (float r1, float r2)
说明:设置Z坐标范围,r为设置范围,rangef为一下限一上限值。r1为设置范围的下限值。r2为设置范围的上限值。
8、void place (Particle *P) const
说明:设置粒子模版,OSG自己调用
9、osg::Vec3 getControlPosition () const
说明:得到控制点,认为是中心原点
十、osgParticle::PointPlacer
类说明:设置点形发射源从CenterPlacer派生而来
1、PointPlacer ()
PointPlacer (const PointPlacer ©, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
说明:构造函数,第二个构造函数为从已知的BoxPlacer创建新的BoxPlacer。拷贝类型,默认为浅拷贝,可以为深拷贝。DEEP_COPY_OBJECTS.
2、void place (Particle *P) const
说明:设置粒子模版,OSG自己调用
3、osg::Vec3 getControlPosition () const
说明:得到控制点,是Center
十一、osgParticle::SectorPlacer
类说明:设置环形发射源从CenterPlacer派生而来
1、SectorPlacer ()
SectorPlacer (const SectorPlacer ©, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
说明:构造函数,第二个构造函数为从已知的SectorPlacer创建新的SectorPlacer。拷贝类型,默认为浅拷贝,可以为深拷贝。DEEP_COPY_OBJECTS.
2、const rangef & getRadiusRange () const
说明:得到环形半径的范围
3、void setRadiusRange (const rangef &r)
void setRadiusRange (float r1, float r2)
说明:设置环形半径的范围,r为设置范围,rangef为一下限一上限值,设置范围,r1为下限,r2为上限。
4、const rangef & getPhiRange () const
说明:得到phi范围,在这里代表圆心角
5、void setPhiRange (const rangef &r)
void setPhiRange (float r1, float r2)
说明:设置phi范围,在这里代表圆心角
6、void place (Particle *P) const
说明:设置粒子模版,OSG自己调用
7、osg::Vec3 getControlPosition () const
说明:得到控制点,圆心
十二、osgParticle::ParticleEffect
类说明:用来产生一些常用的效果
1、ParticleEffect (bool automaticSetup=true)
ParticleEffect (const ParticleEffect ©, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
说明:构造函数,第一个是否为自动组建该类,将采用一些默认参数。默认为真。第二个构造函数为从已知的ParticleEffect创建新的ParticleEffect。拷贝类型,默认为浅拷贝,可以为深拷贝。DEEP_COPY_OBJECTS.automaticSetup为是否自动构建该类。默认为true
2、virtual const char * libraryName () const
说明:返回库名。
3、virtual const char * className () const
说明:返回类名。
4、virtual bool isSameKindAs (const osg::Object *obj) const
说明:判断与目标类是否为同一类型。目标类,判断是否为同一类型的类。
5、virtual void accept (osg::NodeVisitor &nv)
说明:accept
6、void setAutomaticSetup (bool flag)
说明:是否自动建立该类,将采用一些默认参数,是否自动建立该类。默认为自动。可以在这里更改。
7、bool getAutomaticSetup () const
说明:得到是否自动构建该类。
8、void setUseLocalParticleSystem (bool local)
说明:是否使用局部的ParticleSystem,local是否设置为局部ParticleSystem
9、bool getUseLocalParticleSystem () const
说明:得到是否使用局部的ParticleSystem
10、void setTextureFileName (const std::string &filename)
说明:设置纹理图片名,filename为纹理文件名。
11、const std::string & getTextureFileName () const
说明:得到纹理文件名。
12、void setDefaultParticleTemplate (const Particle &p)
说明:设置默认粒子模版
13、const Particle & getDefaultParticleTemplate () const
说明:得到默认粒子模版
14、void setPosition (const osg::Vec3 &position)
说明:设置具体位置
15、const osg::Vec3 & getPosition () const
说明:得到具体位置
16、void setScale (float scale)
说明:设置缩放率,scale为缩放比率
17、float getScale () const
说明:得到缩放率
18、void setIntensity (float intensity)
说明:设置剧烈程度
19、float getIntensity () const
说明:得到剧烈程度
20、void setStartTime (double startTime)
说明:设置开始时间,startTime为设置的开始时间,粒子开始运行的时间
21、double getStartTime () const
说明:得到开始时间
22、void setEmitterDuration (double duration)
说明:设置发射器的持续/间隔时间,duration发射器的持续/间隔时间
23、double getEmitterDuration () const
说明:得到发射器的持续/间隔时间
24、void setParticleDuration (double duration)
说明:设置粒子的间隔/持续时间。
25、double getParticleDuration () const
说明:得到粒子的间隔/持续时间。
26、void setWind (const osg::Vec3 &wind)
说明:设置风速影响。
27、const osg::Vec3 & getWind () const
说明:得到风向影响。
28、bool areAllParticlesDead () const
说明:判断是否所有粒子都已死亡,场景中看不见粒子并不代表已经死亡
十三、osgParticle::FluidProgram
类说明:设置一些气流影响的,总结为阻力
1、FluidProgram ()
FluidProgram (const FluidProgram ©, const osg::CopyOp ©op=osg::CopyOp::SHALLOW_COPY)
说明:构造函数,第一个是否为自动组建该类,将采用一些默认参数。默认为真。第二个构造函数为从已知的FluidProgram创建新的FluidProgram。拷贝类型,默认为浅拷贝,可以为深拷贝。DEEP_COPY_OBJECTS.
2、void setFluidViscosity (float v)
说明:设置粘性指数
3、float getFluidViscosity () const
说明:得到粘性指数
4、void setFluidDensity (float d)
说明:设置密度
5、float getFluidDensity () const
说明:得到密度
6、void setWind (const osg::Vec3 &wind)
说明:设置风速,设置风速,值越大风速就越大。
7、const osg::Vec3 & getWind () const
说明:得到风速
8、void setAcceleration (const osg::Vec3 &v)
说明:设置加速度,设置加速度,值越大速度就越大。
9、const osg::Vec3 & getAcceleration () const
说明:得到加速度
10、void setToGravity (float scale=1.0f)
说明:设置向下引力,默认值为1,调置向下的引力
11、void setFluidToAir ()
说明:设置模拟空气
12、void setFluidToWater ()
说明:设置模拟水下