Unity5場景應該如何烘焙?

光照參數是這樣的,場景有一個Directional Light 和一個Point Light,類型都是Mixed;有三個物體,都已經勾選了Static,然而烘焙後的效果如下

首先物體的影子太淡了,另外車的貼圖不知道怎麼回事會變成這樣。我研究過一些烘焙的資料,但是也沒說會出現這種情況,那麼Unity5要怎麼烘焙才可以達到號的效果?比如物體陰影能夠清晰一點,物體表面貼圖能夠正常


轉載請註明出處。http://www.ixulin.com

原文鏈接: 談光照圖烘焙技巧 - 徐小廚 | 大道至簡

最近給美術整理的,這是知乎上最類似的問題了,所以掛在這,一個是看是否有人有類似的問題可以參考,二來刷一下自己網站的外鏈,增加被爬蟲抓到的幾率。。。

知乎貌似不能像markdown或者引用html代碼樣外鏈圖片,大家點上面的鏈接看吧。

-------------------------------------------------------------------------------------

第二次更。周末在科目二集訓和考試的時候發現忽然被很多人點贊和關注,受寵若驚,感謝大家認可和支持。之前因為知乎不支持直接粘貼圖片,又怕麻煩,只放了第一張圖片,既然大家這麼捧場,還是把配圖都加上~~ ~~ [捂臉][允悲]

另外更多文章請訪問我的博客,還有一些文章的補充和更新,還是會以博客為主,知乎上的回答盡量過來修改~~

--------------------------------------------------------------------------------------

LightMap烘焙技巧

前言:弱弱的說我是一個程序猿。
科普名詞解釋:
全局照明(GI):是指除了直接光之外包括天空,物件之間間接光照的總和。
環境閉塞(AO):是指間接光在物件間相互遮擋反射不充分導致的微弱陰影。通常在直接光照的暗部才會比較明顯。
天光:從頭頂來的天空顏色造成的間接照明,特別是在晴朗的天氣。
LightMap:光照貼圖
HDR:顏色高動態區間,指顏色亮度可以超過1,移動平台暫且不支持
間接照明(間接反射):指光源照亮A物體,A物體變亮以後充當間接光源對近距離內B物體有照亮的作用。這種現象只有當物體B在直接光照(比如陽光)的陰影里才會明顯。

足夠多的明暗對比

  • 適當打平燈光以增加陰影面積(暗部更多更容易做效果)

  • 適當增大模型增加陰影面積(暗部更多更容易做效果)

  • 通過只投射不接收來增加假陰影(作假)(不接受投影是因為看不見所以可以節省這種物體的渲染和它佔用的litmap面積)

模擬全局光照

  • 足夠充分暗部照明(暗部會有一種明快的感覺,用美術語言說就是暗部很「通透」)

  • 天光的使用:
    • 理論上越晴朗的天氣陰影暗部越偏藍(同理也是為了有全局照明的效果,用美術語言說就是暗部很「通透」)(哪天北京晴空萬里的時候去大樓的陰影里看看是不是有藍色,為了對比飽和度的覆蓋問題,可以拿一張白紙)

  • 間接反射誇張
    • 比如守望先鋒花村的櫻花樹下會有很強烈的藍紫色,實際上是模擬粉紅的櫻花與天光藍色的疊加造成的視覺,不過暴雪的美術有更加誇張的表達。(實現方法實際是在暗部增加與區域環境顏色相似的點光,實時GI現在效率跟不上,另外也不可能這麼強。)
    • 小幅誇張

    • 更誇張的做法:現實世界中不會有這麼強烈的間接反射,就像葉子把光間接反射出來了一樣,守望先鋒就是例子

  • 其實以上技巧都是借鑒自守望先鋒
    • 這是一個人的分析,只要有心去找,仔細去看,去思考,網上有很多文章有可以借鑒的地方(因為實時GI還開銷太大,暴雪真是能通過技巧把能用的東西用到最好)
      原文鏈接

    • 還有一個對環境光源的理解
      原文鏈接

  • 祭上守望先鋒的場景,很誇張的暗部間接光照,實際上是通過暗部打烘焙點光來實現的。更多細節請參考我的另外一篇文章。

AO的使用

  • AO能更真實的模擬現實世界,能使暗部有更明顯的立體感,用美術的話說就是暗部足夠「實」,「不飄」
    • 基礎知識請參考這篇文章,這裡講了什麼是AO,什麼是間接反射等
    • 暗部的接縫處AO效果最明顯

