[SceneKit專題-OC]4.Particle Systems粒子系統(tǒng)

說明

  • 本系列文章的學(xué)習(xí)首先要感謝史前圖騰的共享精神,在他的系列文章中有詳細(xì)的解釋,但是他的代碼都是Swift寫的.并且代碼的解釋比較少,

  • 在這里我提供了demo-OC版供大家參考和學(xué)習(xí),基礎(chǔ)知識會一一為大家解釋,但是OC版的demo只提供最終合集,方便一次到位減少打開工程的次數(shù)

  • demo地址:
    OC-地址
    swif-地址

    效果圖

2.Particle Systems粒子系統(tǒng).gif

SCNParticleSystem

粒子系統(tǒng)常用屬性:

  • Appearance(外觀):每一個顆粒都是一個小圖片或者一組圖片序列,可以調(diào)整尺寸,顏色,混合模式以及其他顆粒產(chǎn)生時的渲染參數(shù).
  • Life Span(生命跨度):粒子系統(tǒng)用particle emitter(粒子發(fā)射器)產(chǎn)生單獨的顆粒.生命跨度決定了粒子在場景中的可見時長.
  • Emitter behavior(發(fā)射器行為):可以按鈕發(fā)射器的參數(shù),比如粒子從哪里產(chǎn)生,產(chǎn)生速率.
  • Variation(變異):讓粒子系統(tǒng)產(chǎn)生隨機(jī)變異.
  • Movement(運動):可以調(diào)整顆粒產(chǎn)生后是怎么運動的.粒子系統(tǒng)使用了簡化版的物理模擬來加速性能,但顆粒仍然可以和物理引擎管理的對象進(jìn)行交互.

新建一個粒子系統(tǒng),xcode自帶了7種效果


Snip20170909_3.png

如下的星星效果

Untitled.gif

Emitter attributes發(fā)射器屬性

Emitter attributes發(fā)射器屬性
  • Birth rate(出生速率):控制顆粒的發(fā)射速率,設(shè)置為25,則每秒產(chǎn)生25個顆粒.
  • Warmup duration(暖場時長):渲染時的粒子產(chǎn)生提前量,可以用來一開始就讓整個屏幕直接充滿顆粒而無需從頭等待慢慢發(fā)射.
  • Location(位置):和形狀相關(guān),設(shè)置發(fā)射器從哪里發(fā)射顆粒.設(shè)置為Vertex,則顆粒將會從幾何體的頂點產(chǎn)生.
  • Emission space(散發(fā)空間):發(fā)射出的顆粒停留的空間.設(shè)置為World Space這樣顆粒將會被發(fā)射到世界坐標(biāo)系的空間中,而不是對象節(jié)點自己的本地坐標(biāo)系空間.
  • Direction mode(方向模式):控制產(chǎn)生的顆粒如何運動,設(shè)置為Constant,則顆粒放射狀從形狀表面向外運動,否則顆粒將以隨機(jī)方向運動.
  • Spreading angle(散布角度):隨機(jī)化大量顆粒的發(fā)射角度.設(shè)置為0,則顆粒嚴(yán)格按照上一個設(shè)置的方向運動.
  • Shape(形狀):發(fā)射顆粒的形狀,設(shè)置為Sphere則用球體做為幾何體.
  • Shape radius(形狀半徑):這個參數(shù)和上面設(shè)置的形狀有關(guān),當(dāng)形狀設(shè)置為球體時,此處可設(shè)置球體的半徑.某些形狀有兩個輸入?yún)^(qū),其中一個有Δ符號,第一個輸入?yún)^(qū)是一個基礎(chǔ)值,后面是偏差值,每次產(chǎn)生顆粒時,將在基礎(chǔ)值的正負(fù)偏差范圍內(nèi)產(chǎn)生隨機(jī)值.

Simulation attributes模擬屬性

Image attributes圖片屬性
  • Image(圖片):設(shè)置每個顆粒渲染時的圖片,給顆粒一個最初的形狀.
  • Color(顏色): 設(shè)置指定圖片的染色.設(shè)定為White,則粒子系統(tǒng)基礎(chǔ)色為白色.
  • Animate color(動畫顏色):使顆粒在生命周期中不斷改變顏色.
  • Color variation(顏色變異):設(shè)定顏色隨機(jī)變異值.
  • Size(尺寸):設(shè)置顆粒的尺寸.

Image sequence attributes圖片序列屬性

Image sequence attributes圖片序列屬性
  • Initial frame(初始幀):設(shè)置第一個動畫序列的零起點畫面,第零幀對應(yīng)的是網(wǎng)絡(luò)中左上角的圖片.使用單幀圖片時設(shè)置為0.
  • Frame rate(幀率):設(shè)置動畫的每秒速度.使用單幀圖片時設(shè)置為0.
  • Animation(動畫):設(shè)置動畫序列的行為.Repeat重復(fù)循環(huán),Clamp播放一次,Auto Reverse自動反轉(zhuǎn),從頭到尾再返回開頭.使用單幀圖片時設(shè)置為Repeat或其他均可.
  • Dimensions(尺寸):設(shè)置動畫風(fēng)格的行數(shù)列數(shù).使用單幀圖片時設(shè)置為(Rows: 1, Columns: 1).

Rendering attributes渲染屬性

