用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

櫻花兔發表於2021-03-01
用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

2020 是真的坎坷的一年,不論是個人或者國家,經歷過艱難歲月,才明白普通可貴。

拋開悲傷,這一年我學了很多,也悟了很多,知識也好,技能也罷;學習不僅是為了充實自己,還是為了讓自己能看到並看懂這個世界上的更多事物。

對啦,第一次跨國合作,Emmm,也跨沒多遠,就在日本,居然就和Keijiro大神合作了,太幸運了(ㄒoㄒ)

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

哈哈~ 顯擺一下,收!

今天呢,我就來說一下,Unity 裡製作寫實渲染,畫面實現上需要注意的一些問題,也是我實際碰到的一些問題~

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

說畫面實現之前呢,我先來簡單介紹一下渲染原理,目前的實時渲染引擎都還是使用光柵化渲染,有小夥伴問了,什麼是光柵化渲染,目前呢,聽得比較多的應該是這兩種:光線追蹤渲染和光柵化渲染。

  • 光線追蹤(ray tracing):光源 --> 物體表面 --> 反射折射….xN次 --> 攝像機
  • 光柵化(rasterization):光源 --> 物體表面 --> 攝像機

光線追蹤本質上是“讓光線自主決定一切”, 而不是任何模擬,逼近,就是完全真實的光線彈射,一般呢,在影視合成啊,影視動畫呀,室內設計等等這些領域中用的比較多,由於計算太過於複雜呢,完整的光線追蹤演算法還只能是離線渲染,目前的技術呢,還很難將光線追蹤的所有特性都實時性~~不過相信這個技術很快就能完全攻破的。

好了,再回到光柵化,什麼是“光柵化”呢?為了效能,所以預設光線只反射一次,從而可以把反射計算整個放在二維影像空間裡做,二維影像就是所謂的“光柵”。

比如下面最好說明光柵化渲染的栗子,一盞聚光燈下去,光線在角色身上沒有任何的反射。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

總之呢,光柵化的光照渲染就是不真實的。但是不真實也無所謂啦,反而給小夥伴們提供了很大的藝術創作空間,來形成自己的獨特的風格化渲染。

畫面的美感,更多是感性氣氛上的捕捉、情感上的共鳴。

當然了,小夥伴也能靠自己對於燈光的敏感程度,模擬出營造的真實感。

總結一下呢,相比光線追蹤呢,光柵化渲染想要逼近現實呢,是需要作出大量嘗試和模擬的。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

最快的接近光線追蹤效果的方法是烘焙啦,對於一些小房間或者一些不大的小場景,用這種方面可以很容易的就達到光線追蹤的渲染效果。

這種方法呢也有缺點,太過於靜態,因為光照貼圖是烘培靜態的,所以烘焙過後的所有的物件是不能移動的,還有就是,比如場景大了烘焙的效率就不行啦,光照貼圖過多過大都會影響實時渲染的效能的,然後呢,隨著物體的數量增加,彈射次數的增加,烘焙的時間也是成倍的增加。

反正我是...沒有找到方法烘焙成功過大場景 /(ㄒoㄒ)/~~

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

我想了一下,我玩過的有印象的,模擬出很好看的真實光照的遊戲。

  • 刺客信條:大革命
  • 荒野大鏢客2
  • 教團:1886

當然啦,應該還有很多,我舉的這幾個栗子是我印象比較深刻的,這些遊戲應該都沒有用烘焙光照貼圖模擬的吧。

是的吧,看看人家的大神~雖然光柵化這個技術並不真實,但是還是依靠這些大神們強大的圖形學技術還原出了媲美光線追蹤渲染的實時畫面效果。

當然了,Unity HDRP 中也是很多黑科技的,來最大程度還原光線追蹤效果,這個我之前寫的文章有介紹哦~

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

Emmmm,好像跑題了。

迴歸主題,我就來自我總結一下,當然啦也只是我個人的經驗哈,Unity引擎裡光柵化實時渲染的專案,畫面實現上需要注意的一些問題~

首先呢,畫面的組成,幾乎每一環都是密不可分的,環環相扣的,我先來簡化一下,大概的有這麼些,當然啦,肯定不止這麼些,我這說的是能夠實際形成畫素的,感性層面的東東就先不介紹啦:

