Unity3D開發(fā)標準教程-光影效果的使用_第1頁
Unity3D開發(fā)標準教程-光影效果的使用_第2頁
Unity3D開發(fā)標準教程-光影效果的使用_第3頁
Unity3D開發(fā)標準教程-光影效果的使用_第4頁
Unity3D開發(fā)標準教程-光影效果的使用_第5頁
已閱讀5頁,還剩72頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

光影效果的使用

第1頁

7.1光源在Unity游戲開發(fā)引擎中內置了四種形式的光源,分別為點光源、定向光源、聚光燈光源和區(qū)域光源

7.1.1點光源和定向光源點光源是從一個點的位置向四面八方發(fā)射光線,類似于蠟燭、燈泡,是場景搭建的常用光源之一。在合適的位置添加光源會大大增強游戲對象的層次感,使場景中的游戲對象更具有真實的效果。而定向光源能夠更好的模擬太陽,定向光源發(fā)出的光線都是平行的,并從無限遠處投射光線到場景中,很適用于戶外的照明。第2頁

7.1光源1.點光源基礎知識點光源的添加可以通過點擊菜單欄中“GameObject”→“Light”→“PointLight”菜單完成選中場景中的點光源,在其Inspector面板中就會出現點光源的設置面板,在設置面板中可以修改點光源的位置,光照強度、光照范圍等等參數。參數名含義參數名含義Type光源類型,可以在四種形式的光源之間進行切換DrawHalo是否啟用光暈Range光源的光照范圍Color光照顏色Intensity光照強度BounceIntensity用來設置光的反射強度ShadowType設置陰影模式(沒有陰影、硬陰影、軟陰影)Flare設置光照耀斑、鏡頭光暈效果Strength陰影強度,值越大,陰影的顏色越濃Resolution設置陰影的質量第3頁

7.1光源1.點光源基礎知識第4頁Baking光源烘焙模式(實時、烘焙、混合),烘焙模式下烘焙光照后會將該光源的效果添加到烘焙貼圖中,烘焙模式下的光源無法影響非靜態(tài)對象,混合模式下的光源即可以被烘焙,也能夠影響到非靜態(tài)對象Cookie燈光遮罩,為光源設置帶有alpha通道的紋理貼圖,使其在不同的位置具有不同的亮度(點光源需要放置立方圖紋理Cubemap)RenderMode設置光照的渲染模式,Auto模式為自動調節(jié)模式,Important模式是將像素逐個渲染,NotImportant模式是總以最快的方式進行渲染CullingMask剔除遮罩,只有其中被選中的層所關聯的對象能夠受到光照的影響Directional

將光源改為平行光光源,將其放在無窮遠處也可以影響著場景中的物體

Spot將光源改為聚光燈光源,光線按照聚光燈定義的角度和范圍在一個圓錐區(qū)內發(fā)射光線,影響才所有在該圓錐區(qū)域內的物體

NotImport燈光總是以最快的速度渲染Auto自動渲染模式,根據附近的燈光亮度和當前設置質量在運行時間時確定

7.1光源2.定向光源基礎知識定向光源的添加可以通過點擊菜單欄中“GameObject”→“Light”→“DirectionalLight”菜單完成,定向光源在場景中如果位置發(fā)生改變,它的光照效果并不會發(fā)生任何改變,可以把它放到場景中任意的地方,如果旋轉定向光源,那么它產生的光線照射方向會隨之發(fā)生變化。選中場景中的定向光源,在其Inspector面板中就會出現定向光源的設置面板。在設置面板中可以修改定向光源的位置、光照強度、光的顏色等參數。其內部參數和PointLight上的Light組件基本相同,注意定向光光源在Forword渲染路徑下就可以支持實時動態(tài)陰影。

第5頁

7.1光源7.1.2聚光燈光源和區(qū)域光源

聚光燈光源的照明范圍為一個椎體,類似于聚光燈發(fā)射出來的光線,并不會像點光源一樣向四周發(fā)射光線。區(qū)域光源是創(chuàng)建一片能夠發(fā)光的矩形區(qū)域,只有在光照烘焙完成后才能看到效果。第6頁

7.1光源1.聚光燈光源基礎知識聚光燈光源的添加可以通過點擊菜單欄中“GameObject”→“Light”→“SpotLight”菜單完成

選中場景中的聚光燈光源,在其Inspector面板中就會出現聚光燈光源的設置面板。在設置面板中可以修改聚光燈光源的位置,光照強度、光的顏色等參數,設置面板中參數的和PointLight上的Light參數相同,僅僅多了SpotAngle參數(用于燈光的角度調節(jié))。

第7頁

7.1光源2.區(qū)域光光源基礎知識區(qū)域光光源的添加可以通過點擊菜單欄中“GameObject”→“Light”→“SpotLight”菜單完成,

