1. 程式人生 > >關於Unity中的光照(二)

關於Unity中的光照(二)

material 展示 style mas 光照 一個 材質 not 光源

光源

1: 光照的本質:就是光的顏色和物體紋理的顏色的混合;
2: 光源類型: 點光源,定向光源,聚光燈, 區域光源;
 區域光的範圍會在場景中用黃色的光顯示出來;
 z軸是光的方向; 光的強度會隨距離衰減;
 只能配合烘培GI使用;
3: 發光材質
 發光材質也算是一種光源,通過給物體添加特殊的著色器,調節其自發光參數可以得到一個柔和的燈光效果。發光材質可以讓物體表面發光,
 發光材質只能作用在被標記為static, 或LightStatic的物體上。光源的強度以2的次方速度衰減;

實例

1.創建Unity工程和文件目錄,保存場景

2.創建一個平面plane,兩個cube作為墻壁,一個cube放在中間

3.配置場景視圖到一片漆黑

 第一步:把Hierarchy視圖裏面的Directinal Light的眼睛關閉,這樣場景中就沒有光源了,但是還是有微弱的光,是天空盒的環境光

 第二步:Window---->Lighting---->SkyBox---->材質選擇FrameDebuggerRenderTarget

4.這個時候就全黑了,打開Directinal Light的眼睛,記得要把Camera的Clear Flags替換Skybox為Dont Clear,不然Game視圖無法顯示攝像機拍到的內容

5.我們可以自己創建一個點光源create---->Light---->Point Light看效果和調光的強度,Intensity越大光越亮。

技術分享

6.我們可以自己創建一個聚光燈create---->Light---->Spotlight看效果和調光的強度,Intensity越大光越亮。

技術分享

7.我們可以自己創建一個區域光源create---->Light---->Arealight,區域光源什麽效果都沒有,必須配合烘焙使用。要想讓其他的物體被這個光源所影響,就要設置其他的物體右上角為static或者Lightmap Static,烘焙需要時間(右下角進度條)

技術分享

8.我們可以自己創建一個發光材質create---->Material---->Emission為紅色,Global Illumi設置為Baked,把材質關聯到cube,cube在黑暗中顯示出紅色,要想讓其他的物體被這個光源所影響,就要設置其他的物體右上角為static或者Lightmap Static,烘焙需要時間(右下角進度條)

技術分享

Light組件的參數

1: Type: 燈光當前的類型;
2: Directional: 光源為平行光
3: Point: 光源為點光源;
4: Spot: 光源為聚光燈;
5: Baking: 全局光照模式 Realtime/Baked/Mix模式;Mix表示靜態物體使用Baked烘焙(只對標記成static的物體有效),動態物體使用Realtime實時計算,其他兩種都是極端的顯示,不管對方的(Baked模式時不是static的全黑)。

技術分享
6: Range: 燈光所影響的最大訪問,平行光不需要;
7: Color: 燈光發出光線的顏色;
8: Intensity: 燈光發射的明亮程度,0為關閉,1為最亮;
9: Bounes Intensity: 控制全局光照中光線的反彈強度。
10: Shadow Type: 燈光投影的陰影類型;
11: Cookie: 使用一個帶有Alpha的紋理來制作一個遮罩,使光線在不同的地方有不同的亮度,當光源為點光源是必須為立方圖紋理;
12: Draw Halo: 繪制光暈,如果勾選,光源會帶有球形光暈;可以調整,後面再說。
13: Flare: (可選) 燈光耀斑,在光源位置繪制;
14: RenderMode: 燈光的渲染模式;
15: Auto自動渲染模式,更具燈光亮度和當前設置的質量在運行時確定;
16: Important: 燈光會按照逐個像素渲染,用於重要的燈光特效;
17: Not Important: 燈光一最快的速度渲染;
18: Culling Mask: 選擇某些層不受光源影響;層在右上角可以編輯。

光照貼圖

把光照的效果做成貼圖貼在物體上面,省計算機資源。

1: 光照貼圖的烘培
將不同的物體,和光源預先烘焙出來,生成一個光照貼圖。
  (1) 講要做光照烘培的物體配置成Light static模式;
  (2) 將光源的Light組件上的Baking選為Baked;
  (3) 打開烘培窗口;Window-->Lighting
  (4) 確認無誤後,在Lighting窗口中的Scene面板中選擇Build進行烘培, 將Auto(自動烘培)關閉;
2: 光照貼圖:
光照烘培出來的貼圖,貼到模型物體上,減少運算負擔,對靜態物體有很好的效果;保存在scenes/game_scene文件夾下

光照烘培的參數詳解

Window---->Lighting

Object

1: Light過濾按鈕:
type: 設定燈光的類型,可以將燈光設置成平行光,點光源,區域光,聚光燈;
Baking: 光源的烘培模式;
Realtime: 對場景的物體都采取實時光照;
Baked: 對靜態物體采用烘培光照,對非靜態物體不起作用;
Mixed:對靜態物體使用烘培光照,對非靜態物體使用實時光照;
Bounce Intensity: 調節間接光的強度(從一個物體反射到另外一個物體上的光)
2: Render過濾按鈕:
Lightmap static: 遊戲對象是否為static /Lightmap static,如果是遊戲對象參與到GI計算光照;
Scale In Lightmap: 該值影響了用於選中對象的lightmap的像素數目,默認值為1.0,每個對象所占的光照圖像素的比例,可以通過它來優化光照,不重要對象減少比例,重要物體來獲得更多的光照圖像素來優化場景;
Preserve UV: 保護光照圖UV,若模型沒在3DMax等建模軟件中展示UV,必須勾選住;
AutoUV Max Distance: 手動設置UV最大距離;
AutoUV Max Angle: 手動設置UV最大角度;
Important GI: 讓自發光物體的照射範圍更大;
Advance Parameters: 設置光照的質量;

Scene

1: 環境光照選項(整個環境的光,有點像濾鏡)
Skybox: 場景中使用的天空盒;
Sun: 場景中的太陽光,可以為其指定一個固定的平行光源;
Ambient Source: 環境光的來源;
Ambient Intensity: 環境光的強度;

Ambient Color: 環境光的顏色;
Ambient GI: 指定環境光的光照模式是實時光照還是烘培,若兩種GI模式都沒有開啟,該選項沒有效果;
Reflection Source: 反射源,可以指定反射源氏天空盒或一個自定義的立體紋理圖;
Reflection Instensity: 反射強度,可以設置來自天空盒或立體紋理圖的反射強度;
Reflection Bounce: 反射計算的次數;
2: Bake GI參數:
Bake Resolution: 烘培的分辨率: 若該值為10,代表每一個單位分布10個紋理像素;
Blake Padding: 在LightMap中不同物體烘培圖的間距;
Compressed: 是否壓縮光照貼圖;
Ambient Occlusion: 烘培光照圖產生一定數量的環境阻光,環境阻光計算每一點被一定距離內的其他物體或一定距離內自身物體的擋住的遮擋程度(用來模擬物體表面環境光以及陰影的覆蓋比例,達到全局光照的效果);
Final Gather: 控制從最終聚焦點發射出的光線的數量,較高數值可以達到更好的效果;
3: Other 設置可以設置光暈的效果;

總結

1.光源有3種光照模式,RealTime,Baked,Mixed

2.物體也可以發光,需要發光材質

3.物體分2種,static和非static

4.烘焙時光源的光照模式必須是Baked或者Mixed,要烘焙的物體必須是static的

5.環境光也是一種光源,也可以用來烘焙

關於Unity中的光照(二)