角色,環境,動畫,特效,著色器,後期

但是呢,能夠在畫面中構成畫素的,應該就是角色,環境,動畫,特效這四個了,再配合著色器和後期,讓畫面中的這些畫素更酷一些。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

好了,重點來了。想了想,重點只有兩個字:“整體”,畫面就是整體,由各個環節組合形成的整體,無論是我接下來說的角色表現,場景的搭建,動畫的輔助,特效的配合等等之類的,都離不開這兩個字。

整體這個詞怎麼定義呢?

就好比是一桶水,以上的每一個部分都是一塊木板,組成了一個木桶,而桶裡的水呢,就是視覺上的愉悅感,只要有一塊木板斷了,那都會對這個木桶能裝多少水造成致命的打擊的,無論其他的板子的高度有多高。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

嗯嗯,大概這個樣子,好了,我就用我之前做的一個視訊來舉個例子,來說一下我遇到的一些問題~

B站視訊地址:

https://www.bilibili.com/video/BV1C54y1r71X

那我就剛才說的這幾個逐一的說一下,我遇到的一些問題。

角色、環境、動畫、特效、著色器、後期

角色

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

角色嘛,如果想要獲得玩家的喜愛和認可,要不就做的美美的,要不呢,就極具個性,這裡呢,涉及到了角色概念設計的問題,要說的就多啦,我這裡就先不談這個啦。

我來說下我遇到的問題:

這應該算是個光柵化渲染的技術難題,我是希望我的角色是亞洲面孔的。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

但是呢,亞洲面孔的角色在引擎裡面其實是很難表現的,因為亞洲的五官是不太立體的,無論是正面還是側面,顯得很平。

尤其是距離攝像機 5-10 米的距離,Mipmap 之後,人物的五官的貼圖細節會抹的幾乎沒有,同時嘞,不那麼立體的臉在光照投影后,很容易就會出現漏光啊,或者呢,出現一些很奇怪的陰影區域,這些問題都會造成角色表現出來很醜的。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

那麼問題來了,怎麼解決嘞。

和光線追蹤靜幀渲染不同,實時渲染下是有各種氛圍以及角度,得整體的審視這個角色,這個角色有可能出現在室內,有可能出現在室外,可能白天也可能是在黑夜,有可能攝像機離的很近也有可能離得很遠,所以呢,做的時候不要只盯著一個角度,需要全方位的看待問題,在製作的時候就會產生一些約束。

角色的貼圖得滿足物理材質,需要在不同的場景中的不同光照下都自然
角色的模型得滿足不同距離下都輪廓清晰,好看

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

好啦,有了這些約束,說一下解決辦法。

我自己想到的解決辦法呢,就是可以稍微風格化一下角色。

01  美妝

物理材質嘛,那就用物理的解決辦法,鼻影,眼影,眼線,脣彩,閃粉,腮紅,眉線等等,對面部、五官及其他部位增強立體感,調整形色,掩飾缺陷。那要怎麼畫呢,那平時化妝怎麼畫就怎麼畫,不會畫可以參考一下視訊。哈哈,當然了,妝的材質感也是需要做出來的,比如口紅,有水潤的脣蜜,也有啞色的脣彩,化妝嘛,主要解決的問題呢,就是中遠距離 Mipmap 後,關鍵部位的貼圖細節被抹掉的問題,以及填補亞洲面孔五官不立體的缺陷

02  整容

誇張一下角色五官比例,還可以加入雙眼皮,臥蠶這些有明顯模型結構的特徵,同時加大眼睛的比例,眼睛是心靈的視窗嘛,大部人看人,應該是從眼睛開始看的,所以眼睛這一塊尤為重要,對了,再帶個美瞳,完美!!

03  補光

給角色設定單獨的燈光層,對他進行單獨的微弱的補光,這個呢是解決有些場景的光照角度不太好,會把人物照射的很醜,補光可以緩解一下這個問題。

哈哈,這就是我目前總結出來的方式,用來彌補亞洲人的渲染缺陷。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

接下來呢,可能還有個問題,就是頭髮吧,頭髮的話,我想了一下,排序問題應該有很多小夥伴碰到過的,我自己是用手動排序的方式,因為 HDRP 不支援多 pass,所以呢,我是採用兩層頭髮模型來解決頭髮渲染排序的問題。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