區(qū)域光光源只能在光照烘焙完成后才能顯示出效果,一般情況區(qū)域光光源用來模擬燈管的照明效果。區(qū)域光光源無法實現Cookie效果,其余參數與其他光源完全相同。第8頁

7.2光照貼圖的烘焙和使用光照烘焙就是將場景中的光照信息渲染成貼圖,然后將烘焙完成后生成的貼圖再應用到場景中的技術,此時光照信息已經存儲在紋理貼圖中,不再需要CPU進行計算,能大幅度提高性能。7.2.1光照設置點擊菜單欄中“Window”→“Light”即可打開Light窗口,Light窗口中分三個板塊來控制Unity游戲開發(fā)引擎中跟光照相關的參數第9頁

7.2光照貼圖的烘焙和使用1.Object板塊Object板塊主要是對Hierarchy面板中的對象進行篩選,在Object面板中有四個按鈕分別為全部對象、光源、渲染器、地形,當選中一個按鈕時,Hierarchy面板中就會僅顯示與當前選擇的按鈕相匹配的對象。當選擇Hierarchy面板中的對象時,在Object面板中就會顯示該對象與光照相關的參數控制列表。(1)Renderers——渲染器渲染器相關參數含義第10頁

7.2光照貼圖的烘焙和使用參數名含義參數名含義PreserveUVs保護光照圖UV,若模型沒有在3DMax等建模軟件中展好UV,則這里必須勾選。AutoUVMaxDistance手動設置UV的最大距離ImportantGI讓自發(fā)光的物體照射范圍更加大(在較大的場景中可能會用到)AutoUVMaxAngle手動設置UV的最大角度AdvancedParameters設置光照圖的質量Lightmapstatic該選項表示選中的游戲對象是否為Static或LightmapStatic的,如果是,則該游戲對象應該參與到GI系統中計算光照ScaleInLightmap該值影響了用于選中對象的lightmap的像素數目。1.0為默認值,表示每個對象所占光照圖像素的比率??梢酝ㄟ^此值來優(yōu)化光照圖,減少不重要的對象的比例讓重要的物體占更多的光照圖像素來優(yōu)化場景第11頁

7.2光照貼圖的烘焙和使用1.Object板塊(2)Terrain——地形圖7-19地形參數設置第12頁

7.2光照貼圖的烘焙和使用2.Scene板塊(1)EnvironmentLighing——環(huán)境光照環(huán)境光照相關參數含義參數名含義Skybox場景中使用的天空盒Sun太陽光,可以為其指定一個定向光光源(DirectionalLight)AmbientSource環(huán)境光來源,在這里可以指定環(huán)境光是來源于天空盒、梯度還是指定顏色AmbientIntensity環(huán)境光的強度AmbientGI指定環(huán)境光的光照模式是實時光照還是烘焙,若下面的兩種GI模式沒有都開啟,該選項的調節(jié)是沒有效果的ReflectionSource反射源,可以指定反射源是天空盒或者一個自定的立方體紋理圖ReflectionIntensity反射強度,設定來自天空盒或者立方圖紋理的反射強度ReflectionBounce反射計算次數第13頁

7.2光照貼圖的烘焙和使用2.Scene板塊(2)Precomputed

RealtimeGI——預計算實時全局光照預計算實時全局光照并不是用于光照烘焙,預先計算的實時全局光照系統能幫我們實時運算復雜的場景光源互動,透過這種方法,就能建立在昏暗的環(huán)境下帶有豐富的全局光照反射,并實時反映光源的改變。這對于硬件的要求是目前移動端所無法達到的。(3)BakeGI——烘焙全局光照如果開發(fā)過程中需要使用光照烘焙,那么就需要將該面板選中并取消Precomputed

RealtimeGI面板的勾選,全部勾選會造成大量的重復計算不利于提升性能。第14頁

7.2光照貼圖的烘焙和使用2.Scene板塊參數名功能BakedResolution烘焙分辨率,若該值為10就代表每個單位中分布著10個紋理元素BakedPadding在LightMap中不同物體的烘焙貼圖的間距Compressed是否壓縮光照圖,在移動設備上最好勾選上AmbientOcclusion烘培光照圖時產生一定數量的環(huán)境阻光。環(huán)境阻光計算物體每一點被一定距離內的其他物體或者一定距離內自身物體的遮擋程度(用來模擬物體表面環(huán)境光及陰影覆蓋的比例,達到全局光照的效果)FinalGather控制從最終聚集點發(fā)射出的光線數量,較高的數值可以得到更好的效果第15頁

7.2光照貼圖的烘焙和使用2.Scene板塊(4)GeneralGI——全局光照的基本設置GeneralGI面板中對全局光照的設置參數能夠同時適用于Precomputed