Rendering attributes渲染屬性
  • Blending(混合):設(shè)置渲染器繪制顆粒時的混合模式,設(shè)置為Alpha,將會使用圖片的alpha通道信息來決定透明度.
  • Orientation(旋轉(zhuǎn)):設(shè)置為Billboard screen-aligned,這樣圖片會永遠(yuǎn)正面對著相機(jī),就不會看到圖片是扁平的了.
  • Sorting(排序):設(shè)置顆粒的渲染排序.這個屬性用來連合混合模式,影響如何應(yīng)用混合模式.
  • Lighting(燈光):控制是否受場景中燈光的影響.

Physics attributes物理屬性

Physics attributes物理屬性
  • Affected by gravity(受重力影響):設(shè)置重力(引力)對顆粒的影響.
  • Affected by physics fields(受物理場影響): 設(shè)置物理場(磁力等)對顆粒的影響.
  • Die on Collision(碰撞后死亡):允許場景中的物理實體碰撞并摧毀粒子.
  • Physics Properties(物理屬性):控制物理模擬中粒子物理行為的基礎(chǔ)物理屬性,一般可保持默認(rèn).Mass(質(zhì)量),bounce(彈性),friction(摩擦),damping(阻尼).

Life cycle attributes生命周期屬性

Life cycle attributes生命周期屬性
  • Emission Duration(排放時長):控制發(fā)射器發(fā)射新粒子的時間長度.設(shè)置為1,使粒子發(fā)射器設(shè)定總長度為1秒 .
  • Idle Duration(閑置時長):粒子系統(tǒng)循環(huán)發(fā)射一個特定排放時長后,將閑置一段時間,稱為閑置時長,然后再重復(fù)循環(huán).設(shè)置為0,粒子系統(tǒng)將只發(fā)射一次.
  • Looping(循環(huán)):設(shè)置粒子系統(tǒng)像爆炸一樣發(fā)射一次,還是像火山一樣持續(xù)發(fā)射粒子.設(shè)置為Loops continuously,就可以讓發(fā)射器在被移除前一直發(fā)射.
  • 核心代碼

/**
 創(chuàng)建粒子
 
 @param color 粒子的顏色
 @param geometry 粒子發(fā)射器
 @return
 */
- (SCNParticleSystem *)creatParticleSystemWithColor:(UIColor *)color geometry:(SCNGeometry *)geometry{
    
    
    // 創(chuàng)建粒子 直接使用系統(tǒng)的粒子 具體創(chuàng)建在筆記中有介紹
    SCNParticleSystem *particleSystem = [SCNParticleSystem particleSystemNamed:@"Rain.scnp" inDirectory:nil];
    
    // 設(shè)置粒子顏色 保證粒子的顏色與發(fā)射器幾何體的顏色是一致的
    particleSystem.particleColor = color;
    // 指定發(fā)射器的形狀 此處將傳來的幾何體作為粒子的發(fā)射器
    particleSystem.emitterShape = geometry;
    
    return particleSystem;
    
}


// 創(chuàng)建一個粒子
    SCNParticleSystem * parrticleSystem = [self creatParticleSystemWithColor:color geometry:geometer];
    //將該粒子 添加到節(jié)點上  有時候會發(fā)現(xiàn) 粒子未出現(xiàn)在屏幕中  可能的原因之一是 粒子的大小問題(我就遇到了)
    [geometerNode addParticleSystem:parrticleSystem];




最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末题篷,一起剝皮案震驚了整個濱河市酥筝,隨后出現(xiàn)的幾起案子忘闻,更是在濱河造成了極大的恐慌,老刑警劉巖嚣潜,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件竖哩,死亡現(xiàn)場離奇詭異赂毯,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)萍丐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門轩端,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人逝变,你說我怎么就攤上這事基茵。” “怎么了壳影?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵拱层,是天一觀的道長。 經(jīng)常有香客問我宴咧,道長根灯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任悠汽,我火速辦了婚禮箱吕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘柿冲。我一直安慰自己茬高,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布假抄。 她就那樣靜靜地躺著怎栽,像睡著了一般丽猬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上熏瞄,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天脚祟,我揣著相機(jī)與錄音,去河邊找鬼强饮。 笑死由桌,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的邮丰。 我是一名探鬼主播行您,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼剪廉!你這毒婦竟也來了娃循?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤斗蒋,失蹤者是張志新(化名)和其女友劉穎捌斧,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泉沾,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡捞蚂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了跷究。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洞难。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖揭朝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情色冀,我是刑警寧澤潭袱,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站锋恬,受9級特大地震影響屯换,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜与学,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一彤悔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧索守,春花似錦晕窑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽敞斋。三九已至,卻和暖如春疾牲,著一層夾襖步出監(jiān)牢的瞬間植捎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工阳柔, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留焰枢,地道東北人。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓舌剂,卻偏偏與公主長得像济锄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子架诞,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 說明 本系列文章是對<3D Apple Games by Tutorials>一書的學(xué)習(xí)記錄和體會此書對應(yīng)的代碼地...
    蘋果API搬運工閱讀 2,755評論 1 2
  • 官網(wǎng)中文版 1 簡易天空替換## 技能:線性擦除拟淮,追蹤運動,用顏色鍵K出人物谴忧,用色彩曲線調(diào)色很泊。(1)天空圖片素材放...
    朱細(xì)細(xì)閱讀 10,674評論 4 82
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,732評論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件沾谓、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,058評論 4 62
  • 春風(fēng)暖 夏風(fēng)潮 秋風(fēng)瑟 冬風(fēng)寒 暖暖 潮潮 瑟瑟 寒寒 交替 好一個春夏秋冬 相貌 你說春的嫵媚 我說夏的妖嬈 你...
    自在的空靈閱讀 287評論 0 2