小技巧:把角色打組成為 prefab 的時候,模型一定要作為 prefab 的子物體哦,千萬不要直接把 SkiningMesh 模型直接存成 prefab,這樣做的話是有好處的,如果模型有調整或者模型上的指令碼有刪減,Prefab 都會正確更新的。

環境

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

環境呢,應該可以拆解為場景以及光照吧,我就統稱為環境吧,我自己覺得哈,環境對於畫面來說呢,是非常的重要,比如,隨便在畫面某一幀定格,環境佔用畫面的比例應該至少是 60% 以上的,如果環境上有任何的不協調,就會立馬打斷沉浸感,這是很致命的。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

環境是角色最好的參照物,能夠沉浸在扮演這個角色中,如果製作的素材和世界觀有契合的話呢,配合文字或者動畫,就能夠很好的帶入到這個世界觀之中。

在關卡設計上呢,環境也可以很好的作為一個引導作用,比如使用燈光構成的層次呢,可以很好的引導玩家的視覺,防止迷路什麼的。

同時呢,環境也是心情以及節奏的對映,有危險氣息的,輕鬆愉悅的等等,配合音樂以及特效,你就能瞬間被帶入到這種情境中。

當然啦,一個想讓別人印象深刻過目不忘的環境,靠這幾個是不夠的,這個我最近有獲得了一些心得,這個我之後再說吧,這裡就先不說啦~

好啦,剛才稍微的介紹了一下環境的作用,我來說一下我遇到的環境搭建的問題:

01  比例

環境在搭建中,一定需要有個角色在場景中作為參照,以確保環境的比例正確,不會出現一個比人還大的可樂瓶啊什麼的,哈哈~我自己喜歡建立一個 1.6 米的 Cube 作為參照物,比例是非常重要的,因為人對於一些已知事物的感知是非常敏感,比如草,瓶子,磚塊,桌子什麼的,如果場景中有這些物體,但是比例失調的話,瞬間就能感受出來。

02   光照

應該沒有人拍晚上的廬山吧,一片黑漆漆的,再好的風景,光照不行,那都不好看的。如何構建出好看的光照呢,首先吧,有自發光貼圖的物體是需要有光源的,場景中有些明確知道是光源的物體,得需要為他們打燈,比如廣告牌鴨,探照燈之類的這些物體,但是嘞,我想說的是,這些需要反著來。為什麼這樣說呢,還是回到“整體”兩個字,首先看整體畫面,需要先思考想一想,想要營造出怎樣的冷暖對比呢?哪些位置需要用燈光來營造層次感呢?想清楚了之後呢,先開始擺光,再根據這些光擺能夠發出這些燈光的物體。這樣就既好看也不違和了~~

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

03  層次

好看的畫面是需要層次關係的,燈光的明暗冷暖是可以很好的勾勒出畫面的層次的,當然了,用 Unity HDRP 一些現成的氛圍元件,就能很好的勾勒出畫面的層次,比如 Fog,Density Volume 這些,是劃分層次最好的工具,牢牢的把我想要突出的視覺中心控制在我想要表達的位置

04  材質

寫實渲染,那一定要把材質表現到位的,比如金屬就是金屬,水泥地就是水泥地,也就是說模型貼圖的金屬度和粗糙度是一個正確的顏色,我想了想,這應該就是大家所謂的畫質啦,大部分人對於美感的概念是模糊的,但是每個人對於材質是有刻板印象的,他會用他的常識來判斷材質,所以呢,材質的正確性是蠻重要的~

05  整體

一定要考慮到整體性哦,不要出現:環境搭建完了,看著還行,但是把角色放在裡面,直接就過曝啊,太黑啊,比例不正確啊這些問題,在搭建的時候就需要不斷的審視和測試,角色在環境中是否自然啊,燈光的強度值,照射在角色身上是否合適啊,比例是否有違和感啊等等,反正呢,從整體出發,全域性調整,最終調整平衡即可。

如果是遊戲環境的話,面對不同的型別,涉及到關卡上麼,需要考慮的問題就更加複雜啦,這裡就先不說啦。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

