1. 程式人生 > >【原創】點點滑鼠在Unity3D中實現準電影級鏡頭感渲染效果

【原創】點點滑鼠在Unity3D中實現準電影級鏡頭感渲染效果

學習和使用Unity3D也有個把月的時間了,得益於十多年來對3D圖形演算法及遊戲程式設計的不懈努力學習,上手Unity3D我居然只用了1晚的時間,這不是誇張的說法。我只能用一句話來形容我當時的感覺:眾裡尋他千百度,驀然回首,那人卻在,燈火闌珊處。

如果你問我最好的3D遊戲引擎是什麼,我不一定能給你滿意的回答,這就像你問我世界上誰最美?什麼程式語言最好一樣,我基本沒法給你答案,但是如果你問我上手最快最簡單易用的引擎是哪個?我一定會給你推薦Unity3D。當然我也試著學用過Unreal引擎,但是礙於沒找到好的教程或視訊,我一直還連Unreal的門都沒入。

使用了這麼久,期間也做了幾個小場景的不算遊戲的實驗品吧,感覺是太容易了,因此我想一定要將這個簡單易用的引擎推薦給大家,當然很多人已經在這樣做了,在這裡我只是將我的一些心得體會以博文的方式不定期的分享給大家,算是為Unity3D引擎的發揚光大添磚加瓦吧。

當今已經有很多關於Unity3D的圖書、教程、視訊等等學習資料供大家參考了,因此在寫Unity3D的博文時,我就不想在按照原來那種從入門到精通再到放棄的套路來寫了,我想更揮灑自如一些,純粹跟著感覺走,哪裡讓我感覺舒服,我就寫哪裡。

今天我要為大家分享的就是如何快速的在Unity3D中實現如光暈、動態模糊、景深等等電影級鏡頭渲染感的方法,主要就是因為我對3D渲染畫質的近乎變態的追求所致,就好像農民伯伯愛大米一樣,這需要理由嗎?

其實在Unity3D中不乏各種特效渲染元件,要做到電影級渲染,你要做的只是點點滑鼠即可,當然前提是你得有一塊好顯示卡,並且遺憾的是有些效果還不能放到移動平臺上如iOS和Andriod上。ok,不要在意這些細節,給大家好看才是王道!當然這說起來容易,做起來可能就需要的是你深厚的基本功了,當然我假設你對當代圖形渲染的前沿演算法至少是理論已經有了相當深厚的瞭解,所以不要想在這裡搞明白為什麼,那將是其他文章中的內容了,這篇文章中我只會告訴你應該幹什麼。

那麼接下來我們就閒言碎語不要講,直奔第一個主題,光暈!

首先,你自己先做一個簡單的場景,就是造造山,開開路,種種樹,放放人物,並且架好你的攝像機,這些你應該都會了,那麼我做的場景像下面這樣:

接下來,就是選中場景中的平行光源,然後在Inspector面板中點選Flare選項,在彈出的選擇框中選擇50mmZoom鏡頭即可,操作如下圖所示:

然後讓攝像機對準太陽就可以看到下面的效果了:

感覺還可以吧?怎麼樣操作是So easy吧?

接下來我們來實現景深和動態模糊,首先選中場景中的主攝像機,然後新增元件->Image Effects->Blur->Blur(Optimized),具體操作像下圖這樣:

接著用同樣的操作步驟新增景深元件,如下圖所示:

新增完成後,應該可以再Inspector 面板中看到攝像機多了兩個指令碼元件,如下圖:

同時設定圖中紅色箭頭所指的屬性,指向你要聚焦的遊戲物件,在我的場景中就是那個Unity3D自帶的AI人體物件,當然為了更好的看效果,建議你將AI人體物件的目標設定為你的攝像機。點選執行,可以看到如下的效果:

怎麼樣是不是鏡頭感十足,當然不要在意這個沒有顏色的人體物件,因為我也實在想找個美女的模型,可惜沒找到好看的,免費的都不好看,只能拿這個將就了。鄭重宣告本人不是美工,畫畫都不會。

在接下來就是讓我們看看如何實現HDR(高動態範圍光照圖)了,這個在Unreal引擎的最新大作中作為高階效果來宣傳,作為愛嚐鮮的我當然不會放過這個效果,於是也在Unity3D中試了試,原來也是So easy!首先,同樣也是先選中場景中的主攝像機,然後在Inspector面板中點選Allow HDR屬性,打鉤,如下圖:

為了最真實的體驗HDR效果,可以構造一個類似的黑夜場景(把光源調暗,或者僅放置一個點光源,並調暗),最終執行後效果如下:

怎麼樣像不像人類登陸外星?

當然之前的白天的效果圖中也是打開了HDR,你可以自己分別開啟和關閉HDR後執行看下對比之後的效果。體驗一下HDR帶來怎樣的畫質改善。

最終,這些效果的實現,讓我體會到一個高度封裝的3D引擎,帶給我們的滿滿都是驚喜。想象如果直接使用C++、OpenGL/D3D、及Shader來實現同樣的效果,需要付出怎樣的艱辛,而這一切在Unity3D中只需要點點滑鼠就可以做到,同時你基本不用去考慮光暈演算法是怎樣,怎麼寫Shader等問題,也不需要去實際瞭解Blur(模糊)是怎麼回事,只需要有個基本概念即可。

當然這不是說你就不需要去學習這些了,反過來其實可以將這些看做是啟發你濃厚興趣的起點,你反倒需要繼續深入鑽研學習這些酷炫的渲染效果的演算法知識以及實現方法,這才是你最終成長為資深Unity3D開發專家的不二法門。