特效是遊戲中增加互動印象的很重要一方面,乙個好的特效系統能夠很大程度上提高遊戲的特色。這尤其體現在動作遊戲上,比如god of war,ninja gaiden等系列中的特效效果就很出彩。這裡簡單總結一下自己所了解的一些遊戲中較為常見的特效:
公告板公告板效果就是直接使用公告板來渲染出一定的特殊效果。常規公告板的面方向始終與視線的方向垂直,但是也可以增加其屬性設定為不必與視線垂直,此時即相當於在某些位置繪製乙個面形出來,這樣也可以完成一些特殊的效果,比如靜止面上的紋理動畫等(這需要引擎支援動態的紋理,比如gif等;或是幀貼圖的合併與提取等)。 粒子
粒子特效中引擎中最為常見也是必須的一種效果,包括各種灰塵、火焰、煙霧等效果的實現均是由粒子系統來完成。粒子系統是一種過程模型,將造型與動畫結合為乙個整體,用單個隨時間變化的粒子作為場景的基本元素。每個粒子都有自己的生命週期,比如「出生」、"生長"、「死亡」等基本屬性。在實現過程中需要採用隨機的方法來實現粒子的不確定性,從而增加更為真實的模擬。每個粒子本身的實現又是用公告板的渲染方式並結合不同的alpha操作來完成。
貼花效果嚴格意義上來說可以並不完全屬於特效的範疇,比如可能在場景編輯器中同樣需要,因為其不是動態變化的而屬於靜態場景的一部分。當前的貼花實現既可以用基於前向渲染的傳統方式來實現,同樣也可以用後處理的方式來實現,不過這就要求引擎使用了延遲渲染的架構,具體差異就跟引擎的細節相關了(之前也有簡單介紹的實現)。貼花在遊戲中主要使用在一些動態產生的影象或痕跡的表面上,比如射擊遊戲中的彈孔、走在雪地上的腳印、因攻擊而濺到地面上的血跡等各種,這些實現通常也需要與引擎中的邏輯部分相結合從而在特定的場合特定的時間上合理產生以增強表面力。比如下圖中就是ninja gaiden中的一些decal使用效果(注意角色身上以及地面上的血漬):
殘影主要用來表現角色的快速移動效果,而其實現方式既可以用後處理方式也可以用非後處理方式。一般來說使用前向的基於幾何實體的實現方式可能得到更好的效果。在後處理實現中主要是利用後備的累積buffer來實現基於螢幕空間的角色累積,其優點是實現效率較高,畢竟是基於影象空間的,但也有乙個明顯的缺點就是效果不是太好,特別是當攝像機的位置變化較為劇烈時,另外還有就是使用這種方式的話累積出的效果的材質可控性較差,變化不太豐富;另外乙個方式就是前向的基於模型渲染的實現,這個通常是將模型進行虛擬的複製然後再下一幀進行還原繪製,這種方法不會受camera變化的影響,而且由於是直接進行幾何體的渲染因而材質的控制就為簡單,也使用其效果較好。另外在這種方法中也可以將其與其它的特效相結合,比如使用拖尾對多個殘影間進行連線可以得到另外一種更加炫麗的效果。這種效果在最新的ninja gaiden3中用得也挺多的,效果也很好看(主角快速攻擊時身後的藍色運動痕跡)
螢幕特效
螢幕特效一般是在後處理過程中施加的乙個基於影象空間的用來模擬攝像機上一些效果的操作,比如fps遊戲中彈螢幕眩暈、動作遊戲中的螢幕濺血等。這個操作的實現其實還是很簡單的,只需在後得理過程中增加個目標貼圖的alpha混合即可,但是比較重要的是控制其基於alpah的漸變、同引擎中邏輯相結合的觸發以及各種狀態下觸發的隨機性控制等,而且還需要美工製作出不錯的螢幕以及alpha通道貼圖來供使用。比如下圖中的ninja gaiden中主角攻擊後敵人的血漬螢幕噴濺的效果:
特效在引擎中的組織與使用的一些注意點:
上述簡單介紹了遊戲中一些常見特效的實現,原理都比較簡單實現起來也不複雜,但最重要的是將這些效果整合到編輯器中,並提供關鍵屬性的調節介面以供美工來進行使用與設計,這樣才能在遊戲中得到預期的效果。當然,不管何種型別的遊戲想要提高體驗效果特效是很重要的一部分,除了上述還有很多,有些情況下還需要根據美工人員的需求特別設計相應的實現,這就需要對具體問題進行具體分析。
2D遊戲中的技能特效
在我們的2d圖形遊戲中不可缺少大量的光影 技能特效,像diablo ii中的魔法效果的實現,幸好我們擁有強大的cpu來為我們實現alpha混合與色彩飽和混合,接下來讓我們來討論一下如何用這些方法來實現我們遊戲中所需要的技能特效。一 alpha混合特效 alpha混合可以讓我們讓我們將一張圖象按一定程...
2D遊戲中的技能特效
在我們的2d圖形遊戲中不可缺少大量的光影 技能特效,像diablo ii中的魔法效果的實現,幸好我們擁有強大的cpu來為我們實現alpha混合與色彩飽和混合,接下來讓我們來討論一下如何用這些方法來實現我們遊戲中所需要的技能特效。一 alpha混合特效 alpha混合可以讓我們讓我們將一張圖象按一定程...
關於遊戲中的材質系統
材質,這個詞有各行各業都有自己的解釋。美工把物體貼圖和物體顏色,高光等統稱為材質。d3d和opengl這樣的圖形介面則把物體表面貼圖單獨叫做紋理,而把漫反射,高光等叫做材質。而在遊戲引擎或圖形引擎中提到的材質,則與此不同。引擎中提到的材質不僅上面的的內容。引擎中所謂的材質,是指物體在渲染時一系列的狀...