CG仿真及3D特效編程教程(三)| 粒子特效系統
回顧
上一期分享中,給大家介紹了運動學基礎及代碼實現了正向運動學如何模擬實現,內容相信對大家來說有些枯燥乏味,但是這就是3D編程,復雜特效的基礎,比如逆向運動學被廣泛用在模型IK操作中,還是希望如果對這塊感興趣的開發(fā)者小伙伴能夠有些幫助。
這一期講會給大家講述粒子系統,這一章會比較簡單易懂,也沒有非常復雜的內容。
粒子系統表示3D計算機圖形學中模擬一些特定的現象的技術,而這些現象用其它傳統的渲染技術難以實現真實感的物理運動規(guī)律。經常使用粒子系統模擬的現象有火、爆炸、煙、水流、火花、落葉、云、霧、雪、塵、流星尾跡或者象發(fā)光軌跡這樣的抽象視覺效果等,甚至還有毛發(fā)。

粒子系統生命周期主要是從隨機粒子構造器到粒子發(fā)射器,到渲染,更新再渲染,以此往復。

發(fā)射器會定義每個粒子的創(chuàng)建時間、銷毀時間、初始位置、初始速度、初始顏色、初始透明度、初始大小等信息。
通過以下代碼實現為發(fā)射器創(chuàng)建隨機值:
到渲染顯示的時候方法就很多了,從最簡單的point,例如:
到Vertex Buffer Objects方式都可以進行display。
下面是不同繪制物體顯示出的粒子:


接下來就給大家看下用代碼生成的粒子系統的一些例子,本期就不做過多介紹內容,相關示例代碼可以關注后留言。
點和軌跡形成的粒子系統:

100百萬不同色彩的粒子系統,通過shader實現:

關于用shader其實就是使用的GPU資源,也就是所謂的基于GPU的粒子,對于大量的頂點或者變換還是GPU更節(jié)省資源,充分發(fā)揮GPU的性能,感興趣的可以詳細了解下。
本期最后給大家介紹下我們虹圖美顏SDK、3D Avatar SDK已經在接口中加入了開發(fā)者自選CPU或GPU計算的功能,開發(fā)者能夠更加貼合自己平臺用戶的硬件情況自適應性能,將極致精致、又流暢的效果呈現給用戶。
在接下來的一章中,我們將介紹關于功能性動效(Functional Animation),物理碰撞(Collision Physics),碰撞檢測(Collision Detection)等方面的內容,敬請期待~