小技巧:物件一定要作為 prefab 在場景中擺放哦,因為後面肯定還會有調整的,比如 LOD 距離,碰撞層等等之類的,如果沒有作為 prefab 的話,那麼批量修改會非常的麻煩。

動畫

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

動畫是敘事最好的表達方式,也是加強畫面感的最好工具!

不只是角色動畫啊,場景中有一些動態的物體,也是對於氣氛的烘托是加分的,比如說,來往的車輛,行人,搖曳的電線等等,是能夠加強畫面的擬真度的。

當然嘍,動畫也是有節奏和層次的,一個畫面內,也需要整體的看一下效果的,不能說所有的物體都在動,那樣的話,會沒有視覺重心,動靜結合,同時再配合鏡頭,達到最好的畫面表現~~

比如,一個行走動畫配合鏡頭動畫,形成一個逆行者的畫面。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

好啦,說一下角色的動畫。

角色模擬動畫製作上是有難度的,尤其是人的行為動畫上。

因為人對於人真的是太熟悉了,一段行為動畫,只要有一絲絲的節奏問題和肢體不協調,這種誤差立馬能感覺出來的。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

當然啦,如今有很多的技術手段來解決這個問題,比如說,動作捕捉,對於這類的動畫實現就能幫助到很多,節約很多的時間成本。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

那麼問題來了,動作捕捉的動畫也有侷限性的,畢竟是兩個空間。

首先呢,捕捉的環境是那肯定是完全平整的地面,但是虛擬的環境呢,那就說不定了,地上有可能有臺階,有斜坡之類的,那捕捉的動畫那就一定會穿幫了的。

其次呢,在實現中,角色的面朝方向或者眼睛的方向可能會不太準確,可能會根據鏡頭的需要,這些方面會有調整,包括角色的姿勢也會有調整。

還有呢,動捕的演員和虛擬的角色身材有誤差,可能虛擬的角色更高一些,手腳更長一些,肩寬胯寬不一致之類的。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

那這個問題怎麼解決呢;

啊哈,Unity 中有很多現成的工具來解決這個問題的。

比如呢,模型元件自帶的 Muscles setting 可以調整骨骼的伸展幅度,還有就是像 Animation Rigging,Final IK 等等之類的反向動力學元件,都能夠很方便的解決這些問題。

工具的功能我這裡就不詳細介紹啦,有很多現成的教程的。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

像裙襬呀,頭髮這些的物理的模擬模擬動畫呢,手動 K 幀是不太現實的。

那怎麼辦呢?Unity 中也有很多現成的工具來解決這類的問題的,像 Magica Cloth,Dynamic bone 之類的元件,是很方便解決剛說的這些物理模擬的問題的。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

當然了,還有一些問題可能需要解決起來時間會很久,比如這個下車的動畫,如果角色要完全的匹配下車,那就需要很長的時間來製作這段動畫了,我覺得划不來,就直接用鏡頭規避掉了。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

小技巧:Skinningmesh 記得將 Update when offscreen 勾上哦,以防骨骼有位移時,mesh 不會被攝像機剔除掉。

特效

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

特效嘛,營造視覺新鮮感,最大的作用應該是輔助視覺以及營造氛圍這兩種吧?

輔助視覺的特效。

這類的特效,出現的時候,一般都是附和動畫啊模型一起出現的,節奏感很強,視覺衝擊力很強,如果配合著一些後期效果,很容易就將視線吸引住了。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

製作上呢,怎麼說呢,是非常需要整體思考的,節奏啊,明暗啊,特別是特效的明暗,需要很巧妙的拿捏住的,太暗的話,效果出不來,太亮的話,視覺不適,而且會破壞整體畫面的。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

營造氛圍的特效。

一般就是指環境的特效啦,下雨啊,落葉啊這些,主要的作用就是豐富視覺啦,進一步的加強代入感和畫面豐富度。

如果要做天氣效果的話,也和特效密不可分的,再配合一些匹配的shader效果,就很容易營造出做出下雨,下雪天氣什麼的。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

在特效的製作上,有一些我遇到的問題我總結了一下:

01  平衡