RealtimeGI和BakedGI參數名功能DirectionalMode定向模式,默認為定向,能夠滿足大部分的開發(fā)需求,當游戲中需要提升直接光和間接光對靜態(tài)物體的照射效果,那么就需要將其設置為DirectionalSpecular(定向鏡面模式)。IndirectIntensity用于調整靜態(tài)物體的自發(fā)光對其他物體的影響,以及Ambientlighting的強度.BounceBoost用于設置光線從一個物體反射到另一個物體時,被反射的光線的數量DefaultParameters用于修改關于光照的常規(guī)參數,其中有多個檔次供選擇,也可以進行自定義AtlasSzie用于設置光照貼圖中分辨率的大小第16頁

7.2光照貼圖的烘焙和使用7.2.2光照烘焙案例1.案例效果圖7-24案例運行效果第17頁

7.2光照貼圖的烘焙和使用7.2.2光照烘焙案例2.制作流程(1)首先打開Unity集成開發(fā)環(huán)境,新建一個工程并重命名為“Light_Demo”,進入工程后保存當前場景并重命名為“Bake_Demo”。然后在場景中使用Unity內置的多種簡單幾何體搭建一個簡易的場景即可,搭建完成后效果如圖7-25所示。圖7-25搭建簡易場景第18頁

7.2光照貼圖的烘焙和使用7.2.2光照烘焙案例(2)場景搭建完成后,為了使其他光源的光照效果更突出,本案例中將場景中的定向光源去掉。將所有的3D對象設置為靜態(tài)對象,如圖7-26所示。并在其中添加多種光源進行照明,將光源的烘焙模式均設置為Bake,如圖7-27所示。最后調整光源的位置以及朝向即可。

圖7-26將物體設置為靜態(tài) 圖7-27設置烘焙模式第19頁

7.2光照貼圖的烘焙和使用7.2.2光照烘焙案例(3)由于本案例僅作為演示,所以還需要對Light窗口中的部分參數進行修改,使其能夠達到較好的視覺效果。首先打開Light窗口,在Scene板塊中關閉預計算全局光照的功能,取消對光照烘焙貼圖的壓縮,并將定向模式修改為定向鏡面模式,如圖7-28、圖7-29所示。

圖7-28設置參數1 圖7-29設置參數2第20頁7.3反射探頭Unity5.0中新增了一種制作反射效果的“ReflectionProbe”功能,該功能通過場景中若干個反射采樣點來生成反射“Cubemap”,然后通過特定的著色器從“Cubemap”中采樣,從而實現反射效果。7.3.1反射探頭基本知識反射探頭的好處是其能夠捕捉所在位置各個方向的環(huán)境視圖,將所捕獲的圖像儲存為一個立方體紋理(Cubemap)。這樣物體會根據其所處的探頭的位置產生真實的反射效果。第21頁7.3反射探頭7.3.1反射探頭基本知識

圖7-30反射探頭設置面板1 圖7-31反射探頭設置面板2第22頁7.3反射探頭7.3.1反射探頭基本知識(1)反射探頭類型的選擇bake——烘焙:烘焙模式:這種模式類似于光照烘焙,當反射探頭的位置和反射范圍設定完成后,將其反射信息烘焙到Cubemap(立方圖)中,這樣物體上的反射效果將會固定為烘焙時的反射探頭所捕捉到的環(huán)境視圖。

custom——自定義:自定義模式:默認狀態(tài)下Custom模式的反射探頭和Baked模式的探頭的用法和效果基本相同的,不同的是自定義模式下可以通過開啟DynamicObjects功能,使得沒有設置為ReflectionProbeStatic的動態(tài)物體也能夠被反射探頭捕捉。而且自定義模式下,開發(fā)人員可以為該反射探頭指定Cubemap(立方圖)。也就是說,當前處于A地區(qū)的反射探頭捕捉的環(huán)境視圖可以替換為,在B地區(qū)的反射探頭所捕捉到的環(huán)境視圖。第23頁7.3反射探頭7.3.1反射探頭基本知識(2)反射探頭的位置和大小探頭的移動可以通過兩種方式進行,一種就是通過移動反射探頭在3D世界中的位置,一種是使用反射探頭組件提供的移動工具,如圖7-36所示

探頭捕捉范圍的調整也可以通過兩種方式進行,一種是使用反射探頭組件內置的調節(jié)按鈕,如圖7-36所示。點擊該按鈕后在包圍探頭的正方體的每一個面上都有一個點,如圖7-35所示,可以通過拖動它們來改變捕捉范圍。另一種就是修改其中的Size參數,也同樣可以調節(jié)捕捉范圍。第24頁7.3反射探頭7.3.1反射探頭基本知識

