您的位置:首页 > 其它

Away3D粒子系统中文快速上手指南

2012-07-27 23:23 316 查看
http://www.9ria.com/news/2012/0727/24687.html

1. 简单介绍

本粒子系统是基于flashplayer 11版本stage3d环境基础下的粒子引擎,3D渲染需要搭载Away3D 4.0 Beta及以上版本使用,该粒子系统相较传统粒子引擎最大特色在于优化了粒子的控制,并且在计算过程中大量使用GPU运算进行优化,使得同时可承载的粒子数飞跃提升,百万级以上粒子数量亦可支持。

2. 快速上手

关键字:ParticleSample、ParticlesContainer、Generater、Action

(1).ParticleSample(粒子实例):将一组具有共同属性的粒子的集合,在实际应用中,为了实现某个效果,常常使用多个ParticleSample相结合进行操作,例如火焰效果,需要把火焰和烟单独分开进行制作等。使用只需要在构造函数传入参数集合信息SubGeometry和材质信息ParticleMaterialBase即可初始化。

(2).ParticlesContainer(粒子容器):每个粒子都需要存放在一个固定的容器中,容器作为一个显示对象组存在。在容器中添加粒子生成器既可以产生粒子,该类提供对粒子的整体控制的方法,例如start、stop等播放性的控制,设置是否循环、时间轴缩放等属性操作。并提供事件回调,例如开始回调、过程回调、休眠回调等多种回调。

(3).Generater(粒子生成器):粒子生成器用于装配粒子,设定需要的粒子实例,然后进行生成,并自动将粒子添加到粒子容器中。一个生成器可以对应多个粒子实例,粒子实例在构造函数进行初始化。

(4).Action(动作):粒子在容器中的一切显示属性的操作都由Action组织完成,每个粒子容器可以同时受多个Action进行控制,可以控制粒子的生命周期、运动轨迹、颜色变换等各个显示相关的属性。在渲染中进行迭代完成粒子的属性的装配工作,然后提交渲染。

3. 快速使用

(1).初始化粒子实例,new ParticleSample(subGeometries, material);

(2).初始化粒子生成,nwe SingleGenerater(ParticleSample, count)或者new MutiWeightGenerater([ParticleSample1, ParticleSample2 ...],weights,count) 前者用于单一的粒子实例,后面对应多个粒子实例。

(3).初始化粒子容器,new ParticlesContainer(),还可以设置loop循环等各种属性,最终需要把粒子容器以Object3D的方式添加到view.scene上。

(4).添加相对应的Action,对ParticlesContainer用addAction的方法进行action的添加,确定粒子的显示规则。

(5).添加生成器和回调,ParticlesContainer.generate(generater)添加对应的粒子生成器。并对ParticlesContainer设置需要的回调。

(6).播放控制,ParticlesContainer.start()。

4. action介绍

(1).action的介绍:

action作为例子系统中影响粒子生成、轨迹、变化、生命周期等提供不可获取的决定性条件,按照作用时候的属性操作可划分为局部和全局两种,按照最终产生的效果,可以划分为位移、旋转、缩放和颜色四类。

作用效果分类:

<1>.位移:让所有的粒子偏移到相同的点(聚集),例如VelocityGlobal(局部),AccelerateGlobal(局部),OffestPositionLocal,DriftLocal等。

<2>.旋转:让每个粒子的角度进行操作,使粒子的顶点都偏移到不同的位置,例如RandomRotateLocal,AutoRotateGlobal,AlwayFaceToCameraGlobal等。

<3>.缩放:让每个粒子的大小进行操作,使粒子的每个顶点都偏移一个不同的位置,例如RandomScaleLocal,ScaleByLifeGlobal,ScaleByTimeGlobal等。

<4>.颜色:影响到粒子的颜色,例如FlickerGlobal,ChangeColorByLifeGlobal,RandomColorLocal等。

按照作用域分类:

<1>全局域:这意味着容器中所有的粒子都将具有相同的属性,全局的Action将修改VC或者VF作为参数来实现Action的效果。在每次渲染时,Action将设置自己所使用的VS或者FC(片段常量寄存器)的值,我们可以实时改变它的值。但是如果你要改变它,这可能看上去比较奇怪(出现跳跃或者不连续)。所以这里被禁止在运行时更改这个值。

<2>.局部域:这意味着这每一个粒子都有自己的属性,全局的Action使用VA(顶点流寄存器)或者V(常量寄存器)作为参数来决定Action的结果,因为只有8个VA(顶点流寄存器)和V(常量寄存器),我们应该尽量避免使用它。局部的情况下赋值是在CPU阶段,并且不允许实时进行变更。

5. 系统工作流程原理

粒子的计算在整个工作计算流程中分为初始化阶段、CPU运算阶段和GPU运算阶段三个部分。

(1).粒子的初始化阶段

这个实例由初始化由集合形状操作和初始化纹理操作构成。你可以从Loader3D或者Primitives中获取几何形状的信息,同样可以设置位图纹理或者纯色材质的纹理,并且可以在一下CPU的运算周期创建更多的实例,不同的实例可以共享几何或者纹理数据。

(2).CPU运算阶段

在这个阶段初始化生成极端.使用复制操作产生新的相同的或者不同的实例,在这个阶段可以赋予不同的属性(VA顶点流寄存器),一旦实例被创建,则不再允许被修改。

(3).GPU运算阶段

到了渲染阶段,所有在这个阶段的粒子都将经过Action进行计算并且被渲染。每个粒的第一个Action必然是TimeAction,它将决定所有粒子的当前的时刻和生命周期。在这个阶段,所有的粒子都无法获取任何关于其他粒子的信息,每一帧都是独立的。可以根据额你的需求进行跳帧甚至反向帧渲染操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: