[SceneKit專題]4-Particle-Systems粒子系統

蘋果API搬運工發表於2017-12-25

說明

本系列文章是對<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)
複製程式碼

相關文章