圖7-35范圍調節(jié)點 圖7-36范圍、位置調節(jié)工具第25頁7.3反射探頭7.3.1反射探頭基本知識(3)無限反射過去使用“Reflectionmapping”來制作的反射效果,但是這種方法具有局限性,它無法實現自身的反射。而反射探頭是能夠捕捉所在位置各個方向的環(huán)境視圖,將所捕獲的圖像儲存為一個立方體紋理(Cubemap)。這樣物體會根據其所處的探頭的位置產生真實的反射效果。點擊菜單欄中“Window”→“Lighting”,打開Light窗口,在其“Scene”面板中“EnvironmentLighting”卷展欄下的“ReflectionBounces”屬性就是用來控制反射的次數,最大為相互反射5次。第26頁7.3反射探頭7.3.2反射探頭案例開發(fā)1.案例效果

圖7-37案例運行效果1 圖7-38案例運行效果2第27頁7.3反射探頭7.3.2反射探頭案例開發(fā)2.制作流程(1)首先打開Unity集成開發(fā)環(huán)境,新建一個工程并重命名為“ReflectionProbe_Demo”,進入工程后保存當前場景并重命名為“ReflectionProbe_Demo”,然后在Assets目錄下新建兩個文件夾分別命名為“Texture”和“C#”,分別用來放置紋理圖和腳本文件,如圖7-39所示。

圖7-39目錄結構第28頁7.3反射探頭7.3.2反射探頭案例開發(fā)2.制作流程(2)接下來開始搭建場景,首先將需要使用的紋理貼圖導入到Texture文件夾中,然后在場景中創(chuàng)建Plane、Cube、Sphere、Cylinder和Capsule四中幾何體,將其擺放到合適的位置并為其添加紋理貼圖,完成后效果如圖7-40所示。圖7-40搭建場景第29頁7.3反射探頭7.3.2反射探頭案例開發(fā)2.制作流程(3)完成后點擊菜單欄中“GameObject”→“Light”→“ReflectionProbe”創(chuàng)建一個反射探頭并將其放置在場景的中間位置,為了使反射效果更突出,將反射探頭設置面板中的Cubemap分辨率設置為1024*1024,并使用實時模式,如圖7-41、圖7-42所示。圖7-41設置反射探頭模式 圖7-42設置Cubemap分辨率第30頁7.3反射探頭7.3.2反射探頭案例開發(fā)2.制作流程(4)接下來向場景中添加用于呈現反射效果的球體,在場景中新建一個球體,調節(jié)其位置和大小使其能夠將反射探頭包含在內,然后為其添加一張純色的紋理貼圖,案例中使用的是白色紋理。在其Inspector面板的材質編輯器中將Metallic和Smoothness均調節(jié)為1,使其反射效果更好,如圖7-43所示。

圖7-43調節(jié)材質編輯器 第31頁7.3反射探頭7.3.2反射探頭案例開發(fā)2.制作流程(5)完成后應該就能夠看到反射探頭所產生的效果已經應用到了這個球體之上,因為在該球體的MeshRenderer(網格渲染器)中已經將當前場景中的反射探頭綁定到了該球體上,如圖7-44所示。接下來就需要編寫腳本來控制攝像機的運動,在C#文件夾下右鍵→Create→C#Script創(chuàng)建一個C#腳本并重命名為“Demo”。雙擊腳本進入腳本編輯器編輯代碼,具體代碼如下。圖7-44設置網格渲染器第32頁7.3反射探頭7.3.2反射探頭案例開發(fā)代碼usingUnityEngine;2 usingSystem.Collections;3 publicclassDemo:MonoBehaviour{4 voidUpdate(){5Camera.main.transform.RotateAround(this.transform.position,Vector3.up,0.3f);6 }}(6)腳本編寫完成后保存并退出,在Unity集成開發(fā)環(huán)境中將編寫好的Demo腳本綁定到球體上即可(可以通過將腳本拖拽到球體對象上來完成綁定)第33頁7.4法線貼圖7.4.1法線貼圖的基本知識法線貼圖就是在原物體凹凸表面的每個點上均作法線,通過RGB顏色通道來標記法線的方向,對于視覺效果而言,它的效率比原有的凹凸表面更高。若在特定位置上應用光源,可以讓細節(jié)程度較低的表面生成高細節(jié)程度的精確光照方向和反射效果。(1)法線貼圖(Normalmapping)在三維計算機圖形學中,是凹凸貼圖(Bumpmapping)技術的一種應用,法線貼圖有時也稱為“Dot3(仿立體)凹凸紋理貼圖”。凹凸與紋理貼圖對于現有模型的法線添加擾動的方式不同,法線貼圖要完全更新法線。(2)法線貼圖將具有高細節(jié)的模型通過映射烘焙出法線貼圖,然后貼在低端模型的法線貼圖通道上,使其表面擁有光影分布的渲染效果,能大大降低表現物體時需要的面數和計算內容。