LightMap面積的優化

  • LightMap面積(精度)說明:(一個格子就是一個像素點,也就是佔用在lightmap上面的面積)

    • 通過Scale In LightMap這個參數可以單獨調整單個物體的精度

  • 更合理的分配LightMap面積(想要好效果又要節省lightmap面積,就是要研究,並總結經驗,沒有捷徑
    • 只投射不接受的物件Scale In Lightmap填0就行
    • 地面 &> 物件,重要物件 &> 一般物件, 視覺中心 &> 邊遠地區,大物件 &> 小物件

    • 全部(或者幾乎全部)在明處或者全部在暗處的可以用最低解析度烘焙(比如當前光線下的這個椅子和不管影子多麼正都是在暗處的這面牆壁,這種情況下,這兩個lightmap精度可以填0.01),需要注意的是必須參加烘焙只是精度可以很低(因為純白或者純黑被壓縮大小是不會損失精度的)

    • 地面以下,地圖的側面,或者根本看不見的東西,烘焙佔用面積請控制到最小(最慘的情況請參考下面說的浪費)
  • 避免完全沒有必要的浪費
    • 像這種完全在別的物體以下,還參加烘焙的完全沒有必要,而且浪費很大

    • 樹葉花草等透貼類似的推薦只投射,不接受,而且接受烘焙陰影效果不見得好,會很「臟」

技巧及問題

  • 發現陰影比較虛,不實
    • 檢查是否間接光照反彈次數過大(可以理解成有過大的衍射效果)
    • 增加被投影物體的大小(比如放大花盆)(很顯然)
    • 增加投影至物體所佔lightmap面積(比如樹葉投影到地面比較虛,則提高地面的精度)
  • 效果不好或者黑點、漏光過多
    • 檢查2u是否打開
    • 檢查頂點分布是否有異常,uv分布是否均勻或過少
    • 如果都沒問題而且這個物件很重要,則增加精度
    • 自定義2u(高級,不推薦使用)
  • 過小物體效果太差
    • 如果確實過小,先看能不能放大,或者說這麼小的東西有沒有存在的必要或者是否可替代(很顯然)
    • 如果確實需要,可以不參加litmap烘焙,而直接去diffuse貼圖上花盆貼圖的底部蹭兩筆黑的
    • 這個花盆之前參加烘焙會有很大的漏光和黑點,其實不需要參加烘焙,而且效果比烘焙更好,還能節省lightmap

壓縮的效果優化

  • 通過我烘焙的經驗,以kasaierxueyuannew場景為例,發現烘焙10-12張1024壓縮到512,比直接烘焙2-3張1024的貼圖來的精度和效果都更好
    • 10張512 = 2.5張1024,而以之前的烘焙策略烘焙3-4張1024效果沒有我這個好
    • 此外通過合理分配lightmap精度,能節省2-3張lightmap,沒有仔細分配之前,保證效果的情況下能烘焙14張左右,現在這版只使用了11張,如果還細摳還能省1張甚至更多

  • 從1024壓縮到512肯定會損失精度,但是通過仔細的分配lightmap精度能使這種損失達到最小
    • 方法一:地面最有用,所以怎麼省都不要吝嗇地面的精度,地面不管接受多少陰影,所佔用的lightmap面積是一樣的,所以多打點陰影(不增加消耗,還可以做效果,何樂而不為)
    • 方法二:純背光純亮光區域可以減少lightmap精度,因為壓縮不影響(就像純黑純白的貼圖壓縮大小沒有損失一樣),而複雜的結構並且能同時受到陽光和陰影的影響,則也不需要節省精度,因為如果本來精度就不高,則壓縮更慘
    • 方法三:壓縮大小比壓縮格式帶來的損失小,如果壓縮格式影響巨大,可以不壓縮格式,而在其他地方想想辦法怎麼省(省的辦法參考上面)。所以推薦烘焙高質量的光照圖來壓大小
    • 方法四(重要):盡量使用大陰影,在不壓縮情況下本來就很小很虛的陰影,被壓縮了只會更慘,優化方法參考以上
    • 方法五:不推薦使用複雜的結構,酌情使用,在壓縮的時候很容易損失過大

個人經驗

  • 暗部補光,感覺上並不是光越多越好,最好燈光顏色來表達周圍環境的間接光照,過多顏色的燈光會讓人覺得沒有重點和亂
  • 點光通過減小光照強度增加照明範圍能得到更好的環境間接光的效果,還能防止有比較突兀的亮斑
  • 個人傾向於用天空材質球來代替全局環境光來烘焙,如果是晴朗天氣,用默認純藍的天空即可
  • 白模的情況下感覺lightmap很舒服而且很乾凈,而最終效果圖的lightmap效果沒有那麼明朗。所以猜測為diffuse貼圖的飽和度問題,因此推薦使用較低飽和度的顏色,否則lightmap的顏色很容易被蓋掉(不保證正確,希望美術同學嘗試)

跨平台的問題

  • 因為烘焙Lightmap用的exr,也就是HDR顏色編碼,而現在手機平台不支持HDR編碼,導致在手機平台和PC平台的解碼方式不一樣,所以不能使用過強的光來烘焙光照圖,否則會造成android與pc差異巨大,因此不推薦使用光照強度超過3的燈光來渲染。

演示

  • 可以從此處下載演示場景
    • 給一張全貌


在請教別人之後成功解決了。地形上烘焙的陰影解析度默認都是很低的,把地形換成平面就沒問題了。至於車子上的斑點,那是因為我沒有把模型的Generate Lightmap UV 勾選,所以烘焙出錯了

下面的一張是我換了平面並且模型勾選了Generate Lightmap UV的效果

陰影還是很不錯的


誰能分享一下Unity2017.2的烘焙方法?


建議使用3ds Max直接烘焙,之後帶著烘焙圖導入unity,效果更好


研究的不夠精細,都沒說

性能損耗,一個場景300個entity是要卡死的。。

meshbaker 可以合併mesh ,但是合併以後 紋理就要重新對了。。


我歸納一下:

Step1:先將模型靜態;

Step2:在該模型的Model面板勾選Generate Lightmap UVs into UV2(有文章說也勾選Genrate Collider和勾選了上述兩個烘培模型還是有問題,勾選Swap UVs);

Step3:有文章說將燈光變成baked模型;

Step4:烘培吧。

其中Step4烘培時候有一些列參數調~


推薦閱讀:

2d遊戲中如何實現類似光照的效果,類似燈籠,火啊?
國內開發主機遊戲的會越來越多嗎?
怎樣在遊戲里錄像?
同樣是用 C# 做遊戲,為什麼 XNA 非常失敗,Unity 卻成功了?
請問untiy開發遊戲使用什麼架構比較合適?

TAG:Unity遊戲引擎 |