13、osgParticle::Particle,osgParticle::ParticleSystem,osgParticle::ConstantRateCounter

一、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 &copy, const osg::CopyOp &copyop=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 &copy, const osg::CopyOp &copyop=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 &copy, const osg::CopyOp &copyop=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 &copy, const osg::CopyOp &copyop=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 &copy, const osg::CopyOp &copyop=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 &copy, const osg::CopyOp &copyop=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 &copy, const osg::CopyOp &copyop=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 &copy, const osg::CopyOp &copyop=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 &copy, const osg::CopyOp &copyop=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 &copy, const osg::CopyOp &copyop=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 &copy, const osg::CopyOp &copyop=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 &copy, const osg::CopyOp &copyop=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 () 

说明:设置模拟水下

你可能感兴趣的:(13、osgParticle::Particle,osgParticle::ParticleSystem,osgParticle::ConstantRateCounter)