第34頁7.4法線貼圖7.4.2在Unity中使用法線貼圖1.案例效果

圖7-47Diffuse紋理圖效果 圖7-48Normal紋理圖效果第35頁7.4法線貼圖7.4.2在Unity中使用法線貼圖2.開發(fā)流程(1)打開Unity游戲開發(fā)引擎,利用Ctrl+N快捷鍵新建一場景并保存為“NormalmapDemo”。在Assets目錄下新建兩個文件夾,分別重命名為“Materials”和“Texture”。將事先準備好的箱子圖片以及其法線貼圖導入進Texture文件夾,資源結構布局如圖7-49所示。

圖7-49資源結構布局

第36頁7.4法線貼圖7.4.2在Unity中使用法線貼圖2.開發(fā)流程(2)選中NingMong_NRM法線貼圖,在Inspector面板可以看到其屬性參數,其中Bumpiness表示的是法線貼圖的凹凸程度,可以通過滑塊來調整當前的數值,點擊Apply應用,如圖7-50所示。在Scene中新建一個Plane,并在Plane上放置兩個Cube并賦于不同貼圖作比較。圖7-50法線貼圖參數第37頁7.4法線貼圖7.4.2在Unity中使用法線貼圖2.開發(fā)流程(3)在Materials文件夾中右擊→Create→Material菜單新建兩個材質球,如圖7-51所示。將其分別命名為“Diffuse”、“Normaterial”。選中Diffuse材質球,將木箱的紋理圖拖拽到Albedo參數下(采用默認的著色器)。如圖7-52所示。

圖7-51創(chuàng)建材質球 圖7-52添加紋理圖第38頁7.4法線貼圖7.4.2在Unity中使用法線貼圖2.開發(fā)流程(4)選中Normaterial材質球,將其著色器修改為LegacyShaders/BumppedDiffuse,并將木箱紋理圖拖拽到Base中,將法線貼圖拖拽到Normalmap中,如圖7-53所示。將兩種材質球分別賦給之前創(chuàng)建的兩Cube。圖7-53法線貼圖材質球第39頁7.5Unity3D光照系統中的高級功能7.5.1光照系統中的小功能1.基礎知識(1)Unity中支持多種渲染路徑,不同的渲染路徑有不同的性能和效果,大多數都是影響光照和陰影的。點擊Edit→Project→Player菜單,在Inspector面板中的OtherSetting卷展欄下RenderingPath中設置渲染路徑Forward:該渲染路徑也是Unity的預設渲染路徑,在該渲染路徑下,每個對象的著色是根據影響對象的燈光,通過“Pass”來著色。這個渲染路徑的優(yōu)點是快速,硬件要求低,可以快速處理透明度。然而其缺點是有大量光源的復雜場景中效率反而會降低。第40頁7.5Unity3D光照系統中的高級功能7.5.1光照系統中的小功能1.基礎知識Deferred:該路徑為延遲渲染路徑,延遲了光的遮蔽與混合信息直到第一次接收到表面的位置發(fā)現材質數據著色到一個“幾何緩沖器(G-buffer)”作為一個屏幕空間的貼圖。該方法的優(yōu)點是照明的著色成本和像素數量成正比,而非燈光數量,所以非常適合在有大量“realtime”模式的光源存在時顯示真實的光照和陰影,但是需要較高的硬件水平支持。LegacyVertexLit:頂點照明渲染路徑通常在一個pass中渲染物體,所有的光源照明都是在物體的頂點上計算的。該渲染路徑是最快速的并且具有最廣泛的硬件支持。LegacyDefferred(lightprepass):該渲染和Defferred渲染路徑非常相似,只是采用了不同的手段去實現第41頁7.5Unity3D光照系統中的高級功能7.5.1光照系統中的小功能1.基礎知識(2)Flare鏡頭光暈也成為耀斑,是模擬相機鏡頭內的一種光線折射的效果,常用來表示非常明亮的燈光。添加鏡頭光暈最簡單的方法是在燈光Light組件下的Flare選項中賦于耀斑效果。(3)CullingMask光照過濾是光照系統中一個較為實用的小功能,經常會被用到。比如場景中不想讓某些物體受到某個光源的影響、需要某盞燈專門為某個對象提供光照等情況就需要使用光照過濾(CullingMask),將該物體置于某一層,將燈光遮罩該層即可。第42頁7.5Unity3D光照系統中的高級功能7.5.1光照系統中的小功能2.案例效果圖7-59案例效果圖第43頁7.5Unity3D光照系統中的高級功能7.5.1光照系統中的小功能3.開發(fā)流程(1)打開Unity集成開發(fā)環(huán)境,首先導入標準資源包中的鏡頭光暈效果,在Assets中右擊→ImportPackage→Effects,在彈出的Importingpackage面板中點擊導入即可。如圖7-60所示。在Assets目錄下新建一個文件夾并重命名為“Texture”。

