[SceneKit专题]4.Particle Systems粒子系统

说明

本系列文章是对<3D Apple Games by Tutorials>一书的学习记录和体会此书对应的代码地址

SceneKit系列文章目录

SCNParticleSystem

粒子系统常用属性:

  • Appearance(外观):每一个颗粒都是一个小图片或者一组图片序列,可以调整尺寸,颜色,混合模式以及其他颗粒产生时的渲染参数.
  • Life Span(生命跨度):粒子系统用particle emitter(粒子发射器)产生单独的颗粒.生命跨度决定了粒子在场景中的可见时长.
  • Emitter behavior(发射器行为):可以按钮发射器的参数,比如粒子从哪里产生,产生速率.
  • Variation(变异):让粒子系统产生随机变异.
  • Movement(运动):可以调整颗粒产生后是怎么运动的.粒子系统使用了简化版的物理模拟来加速性能,但颗粒仍然可以和物理引擎管理的对象进行交互.

新建一个粒子系统,xcode自带了7种效果

QQ20170403-230758@2x.png
QQ20170403-231818@2x.png
QQ20170403-231858@2x.png

创建后的区域有7块:
1.Center Stage(中央舞台):粒子系统可视化呈现区.
2.Gesture Controls(手势控制):可以用手势来操纵相机视图.
3.Pause/Play Button(暂停/继续按钮):可以暂停运行仔细检查细节.
4.Restart Button(从头开始按钮):从最初状态重新运行.
5.Camera Reset Button(重设相机按钮):重设相机,恢复默认位置.
6.Color Button(背景颜色按钮):更改呈现区背景色,可以让你更容易观察粒子.
7.Particle System Properties(粒子系统属性区):更改属性

Emitter attributes发射器属性

QQ20170403-231924@2x.png
  • Birth rate(出生速率):控制颗粒的发射速率,设置为25,则每秒产生25个颗粒.
  • Warmup duration(暖场时长):渲染时的粒子产生提前量,可以用来一开始就让整个屏幕直接充满颗粒而无需从头等待慢慢发射.
  • Location(位置):和形状相关,设置发射器从哪里发射颗粒.设置为Vertex,则颗粒将会从几何体的顶点产生.
  • Emission space(散发空间):发射出的颗粒停留的空间.设置为World Space这样颗粒将会被发射到世界坐标系的空间中,而不是对象节点自己的本地坐标系空间.
  • Direction mode(方向模式):控制产生的颗粒如何运动,设置为Constant,则颗粒放射状从形状表面向外运动,否则颗粒将以随机方向运动.
  • Spreading angle(散布角度):随机化大量颗粒的发射角度.设置为0,则颗粒严格按照上一个设置的方向运动.
  • Shape(形状):发射颗粒的形状,设置为Sphere则用球体做为几何体.
  • Shape radius(形状半径):这个参数和上面设置的形状有关,当形状设置为球体时,此处可设置球体的半径.某些形状有两个输入区,其中一个有Δ符号,第一个输入区是一个基础值,后面是偏差值,每次产生颗粒时,将在基础值的正负偏差范围内产生随机值.

Simulation attributes模拟属性

QQ20170403-231936@2x.png
  • Life span(生命跨度):颗粒的存在时长,以秒为单位.
  • Linear velocity(线速度):设置发射出的颗粒的线速度,设置为0时,则颗粒产生时没有方向和速度.
  • Angular velocity(角速度):设置发射出的颗粒的角速度,设置为0时,则颗粒产生时不会旋转.
  • Acceleration(加速度):设置力来影响发射出的颗粒.设置为(x: 0, y: -5, z: 0)就可以模拟重力对颗粒的轻微作用.
  • Speed factor(速度因子):颗粒模拟的速度因子,设置为1则按正常速度运行.
  • Stretch factor(拉伸因子):按运动方向对颗粒进行拉伸.设置为0,则颗粒图片不拉伸.

Image attributes图片属性

QQ20170403-231948@2x.png
  • Image(图片):设置每个颗粒渲染时的图片,给颗粒一个最初的形状.
  • Color(颜色): 设置指定图片的染色.设定为White,则粒子系统基础色为白色.
  • Animate color(动画颜色):使颗粒在生命周期中不断改变颜色.
  • Color variation(颜色变异):设定颜色随机变异值.
  • Size(尺寸):设置颗粒的尺寸.

Image sequence attributes图片序列属性

QQ20170403-232002@2x.png
  • Initial frame(初始帧):设置第一个动画序列的零起点画面,第零帧对应的是网络中左上角的图片.使用单帧图片时设置为0.
  • Frame rate(帧率):设置动画的每秒速度.使用单帧图片时设置为0.
  • Animation(动画):设置动画序列的行为.Repeat重复循环,Clamp播放一次,Auto Reverse自动反转,从头到尾再返回开头.使用单帧图片时设置为Repeat或其他均可.
  • Dimensions(尺寸):设置动画风格的行数列数.使用单帧图片时设置为(Rows: 1, Columns: 1).

Rendering attributes渲染属性

QQ20170403-232014@2x.png
  • Blending(混合):设置渲染器绘制颗粒时的混合模式,设置为Alpha,将会使用图片的alpha通道信息来决定透明度.
  • Orientation(旋转):设置为Billboard screen-aligned,这样图片会永远正面对着相机,就不会看到图片是扁平的了.
  • Sorting(排序):设置颗粒的渲染排序.这个属性用来连合混合模式,影响如何应用混合模式.
  • Lighting(灯光):控制是否受场景中灯光的影响.

Physics attributes物理属性

QQ20170403-232024@2x.png
  • Affected by gravity(受重力影响):设置重力(引力)对颗粒的影响.
  • Affected by physics fields(受物理场影响): 设置物理场(磁力等)对颗粒的影响.
  • Die on Collision(碰撞后死亡):允许场景中的物理实体碰撞并摧毁粒子.
  • Physics Properties(物理属性):控制物理模拟中粒子物理行为的基础物理属性,一般可保持默认.Mass(质量),bounce(弹性),friction(摩擦),damping(阻尼).

Life cycle attributes生命周期属性

QQ20170403-232036@2x.png
  • Emission Duration(排放时长):控制发射器发射新粒子的时间长度.设置为1,使粒子发射器设定总长度为1秒 .
  • Idle Duration(闲置时长):粒子系统循环发射一个特定排放时长后,将闲置一段时间,称为闲置时长,然后再重复循环.设置为0,粒子系统将只发射一次.
  • Looping(循环):设置粒子系统像爆炸一样发射一次,还是像火山一样持续发射粒子.设置为Loops continuously,就可以让发射器在被移除前一直发射.

加载使用

创建好的粒子系统要如何加载使用?

let trail = SCNParticleSystem(named: "Trail.scnp", inDirectory: nil)!
geometryNode.addParticleSystem(trail)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容