Unity3D教程寶典之光影烘焙:第一講光影烘焙


【風宇沖】Unity3D教程寶典之光影烘焙:第一講光影烘焙

 

原創文章如需轉載請注明:轉載自風宇沖Unity3D教程學院

                                  
引言:
光影烘焙,英文叫Lightmapping 或 light baking。Unity自帶了Lightmapping的功能(是Illuminate Labs出的名為Beast的產品)。
本系列教程分為4講:
第一講 光影烘焙
第二講 AreaLight
第三講 Light Probes
第四講 腳本控制
其中第三第四講講解的是動態物體與烘焙后場景的融合。

            光影烘焙

打開方式  Window – Lightmapping
有幾點需要注意:
1.所要烘焙物體的mesh 必須要有合適的lightmapping uv。如果不確定的話,就在導入模型設置中勾選 Generate Lightmap UVs
2.任何Mesh Renderer, Skinned Mesh Renderer 或者 Terrain都要標注為static(lightmap static)

界面一:Object
點擊Bake Scene即開始烘焙
【風宇沖】Unity3D教程寶典之光影烘焙:第一講光影烘焙

界面2:Bake
烘焙參數的設置
Mode:
(1)Dual Lightmap mode:近景烘焙圖(near lightmaps)和遠景烘焙圖(far lightmaps)都會被烘焙,只有deferred rendering path支持該模式。
(2)Single Lightmap mode:只有遠景烘焙圖(far lightmaps)會被烘焙,
(3)Directional Lightmap mode:
Use in forward rendering:
一般可以忽略它。針對Dual lightmaps的設定,只在Mode選的是Dual時才會出現。在forward rendering模式下是否激活dual lightmaps,需要自己寫對應的Shader。
Quality:
High low 2個選項。決定采集射線的數量,對比界限,以及反鋸齒等設置。
Bounces:
Global Illumination模擬中 light bounces的數量。0表示只有直接光照會被計算,如果要加入柔軟的,真實的間接光照的話,則至少填1。
Sky Light Color:
模擬從天空從所有方向射來的光照。對室外場景很重要。
(注意:RenderSettings里的Ambient Light也參與烘焙,並且會覆蓋Sky Light。所以使用Sky Light的話,則需要關閉Ambient Light,把Ambient調成(0,0,0,0)即可)
Sky Light Intensity:Sky Light的強度。0表示關閉Sky Light.
Bounce Boost:加強Bounced light也就是間接光照的效果.
Bounce Intensity:間接光照的效果強度。
Final Gather Rays:從所有收集的點發射的射線的數量,最高則效果最好。默認為1000
Contrast Threshold: 越高表示光照越平滑同時細節越低
Interpolation:顏色計算方式。0表示線性插值,1表示基於梯度的高級插值。有時1會產生人工光照的失真效果。
Interpolation Points:越多表示光照越平滑同時細節越低。
Ambient Occlusion:環境閉塞(全局閉塞)在烘焙中的量,和光照無關,僅僅基於距離的效果
Lock Atlas:鎖上了,貼圖就不會變化,沒什么用。
Resolution:
通常來說 Resolution設置平均每單位面積對應lightmap的多少色素。該值越高代表單位面積的色素越多即越精細。反之越低越粗糙。默認值為50。如果一個10x10的plane,resolution是50的話,在lightmap里該plane就占用500x500像素尺寸。
當然也可以單調該數值。選中物體后,在lightmapping界面中會有Scale in lightmap的數值,表示的是該物體的烘焙信息在lightmap占的大小,1表示正常尺寸。0表示該物體沒有lightmap效果,但會影響其他物體的lightmap運算。2表示正常尺寸的兩倍大小。
Padding:在lightmap里,不同物體的烘焙圖的間距,單位為圖素(texel)
【風宇沖】Unity3D教程寶典之光影烘焙:第一講光影烘焙

界面3:Maps
烘焙好后的map在這里顯示。
Compressed: 是否壓縮lightmap
Array Size(0~254)lightmaps array的尺寸
Lightmaps array:即下方的4張貼圖,空格會被視為黑圖,指數即下方的 0,1對應Mesh Renderer及Terrain里的lightmap index。這個會自動計算。
【風宇沖】Unity3D教程寶典之光影烘焙:第一講光影烘焙







按下烘焙后,會在右下角有進度條顯示。然后你就可以去喝喝咖啡泡泡妹子神馬的,放心,它烘焙好了會有Import asset提示並自動切回Unity的。
烘焙好之后,會產生與場景名稱相同的文件夾,一般來說會有兩張.exr貼圖,LightmapFar-0和LightmapNear-0(僅在Dual模式下有near圖),當物體距離攝像機小於Shadow Distance時,使用的是 實時燈 + LightmapNear-0。當大於是使用的是LightmapFar-0,此時燈光對物體不起作用。
 (注意:Shadow Distance的設置
(1)如果是編輯器里運行:Lightmap display設置界面里的Shadow Distance,如下方左圖
(2)如果實際運行: Quality設置下的Shadow Distance,如下方右圖



【風宇沖】Unity3D教程寶典之光影烘焙:第一講光影烘焙 【風宇沖】Unity3D教程寶典之光影烘焙:第一講光影烘焙

Lightmap Display界面里的其他設置:
Use Lightmaps:是否使用lightmaps,不勾選的話就沒有任何烘焙的效果了。
Show Resolution:當勾選Show Resolution時,會有下圖所示類似國際象棋黑白相間的格子,一個格子對應lightmap里所占用的一個texel
Show Probes:是否顯示light probes,后面會講到。
Show Cells:light probes分割形成的空間的數量。
【風宇沖】Unity3D教程寶典之光影烘焙:第一講光影烘焙





【風宇沖】Unity3D教程寶典之光影烘焙:第一講光影烘焙 【風宇沖】Unity3D教程寶典之光影烘焙:第一講光影烘焙


【風宇沖】Unity3D教程寶典之光影烘焙:第一講光影烘焙 【風宇沖】Unity3D教程寶典之光影烘焙:第一講光影烘焙





當物體烘焙好之后,不管是復制物體還是把物體做成prefab,都會繼承烘焙的效果。但是如果縮放的話,烘焙好的光容易出現問題。

被烘焙的物體並不要求特定的材質或者Shader。 只要物體的Shader使用的是Surface Shader,那么就可以被烘焙。



注意:一個場景只能烘焙一次,如果多次烘焙,效果是最后一次烘焙的效果。

最后推薦ShadowGun里的烘焙配置,如下圖,供大家參考。烘焙時間很短,效果也很好。
極力建議大家搜下ShadowGun的demo來參考學習。里面無論是場景布局,光影分配,Godrays運用,及烘焙等等都是極高的水准。
【風宇沖】Unity3D教程寶典之光影烘焙:第一講光影烘焙
【風宇沖】Unity3D教程寶典之光影烘焙:第一講光影烘焙 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM