說明
本系列文章是對<3D Apple Games by Tutorials>一書的學習記錄和體會git
此書對應的代碼地址github
SceneKit系列文章目錄swift
SCNParticleSystem
粒子系統經常使用屬性:xcode
- Appearance(外觀):每個顆粒都是一個小圖片或者一組圖片序列,能夠調整尺寸,顏色,混合模式以及其餘顆粒產生時的渲染參數.
- Life Span(生命跨度):粒子系統用particle emitter(粒子發射器)產生單獨的顆粒.生命跨度決定了粒子在場景中的可見時長.
- Emitter behavior(發射器行爲):能夠按鈕發射器的參數,好比粒子從哪裏產生,產生速率.
- Variation(變異):讓粒子系統產生隨機變異.
- Movement(運動):能夠調整顆粒產生後是怎麼運動的.粒子系統使用了簡化版的物理模擬來加速性能,但顆粒仍然能夠和物理引擎管理的對象進行交互.
新建一個粒子系統,xcode自帶了7種效果網絡
建立後的區域有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(粒子系統屬性區):更改屬性app
Emitter attributes發射器屬性
- Birth rate(出生速率):控制顆粒的發射速率,設置爲25,則每秒產生25個顆粒.
- Warmup duration(暖場時長):渲染時的粒子產生提早量,能夠用來一開始就讓整個屏幕直接充滿顆粒而無需從頭等待慢慢發射.
- Location(位置):和形狀相關,設置發射器從哪裏發射顆粒.設置爲Vertex,則顆粒將會從幾何體的頂點產生.
- Emission space(散發空間):發射出的顆粒停留的空間.設置爲World Space這樣顆粒將會被髮射到世界座標系的空間中,而不是對象節點本身的本地座標系空間.
- Direction mode(方向模式):控制產生的顆粒如何運動,設置爲Constant,則顆粒放射狀從形狀表面向外運動,不然顆粒將以隨機方向運動.
- Spreading angle(散佈角度):隨機化大量顆粒的發射角度.設置爲0,則顆粒嚴格按照上一個設置的方向運動.
- Shape(形狀):發射顆粒的形狀,設置爲Sphere則用球體作爲幾何體.
- Shape radius(形狀半徑):這個參數和上面設置的形狀有關,當形狀設置爲球體時,此處可設置球體的半徑.某些形狀有兩個輸入區,其中一個有Δ符號,第一個輸入區是一個基礎值,後面是誤差值,每次產生顆粒時,將在基礎值的正負誤差範圍內產生隨機值.
Simulation attributes模擬屬性
- Life span(生命跨度):顆粒的存在時長,以秒爲單位.
- Linear velocity(線速度):設置發射出的顆粒的線速度,設置爲0時,則顆粒產生時沒有方向和速度.
- Angular velocity(角速度):設置發射出的顆粒的角速度,設置爲0時,則顆粒產生時不會旋轉.
- Acceleration(加速度):設置力來影響發射出的顆粒.設置爲(x: 0, y: -5, z: 0)就能夠模擬重力對顆粒的輕微做用.
- Speed factor(速度因子):顆粒模擬的速度因子,設置爲1則按正常速度運行.
- Stretch factor(拉伸因子):按運動方向對顆粒進行拉伸.設置爲0,則顆粒圖片不拉伸.
Image attributes圖片屬性
- Image(圖片):設置每一個顆粒渲染時的圖片,給顆粒一個最初的形狀.
- Color(顏色): 設置指定圖片的染色.設定爲White,則粒子系統基礎色爲白色.
- Animate color(動畫顏色):使顆粒在生命週期中不斷改變顏色.
- Color variation(顏色變異):設定顏色隨機變異值.
- Size(尺寸):設置顆粒的尺寸.
Image sequence attributes圖片序列屬性
- Initial frame(初始幀):設置第一個動畫序列的零起點畫面,第零幀對應的是網絡中左上角的圖片.使用單幀圖片時設置爲0.
- Frame rate(幀率):設置動畫的每秒速度.使用單幀圖片時設置爲0.
- Animation(動畫):設置動畫序列的行爲.Repeat重複循環,Clamp播放一次,Auto Reverse自動反轉,從頭至尾再返回開頭.使用單幀圖片時設置爲Repeat或其餘都可.
- Dimensions(尺寸):設置動畫風格的行數列數.使用單幀圖片時設置爲(Rows: 1, Columns: 1).
Rendering attributes渲染屬性
- Blending(混合):設置渲染器繪製顆粒時的混合模式,設置爲Alpha,將會使用圖片的alpha通道信息來決定透明度.
- Orientation(旋轉):設置爲Billboard screen-aligned,這樣圖片會永遠正面對着相機,就不會看到圖片是扁平的了.
- Sorting(排序):設置顆粒的渲染排序.這個屬性用來連合混合模式,影響如何應用混合模式.
- Lighting(燈光):控制是否受場景中燈光的影響.
Physics attributes物理屬性
- Affected by gravity(受重力影響):設置重力(引力)對顆粒的影響.
- Affected by physics fields(受物理場影響): 設置物理場(磁力等)對顆粒的影響.
- Die on Collision(碰撞後死亡):容許場景中的物理實體碰撞並摧毀粒子.
- Physics Properties(物理屬性):控制物理模擬中粒子物理行爲的基礎物理屬性,通常可保持默認.Mass(質量),bounce(彈性),friction(摩擦),damping(阻尼).
Life cycle attributes生命週期屬性
- Emission Duration(排放時長):控制發射器發射新粒子的時間長度.設置爲1,使粒子發射器設定總長度爲1秒 .
- Idle Duration(閒置時長):粒子系統循環發射一個特定排放時長後,將閒置一段時間,稱爲閒置時長,而後再重複循環.設置爲0,粒子系統將只發射一次.
- Looping(循環):設置粒子系統像爆炸同樣發射一次,仍是像火山同樣持續發射粒子.設置爲Loops continuously,就可讓發射器在被移除前一直髮射.
加載使用
建立好的粒子系統要如何加載使用?oop
let trail = SCNParticleSystem(named: "Trail.scnp", inDirectory: nil)!
geometryNode.addParticleSystem(trail)
複製代碼