深入浅出spark粒子特效连接:https://www.cnblogs.com/lyggqm/p/9956344.html

system:

A class defining a complete system of particles.

最重要的就两个函数:

addController()//Adds a controller to the system.

addGroup()

可见一个完整的粒子system可以有几个group和controller组成

group:

The group is the core class of SPARK.
It is responsible for holding particle data, emitting and updating particles.

以下都是被加载到group中的属性来控制整个粒子的主要行为!

1.render    渲染器,一个group只有一个

2.emitter    发射器,一个group可以有多个

3.interpolator  插值器,一个group可以有多个

4.modifier     调节器,一个group可以有多个

5.action     事件 ,一个group可以有最多2个事件 

render:

渲染器是当前粒子纹理的加载与解释器

包含的属性如下:

setBlendMode //  alpha   ||  add

enableRenderingOption //  ALPHA_TEST   DEPTH_WRITE

这是基类,但是我们一般都是下面的派生类,我就用最常用的一种举例:SPK::GL::GLQuadRenderer

A Renderer drawing particles as OpenGL quads.

the orientation of the quads depends on the orientation parameters set. This orientation is computed during rendering by the CPU (further improvement of SPARK will allow to make the computation on GPU side).

它需要设置:

1、scale  x y

2、angle

3、texture_index

这里有一个很重要的函数:

时GLQuadrender从Orientation3DRenderBehavior继承的:

void setOrientation(OrientationPreset orientation);

设置粒子的朝向,OrientationPreset有几种

CAMERA_PLANE_ALIGNED = PACK_ORIENTATION(LOCK_LOOK,LOOK_CAMERA_PLANE,UP_CAMERA),       粒子朝向相机平面(最常见的)
CAMERA_POINT_ALIGNED = PACK_ORIENTATION(LOCK_LOOK,LOOK_CAMERA_POINT,UP_CAMERA),      粒子朝向相机点(更好的效果,但更浪费效率)
DIRECTION_ALIGNED = PACK_ORIENTATION(LOCK_UP,LOOK_CAMERA_PLANE,UP_DIRECTION),         粒子是朝向它们的方向的功能,并试图看向相机
AROUND_AXIS = PACK_ORIENTATION(LOCK_UP,LOOK_CAMERA_POINT,LOOK_AXIS),             粒子只能围绕轴旋转并尝试查看相机
TOWARDS_POINT = PACK_ORIENTATION(LOCK_LOOK,LOOK_POINT,UP_CAMERA),                 粒子朝向宇宙中的一个点
FIXED_ORIENTATION = PACK_ORIENTATION(LOCK_LOOK,LOOK_AXIS,UP_AXIS)                 粒子在宇宙中具有固定的方向

以及部分和粒子朝向有关的参数:

下面看看按照各个轴转时,会出现的状态以及使用的参数:

CAMERAPLANE,最正常的参数,默认参数,720度无死角

不受其他参数控制

CAMERAPOINT,不知道干什么的,720度都是死角

不受其他参数控制

DIRECTION,360度无死角,在水平方向上可以看,垂直角度会变成下面这样

不受其他参数影响

AROUNDAXIS,绕着某一个轴旋转

受到upvector影响,不受lookvector影响

TOWARDSPOINT,看不懂

受到lookvector影响,不受upvector影响

FIXEDORIENTATION,面对某个方向

受到两个参数lookvector和upvector影响