圖7-60導入鏡頭光暈效果圖

第44頁7.5Unity3D光照系統中的高級功能7.5.1光照系統中的小功能3.開發(fā)流程(2)將開發(fā)過程中需要用到的立方體的紋理圖拖拽到Texture文件夾中,點擊GameObject→3DObject→Plane菜單,在場景中創(chuàng)建一個地板,如圖7-61所示。重復相同步驟再次創(chuàng)建兩個Cube,并分別重命名為“Cubeone”和“Cubetwo”,并調整這三個對象的位置,使其接近于攝像機。

圖7-61創(chuàng)建Plane第45頁7.5Unity3D光照系統中的高級功能7.5.1光照系統中的小功能3.開發(fā)流程(3)將Texture中的紋理圖拖拽到Cubeone游戲對象的上,并將其著色器類型修改為Mobile/BumpedDiffuse,如圖7-62所示。這時將Texture中的Material材質球拖拽到Cubetwo中即可實現紋理圖的添加。如圖7-63所示。

圖7-62修改著色器類型 圖7-63利用材質球貼圖第46頁7.5Unity3D光照系統中的高級功能7.5.1光照系統中的小功能3.開發(fā)流程(4)利用快捷鍵Ctrl+Shift+N新建一個空游戲對象,調整其位置在兩個Cube的左后方。點擊Component→Effects→LensFlare菜單,為其添加該組件,如圖7-64所示。將標準資源包中的某個耀斑效果圖拖拽到該組件的Flare參數中,效果如圖7-65所示。

圖7-64添加LensFlare組件 圖7-65添加耀斑效果第47頁7.5Unity3D光照系統中的高級功能7.5.1光照系統中的小功能3.開發(fā)流程(5)在指定耀斑參數后,可以通過調整GameObject的位置以及旋轉角度來改變鏡頭光暈的位置和朝向,效果如圖7-66所示。選中Cubeone游戲對象,在其屬性面板中的右上角的Layer一欄中,點開下拉列表,選擇AddLayer…菜單,如圖7-67所示。

圖7-66鏡頭光暈效果 圖7-67添加層次第48頁7.5Unity3D光照系統中的高級功能7.5.1光照系統中的小功能3.開發(fā)流程(6)在彈出的屬性面板中,前七個是系統默認的層次無法更改。選擇第八個輸入“Cubeone”,如圖7-68、圖7-69所示。創(chuàng)建完成后將Cubeone游戲對象的Layer修改為Cubeone,如圖7-70所示。這時層次的添加就完成了。

圖7-68添加Layer1 圖7-69添加Layer2第49頁7.5Unity3D光照系統中的高級功能7.5.1光照系統中的小功能3.開發(fā)流程(7)修改完成后,選中場景中的DirectionalLight光源,在Light組件中修改CullingMask參數,將Cubeone層次取消勾選即可實現光照過濾的功能,如圖7-71所示。利用該功能還可以實現特定的光源給特定物體進行照射的功能。

圖7-70給定特定的層次 圖7-71光照過濾功能第50頁7.5Unity3D光照系統中的高級功能7.5.2陰影的設置1.陰影質量Unity中使用“陰影貼圖(Shadowmaps)”來顯示陰影Unity游戲開發(fā)引擎提供兩種陰影模式(ShadowType)分別為HardShadow和SoftShadow,在相同燈光照射下以及同等的貼圖分辨率,HardShdow模式下的陰影效果十分的生硬并且?guī)в忻黠@的抗鋸齒,下面給出四種不同情況下的陰影貼圖,如圖7-73所示。

第51頁7.5Unity3D光照系統中的高級功能7.5.2陰影的設置2.QualitySettings面板點擊Edit→Project

Settings→Quality菜單,進入QualitySetting面板即可進行分辨率的設置。如圖7-47、7-75所示。Shadows具體參數如表7-7所列。

圖7-74打開質量設置面板 圖7-75Shadows設置參數第52頁7.5Unity3D光照系統中的高級功能7.5.2陰影的設置2.QualitySettings面板

表7-7陰影質量參數設置參數名含義Shadows設置陰影的類型ShadowResolution陰影的分辨率,可以將分辨率設置為:低、中、高、極高,分辨率越高,處理開銷越大ShadowProjection陰影投射,平行光的投射陰影有兩種方式:CloseFit渲染高分辨率陰影,但是相機移動時,陰影會稍微擺動;StableFit渲染的陰影分辨率低,但是不會在相機移動時擺動ShadowDistance相機的最大陰影可見距離,超過這個距離的陰影不會被計算ShadowCascades陰影層疊,層疊數目越高,陰影質量越好,計算開銷越大第53頁7.5Unity3D光照系統中的高級功能7.5.2陰影的設置