為了防止特效的顏色過曝或者過暗呢,在製作的時候呢,最好是給特效顏色的 HDR 值定一個範圍,同時呢,每個環境的 Post Processing 上的一些可能會影響顏色的後期效果,比如 Bloom,Color Adjustments,Exposure 這些的,給的值呢,幅度最好不要相差太大了,不然就會出現:把特效放在這個場景效果好棒,但是在放進另一個場景就黑到不行,或者爆到眼睛都睜不開。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

02  穿插

目前特效模擬流體類的效果,都是用片的做法制作的,節省效能的同時呢,也能偽造出流體的感覺,所以特效的 shader 製作上呢,一定要考慮到特效的排序以及模型穿插的問題,開啟 Soft particle 可以解決這些問題,如果是自定義 Shader 的話呢,用深度剪裁一下貼圖的 Alpha 就好啦。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

小技巧:Particle System 特效製作的時候可以嘗試使用 Sub Emitters,Trails,Custom Data 這些功能,可以做出意想不到的效果哦。

著色器

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

著色器(shader)還是很關鍵的啦,最大的作用就是輔助畫面,比如之前說到的一個詞“畫質”,大部分人對於美感是沒有概念的,而對一個材質的表現狀態,他是非常熟悉的,一定要確保材質的物理正確性。

嗯哼,shader 的目的呢,就是實現這些材質,模擬出這個物體該有的材質以及模擬出這個氛圍下材質該有的表現狀態,對於畫質的提升呢,還有情景帶入感,那都是有不小的幫助呢。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

Emmm,遇到的問題應該沒有什麼,大部分的標準化 shader 效果實現都有現成的案例。

怎麼說嘞,對一些標準化的材質實現,是有明確天花板的。

想要表現出高度,製作的模型啊貼圖啊這些精度不斷的提高效果才是可能性。

但是呢,想製作一些別出心裁的效果,那就可以多嘗試一下啦,把各種屬性的結合,做出一些炫酷的效果,哈哈,那就發揮你的想象空間吧,當然了,這些視覺性的 shader,也是需要考慮畫面的整體性的,不然隨便地方什麼都用,破壞整體的視覺層次。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

小技巧:使用 Shader Graph 製作 shader 的話,可以做一些通用的 sub graph 來節約時間哦。

後期

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

後期的話,對於畫面的效果提升,尤其是彌補光柵化渲染的一些缺陷,是非常重要的哦。

比如說,Bloom,AO,Screen Space Reflection 這些,加入這些效果,可以離光線追蹤的效果更近一些~

當然了,也可以自己新增一些自定義的後期(Custom Post Process),比如說,我這個環境,就新增螢幕雨水效果和 Glith 朋克效果,因為下雨嘛,鏡頭上肯定會有水珠掛在上面什麼的,Glith 也會比較符合朋克的定義,增強了我想要的氛圍代入感。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

但是嘞,還是有一些問題需要重點注意的。

後期效果的有些引數是不能過於誇大的給值的,因為後期是屬於螢幕效果,是渲染在最上層的,所有的你之前製作的角色呀,場景呀,特效呀,這些畫素,都需要齊刷刷的再讓這些後期效果疊一遍的。

所以呢,在調引數的時候,一定要整體、全域性地思考一下。

尤其是多場景,燈光的引數不同,Post Process 也不同的情況下,有些引數一定要設範圍的,如果不這樣呢,那肯定就會出現這個情況:這個角色這個特效怎麼在這個環境下還行,在另一個環境裡怎麼就這麼醜嘞。

用 Unity 製作寫實渲染,畫面實現上需要注意的一些問題

小技巧:後期效果可以試試Local模式,可以營造出不一樣的感覺的哦。

好啦,差不多寫完啦,感動了,您居然看完了(。^▽^)

我總結一下重點哈。

整體性思維,同樣的適用於製作畫面上,將畫面結構拆解成幾個環,每一個環都會影響後一環,環環相扣,需要小夥伴們整體性的,全域性性的思考每一環。

還是舉之前舉過的栗子哈,畫面呢,本身是一個大整體也是一個大木桶,每個環節呢,是塊小木塊也是一個小整體,從每個小整體出發,整個桶子能夠延伸到怎樣的高度,以及呢,裡面能夠裝多少水,就靠你自己啦。


來源:Unity官方平臺
原文:https://mp.weixin.qq.com/s/Z7pbIsc4T09WkaOILvFuJw

相關文章