第十三節 - 粒子系統

weixin_33807284發表於2017-11-14

粒子系統

百度百科:

粒子系統表示三維計算機圖形學中模擬一些特定的模糊現象的技術,而這些現象用其它傳統的渲染技術難以實現的真實感的 game physics。經常使用粒子系統模擬的現象有火、爆炸、煙、水流、火花、落葉、雲、霧、雪、塵、流星尾跡或者象發光軌跡這樣的抽象視覺效果等等。

SceneKit 給我們提供了那些粒子系統呢?下面先來展示一下

1.fire(?)

8541184-2df0d1fa1dd13276.png
讓學習成為一種習慣

2.confetti(五彩紙屑)

8541184-37efa33b952ec90f.png
讓學習成為一種習慣

3.bokeh(散景)

8541184-d957b29c8df3ea53.png
讓學習成為一種習慣

4.Rain(下雨)

8541184-72b72bb82d8c1782.png
下雨了,心瞬間就靜下來了

5.Reactor(反應堆)

8541184-c6c5d29724f2e580.png
讓學習成為一種習慣

6.Smoke(煙)

8541184-aa21a22bc4ea9399.png
讓學習成為一種習慣

7.Star(✨)

8541184-79371c77def1c7ae.png
讓學習成為一種習慣

以上就是SceneKit 框架中提供給我們的幾種粒子系統,下面我做個簡單的例子幫助大家學習如何簡單的使用粒子系統。

走進程式碼的世界

第一步.建立工程就不演示了。

第二步.建立SCNView檢視新增到View中去

SCNView *scnView  = [[SCNView alloc]initWithFrame:self.view.bounds];
scnView.backgroundColor = [UIColor blackColor];
scnView.scene = [SCNScene scene];
scnView.allowsCameraControl = TRUE;
[self.view addSubview:scnView];

第三步.建立攝像頭

SCNCamera *camera = [SCNCamera camera];
SCNNode *cameraNode = [SCNNode node];
cameraNode.camera = camera;
camera.automaticallyAdjustsZRange = TRUE;
cameraNode.position = SCNVector3Make(0, 0, 50);
[scnView.scene.rootNode addChildNode:cameraNode];

第四步.新增一個四方體

SCNBox *box = [SCNBox boxWithWidth:10 height:10 length:10 chamferRadius:0];
box.firstMaterial.diffuse.contents = @"1.PNG";
SCNNode *boxNode = [SCNNode nodeWithGeometry:box];
boxNode.position = SCNVector3Make(0, 10, -100);
[scnView.scene.rootNode addChildNode:boxNode];

第五步.建立一個粒子系統檔案

8541184-5b63c05c8c22ffa5.png
讓學習變成一種習慣
8541184-f8ce652c3e926b4d.png
讓學習變成一種習慣

第六步.如何把粒子新增到剛才建立的四方體上呢?

 // 1.建立粒子系統物件
SCNParticleSystem *particleSystem = [SCNParticleSystem particleSystemNamed:@"fire.scnp" inDirectory:nil];
// 2.建立一個節點新增粒子系統
SCNNode *node = [SCNNode node];
[node addParticleSystem:particleSystem];
node.position = SCNVector3Make(0, -1, 0);
// 3.將粒子系統節點設定為四方體的子節點
[boxNode addChildNode:node];

完成之一步,今天我們的內容就結束了,是不是很簡單!

執行結果:

8541184-6b737e22341a525a.gif
學習是一件很好玩的事情

總結

粒子系統是我們在遊戲中特別重要的一塊內容,相對內容也比較多,我們本節就簡單的介紹到這裡,更多高階幹活我們後續講解。

相關文章