3.陰影性能Unity中降低陰影消耗的常用方法如下(1)使用光照貼圖(2)分辨率和陰影模式的設置(3)設置陰影距離

第54頁7.5Unity3D光照系統中的高級功能7.5.3LightProbes光探頭1.基礎知識LightProbes的原理是在場景中放上若干個采樣點,收集采樣點周圍的明暗信息,然后在附近幾個點圍成的區(qū)域內進行差值,當動態(tài)的游戲對象位于這些區(qū)域內時會根據位置返回差值結果也就是其所受的光照結果。這種做法并不會消耗太多的性能,也能實現動態(tài)物體和靜態(tài)場景光照效果的相互融合。

第55頁7.5Unity3D光照系統中的高級功能7.5.3LightProbes光探頭2.案例效果

圖7-76未接受光探頭的光影效果 圖7-77接受光探頭的光影效果第56頁7.5Unity3D光照系統中的高級功能7.5.3LightProbes光探頭3.開發(fā)流程(1)光探頭存在的價值是為了解決動態(tài)物體與烘焙好的Lightingmap場景光照突兀的問題,首先搭建一個簡單的場景。利用Unity中簡單的幾何體搭建一個場景,效果如圖7-78所示。圖中綠色的長方體為自發(fā)光物體。

圖7-78搭建創(chuàng)建效果圖

第57頁7.5Unity3D光照系統中的高級功能7.5.3LightProbes光探頭(2)在場景搭建過程中,需要給每個游戲對象添加材質。這里以自發(fā)光物體和長方體為例介紹材質球的創(chuàng)建過程。在Assets目錄下新建一文件夾并重命名為“Materials”,在該文件夾下右擊→Create→Material,并重命名為“blue”,在其Albedo參數中將顏色修改為藍色,如圖7-79所示。

圖7-79修改材質球顏色第58頁7.5Unity3D光照系統中的高級功能7.5.3LightProbes光探頭(3)根據步驟2再次新建一名為Yingguang-green的材質球,將其著色器參數修改為LegacyShaders/Self–Illumin/Diffuse,并在MainColor參數中將顏色修改為淡綠色,將該發(fā)光材質球指定給創(chuàng)建的小長方體,如圖7-80所示。

圖7-80創(chuàng)建自發(fā)光材質球第59頁7.5Unity3D光照系統中的高級功能7.5.3LightProbes光探頭(4)至此,場景的搭建就完成了,將場景中的所有游戲對象標志為靜態(tài)物體,對場景進行烘焙(具體過程已經在前面章節(jié)詳細介紹過,有需要的可以參考前面講解的知識)。利用Ctrl+Shift+N創(chuàng)建一個空游戲對象,點擊Component→Rendering→LightProbesGroup菜單添加光探頭組件,如圖7-81所示。

圖7-81添加LightProbesGroup組件第60頁7.5Unity3D光照系統中的高級功能7.5.3LightProbes光探頭(5)下面就要為游戲場景布置采樣點了。點擊“LightProbeGroup”組件中的“AddProbe”按鈕,Scene窗口中就會出現一個新的“小球”,接下來將該小球移動到場景中的某個位置即可完成其擺放,點擊“DuplicateSelected”按鈕可以復制一個當前選中的采樣點。(6)重復第5步操作,直到場景中大部分陰影比較凸顯的地方都放置有采樣點,如圖7-82所示。其中很多用紫色的線連起來的黃色的“小球”就是設置的采樣點,注意采樣點的多少并不會影響性能。采樣點放置完畢后,需要再次烘焙游戲場景,所有的采樣點都賦予了其所在位置的光影信息。

圖7-82采樣點的設置

第61頁7.5Unity3D光照系統中的高級功能7.5.3LightProbes光探頭(7)接下來可以測試一下LightProbe的功能,創(chuàng)建一個小球并將其擺放到場景中的各個位置,觀察其光影效果是否和有區(qū)別。首先將小球擺放到場景中具有發(fā)光材質的地方。開關其MeshRenderer組件中的UseLightProbes參數,如圖7-83所示,并觀察其區(qū)別。

圖7-83是否啟用LightProbes效果第62頁7.5Unity3D光照系統中的高級功能7.5.3LightProbes光探頭4.LightProbes應用細節(jié)(1)采樣點的工作原理是將場景空間劃分為多個相鄰的四面體空間,為了能夠合理的劃分出空間以便進行正確的差值,所以需要注意不要將所有采樣點放置在同一個平面上,這樣會導致無法劃分空間。(2)當動態(tài)物體只能在一定的高度下活動時,在其高度的上方就沒有必要布置多個采樣點了。當然也不能將所有的采樣點布置的太低,這樣就無法劃分空間了。

第63頁7.5Unity3D光照系統中的高級功能7.5.4Cooike