[原][粒子特效][spark]粒子系统system、主节点group、渲染器render的更多相关文章

  1. [原][粒子特效][spark]调节器modifier

    深入浅出spark粒子特效连接:https://www.cnblogs.com/lyggqm/p/9956344.html group添加modifier的方式: modifier An abstra ...

  2. [原][粒子特效][spark]事件action

    深入浅出spark粒子特效连接:https://www.cnblogs.com/lyggqm/p/9956344.html group调用action的地方: 可以看到使用action的可以是出生一次 ...

  3. [原][粒子特效][spark]插值器interpolator

    深入浅出spark粒子特效连接:https://www.cnblogs.com/lyggqm/p/9956344.html 插值器是体现粒子生命周期变化的功能 group使用到插值器的方式: 可以看到 ...

  4. [原][粒子特效][spark]发射器emitter

    深入浅出spark粒子特效连接:https://www.cnblogs.com/lyggqm/p/9956344.html group添加emitter的方式: eimtter: 上图是spark源码 ...

  5. [原][粒子特效][spark]深入浅出osgSpark

    背景: 目前我使用的spark粒子特效库是2.0 这个库好像是原来鬼火引擎的一部分,需要从github上找 现在我要将其使用到我自己开发的基于osgearth开的三维地图引擎中 步骤: 1.编译spa ...

  6. [原][osg][粒子特效]spark粒子特效生成流程

  7. [原][osg][osgEarth][粒子特效]关于粒子特效库在osgEarth中,位置摆放问题,跟踪节点移动问题

    首先粒子在地球上位置摆放很简单: //传入的经纬度坐标 osg::Vec3d geoPoint; const SpatialReference* latLong = SpatialReference: ...

  8. [粒子特效]osg的自带粒子系统osgParticle::ParticleSystem

    osgParticle示例简单的演示了在osg中使用粒子系统的效果,用到了osgParticle库中的相关类,在osgParticle中主要有: (以下部分材料摘取自osg向场景中添加osgParti ...

  9. Qt移动应用开发(四):应用粒子特效

    Qt移动应用开发(四):应用粒子特效 上一篇文章介绍了Qt Quick是如何对帧动画进行支持的.帧动画的实现离不开状态机.而状态机.动画和状态切换(transitions)则是Qt框架的核心内容.也就 ...

随机推荐

  1. winform跨线程访问控件

    首先说下,.net 2.0以后加强了安全机制,不允许在winform中直接跨线程访问控件的属性.所以除了控件所在的线程外的线程调用会抛异常 (Cross-thread operation not va ...

  2. Scrapy框架学习 - 使用内置的ImagesPipeline下载图片

    需求分析需求:爬取斗鱼主播图片,并下载到本地 思路: 使用Fiddler抓包工具,抓取斗鱼手机APP中的接口使用Scrapy框架的ImagesPipeline实现图片下载ImagesPipeline实 ...

  3. Golang并发编程有缓冲通道和无缓冲通道(channel)

    无缓冲通道 是指在接收前没有能力保存任何值得通道.这种类型的通道要求发送goroutine和接收goroutine同时准备好,才能完成发送和接收操作.如果两个goroutine没有同时准备好,通道会导 ...

  4. Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) Problem A - B

    Array of integers is unimodal, if: it is strictly increasing in the beginning; after that it is cons ...

  5. noip模拟【noname】

    noname [问题描述] 给定一个长度为n的正整数序列,你的任务就是求出至少需要修改序列中的多少个数才能使得该数列成为一个严格(即不允许相等)单调递增的正整数序列,对序列中的任意一个数,你都可以将其 ...

  6. noip模拟【ping】

    70:很容易想到的是枚举每一个可能的答案来判断是否可行,取最优即可,贪心选择. 100:满足题目条件的这个距离是满足单调性的.如果x不行,那么大于x的距离都不行,二分答案. 学会运用二分,by ws_ ...

  7. 一个查表置换的CM

    说实话,今天被自己蠢哭了 因为看多了一个字符,以为是输入字符变形后的base64编码,也怪自己没大致看过base64汇编形式,把base64跟完了用py实现完算法才意思到是base64,这是题外话 本 ...

  8. java 之 dom4j解析xml

    *dom4j,是一个组织,针对xml解析,提供解析器dom4j *dom4j不是javase的一部分,想要使用需要导入dom4j提供的jar包 *第一步:创建lib文件夹,将压缩文件放到此处 *第二步 ...

  9. p3792 由乃与大母神原型和偶像崇拜(思维+线段树)

    要求 1.修改x位置的值为y 2.查询区间l,r是否可以重排为值域上连续的一段 可以,很lxl 然后一开始思考合并区间,但是发现可以重排序,GG 然后想了特殊性质,比如求和,但是显然可以被叉 这时候我 ...

  10. 题解——Codeforces Round #508 (Div. 2) T1 (模拟)

    依照题意暴力模拟即可A掉 #include <cstdio> #include <algorithm> #include <cstring> #include &l ...