燈光中的Cookies是一個很有趣的功能。在很早的電影或戲曲中燈光特效就被用來產生一個沒有真實存在的物體的印?;蜉喞?,比如叢林中產生的假象的樹冠陰影、監(jiān)獄中欄桿的陰影等,這些效果效果可以極大地提升場景的真實感。Unity也支持這種效果,就是燈光中的Cookies參數,如圖7-84所示。圖7-84Cookies效果7.5Unity3D光照系統中的高級功能

Cookies的使用非常簡單,在平行光光源中只要把一張帶有透明通道的紋理圖或者灰度圖拖到光源上的Cookies上即可在畫面中看到效果。新導入的紋理圖資源要進行設置,點擊圖片后在Inspector面板中勾選上AlpharomGrayscale選項即可,如圖7-85所示。根據需要也可以設置其卷繞模式。此處Cookies灰度圖如圖7-86所示。圖7-85平行光源的Cookies圖7-86Cookies圖片7.5Unity3D光照系統中的高級功能7.5.5CullingMask光照過濾

光照過濾是燈光系統中一個較為簡單的小功能,但是經常會被用到。比如場景中不想讓某些物體受到某個光源的影響、需要某盞燈專門為某個對象提供光照等情況就需要使用光照過濾(CullingMask)了。如圖7-87所示,場景中的球被光照剔除掉,不管場景中的燈光如何調整也不會對其產生光照和陰影;而同樣處于場景中的立方體則正常接受光照。

圖7-87光照過濾示意圖7.5Unity3D光照系統中的高級功能光照過濾的設置也比較簡單,將不需要的光照的物體放在某個層中,然后在燈光對該層過濾光照即可。具體步驟如下。(1)首先搭建所需要的場景。依次創(chuàng)建一個球(Sphere)、立方體(Cube)和一個平面(Plane),將其擺放到合適的位置后創(chuàng)建一個平行光光源(DirectionalLight)。(2)層的創(chuàng)建。選中球(Sphere)游戲對象,單擊其Inspect面板中的右上的Layer卷展欄會顯示出當前場景中的所有層,單擊最下方的AddLayer按鈕,如圖7-88所示,在新出現的面板中新輸入一個層,如圖7-89所示。創(chuàng)建完后將球游戲對象勾選為該層。(3)最后選中場景中的光源,在其Light組件中的CullingMask選項中取消對球坐在層Sphere層的勾選,這樣場景中的球以及所有處于Sphere層的游戲對象都不會受到這個光源的影響了。7.5Unity3D光照系統中的高級功能圖7-87光照過濾示意圖圖7-88添加層圖7-89輸入層的名稱7.5Unity3D光照系統中的高級功能7.5.6基于物理的著色

為了表現出真實的燈光效果,基于物理的著色模仿了物理過程,包括能量儲存(意味著物體反射的光源不大于它接受的光源)、Fresnel反射(視線不垂直于物體表面時,夾角越小,反射越明顯),以及表面的遮蔽(來自物理學術語)等。

1.基礎知識

基于物理的著色(PBS)是用模擬現實的方法呈現出材質和燈光之間的互相作用,基于用戶的逼真的視覺效果。基于物理學的著色思路是給用戶營造出連續(xù)性,并且看上去是在不同燈光控制下的下效果,模仿了燈光在真實情境下的行為,而不需要使用過多的專業(yè)工具。Unity中包含的Standard著色器和完整的PBS一起使用時,就可以實現很好的畫面效果,真是地模擬出石頭、陶瓷、黃銅及橡膠等材質,甚至模擬皮膚、頭發(fā)、布料等材質。7.5Unity3D光照系統中的高級功能2.案例效果

本案例通過簡單的場景介紹基于物理的著色的效果,通過添加物體的材質和位置合適的光照,即可觀察到逼真的物體。打開資源包中第7章目錄下的PBS_Demo\Assets\PBS_Demo.exe場景即可查看隨書案例。案例效果如圖7-90和圖7-91所示。圖7-90案例效果圖圖7-91案例部分細節(jié)圖7.5Unity3D光照系統中的高級功能3.開發(fā)流程

通過查看上述兩幅效果圖,可以看出船材質逼真的效果,本案列通過使用船的材質圖和合適的燈光位置創(chuàng)建了真實的場景畫面。案例的具體開發(fā)步驟如下。(1)首先打開Unity集成開發(fā)環(huán)境,新建一個工程并重命名為“PBS_Demo”,進入工程后保存當前場景并重命名為“Demo”。然后在Project窗口中單擊鼠標右鍵選擇Create→3DObject→Plane創(chuàng)建一個平面,調整合適的大小,接下來選擇Create→Material創(chuàng)建一個材質并命名為“grass”,并為平面添加材質,如圖7-92所示。圖

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論