天天看點

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

本節書摘來自華章計算機《unity着色器和螢幕特效》一書中的第1章,第1.3節,作者[美]傑米·迪恩(jamie dean),譯 周翀,張薇,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

第一個遊戲場景位于星球“ridley vi”附近。宇航員停下飛船進行一些基礎維修,為登陸星球做好準備。

在這裡我們先簡單地基于unity的标準着色器來建立不同的材質,進而使得不同的物體表面擁有相近的顯示品質。

1.在項目(project)面闆上找到packt_scenes檔案夾,并單擊檔案夾的圖示,以便使它的内容顯示在資源(assets)面闆上。

2.在資源(assets)面闆上找到名為chapter1_start的資源。

3.輕按兩下該資源,以便将它包含的場景加載到項目中。

在場景(scene)視圖中會看到如下的場景畫面。

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

初始狀态的場景看起來有些簡陋,其中隻有預設外觀的飛船、宇航員,以及遠處的星球和它的衛星。

場景已經由unity的預設光源照亮,是以當我們對标準着色器進行設定時,可以同時觀察和對比不同材質在光源下的外觀。

接下來将從宇航員的材質開始設定。

宇航員的模型由許多不同的表面構成,比如,她的臉、玻璃頭盔以及由金屬和布料制成的太空服等。unity的标準着色器可以表現所有這些不同之處,開發者隻需通過圖形界面設定一些參數及紋理即可定義出具有金屬光澤或者高光效果的表面。

下面從建立材質資源開始做起。

2.右鍵單擊資源(assets)面闆上的任一空白位置,在彈出的菜單上單擊建立(create) | 材質(material)指令。

新材質資源将會在packt_materials檔案夾下面産生。

3.将新産生的資源重命名為“astronaut”。

unity 5為新材質預設指定标準着色器,并使用金屬光澤工作流。這是一種能夠适用于多種不同物體表面的萬能着色器。

4.在資源(assets)面闆上單擊“astronaut”材質将它的屬性顯示在檢閱(inspector)面闆上。

在材質初始的空白狀态下,“astronaut”材質具有白色的單色反光以及一定量的平滑度,使得該材質的外觀略微顯得閃亮。

5.單擊反光(albedo)右側的白色方框并選擇其他顔色。

在為一種材質設定更多紋理素材之前,臨時為其設定一種比較顯眼的單色反光顔色是一個比較實用的技巧。因為這樣便于觀察該種材質正在應用于場景中的哪些物體表面。

具體的做法是,為材質設定某一種單色反光顔色後(如正紅色),在unity界面的頂端中部單擊場景(scene)卡片将顯示切換到場景視圖。通過在場景中觀察并尋找特定顔色(如尋找正紅色),便可以友善地知道我們的修改正在影響場景的哪些部分。

6.用錄影機控制功能将鏡頭向宇航員拉近一些:“alt+滑鼠左鍵”為旋轉錄影機,“alt+滑鼠中鍵”為平移錄影機,“alt+滑鼠右鍵”為拉近或拉遠錄影機。

7.從資源(assets)面闆上将“astronaut”材質拖放到場景視圖中的宇航員模型上。

模型的外觀将産生相應變化,這表明“astronaut”材質已經應用到模型上。

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊
《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

從現在起對該材質所做的修改将會直接在場景視圖中展現出來。

8.在項目(project)面闆上單擊packt_textures檔案夾左側的灰色小三角形,使子檔案夾顯示出來。

9.找到并單擊“astronaut_suit”子檔案夾,将它的内容顯示在資源(assets)面闆上。

10.在資源(assets)面闆上找到“astronaut_albedo”紋理。

11.将該紋理拖放到檢閱(inspector)面闆上的反光(albedo)槽上。

該紋理是一個沒有alpha通道的tga圖檔檔案,裡面儲存了宇航員模型的表面顔色資訊。

12.再次單擊反光(albedo)右側的白色矩形方框并将顔色重新設定為白色。

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

到目前為止,宇航員模型的其他部分,如臉和太空服的布料等部分,在場景的光照下看起來還沒有差別,并且模型各部分的金屬光澤和平滑度參數都相等。

13.在資源(assets)面闆上找到“astronaut_metal”紋理并拖放到檢閱(inspector)面闆上的金屬光澤(metallic)槽上。

場景視圖中的宇航員模型外觀應當再次産生相應變化。

在金屬文理貼圖中,金屬光澤(metallicity或metalness)參數值存儲在rgba紋理檔案的紅色通道内。紅色值越高則金屬光澤越明顯。其他通道,如綠色或藍色通道沒有使用,将被忽略。請注意,當我們将“astronaut_metal”紋理拖放到了材質中後,原來檢閱(inspector)面闆上的平滑度(smoothness)滑動條将變為不可用狀态。

平滑度由金屬文理貼圖的alpha通道資料指定。如果紋理檔案沒有alpha通道,平滑度則預設為最大值。

14.在資源(assets)面闆上找到“astronaut_normal”紋理并拖放到檢閱(inspector)面闆上的法線貼圖(normal map)槽上。

法線貼圖(normal map)取代原模型表面的法線,重新定義表面反射光線的方向。這種技術常用于在精度較低的模型表面上模拟産生高精度的模型細節。法線貼圖(normal map)槽使用rgb貼圖,貼圖中的三個彩色通道被用于定義法線方向向量。

15.在資源(assets)面闆上找到“astronaut_suit_ao”紋理并拖放到檢閱(inspector)面闆上的遮擋(occlusion)槽上。

環境光遮擋(ambient occlusion,ao)有時簡稱為遮擋(occlusion),是一種作用于模型凹陷處的光照效果。在模型上有時會出現腔孔或者布料皺褶等通常難以接收到足夠光照的凹陷部分。環境光遮擋效果使模型的這種特殊部分顯得比其他正常部分更暗些。這種效果與法線貼圖(normal map)和金屬光澤(metallic)效果結合在一起,可以使複雜模型顯得非常真實。在标準着色器裡,遮擋(occlusion)使用灰階rgb貼圖。

預設情況下材質會将環境光遮擋貼圖的效果全部應用于顯示,但有時候效果可能過于強烈進而影響顯示品質,是以我們需要将效果适當減弱。

16.在檢閱(inspector)面闆上的遮擋(occlusion)右側有一個滑動條和一個數值輸入框。請将數值由預設的1改為0.5。該調整将輕微地減弱預設的遮擋效果。

在場景(scene)視圖中,此時的宇航員模型将擁有一套看起來更加真實的表面。

模型中的一些部分目前仍然保持預設的灰白色,因為它們要麼沒有使用前面設定的材質要麼屬于子模型。

在遊戲場景中,角色的眼睛模型一般與身體其他部分的模型分開,這樣眼睛就可以相對于身體獨立運動。在本書的示例中,宇航員的眼睛也使用單獨的子模型,但與身體的其他部分共享同一個材質。

在接下來的步驟裡,我們将“astronaut”材質應用于眼睛子模型。

1.在層次(hierarchy)視圖裡,單擊宇航員(astronaut)遊戲對象左邊的灰色小三角形,将該遊戲對象展開。展開後該遊戲對象下面的子遊戲對象eye_l和eye_r将被顯示出來。

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

2.再次找到“astronaut”材質,并将其分别拖放到eye_l和eye_r遊戲對象上,以便為這兩個子遊戲對象設定材質。

此外宇航員還有一套額外的材質将被設定到她的背帶和金屬裝備上。這些材質使用專用的紋理素材。

實際上,更加複雜的模型,如遊戲角色,往往會使用不止一套材質。這樣便可使同一個模型上不同部分的表面具有不同的光照特性。

我們将在接下來的步驟中為宇航員設定更豐富的材質。

現在需要為宇航員的背帶和其他裝備建立第二個材質。我們将通過相同的方法建立新材質。

1.在項目(project)面闆上找到并單擊packt_materials檔案夾,使檔案夾内容顯示在資源(assets)面闆上。

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

3.将新産生的材質重命名為“astronaut_equipment”。

4.在層次(hierarchy)視圖裡單擊astronaut遊戲對象,使其屬性顯示在檢閱(inspector)面闆上。

5.在檢閱(inspector)面闆上找到網格渲染器(mesh renderer)。

在網格渲染器(mesh renderer)下面的材質(materials)區顯示有一個材質數組,目前包含了三個材質元素。

6.将我們在資源(assets)面闆上新建立的“astronaut_equipment”材質拖放到網格渲染器(mesh renderer)下面的材質(materials)區内的元素1(element 1)位置。

拖放後元素1(element 1)位置預設的預設_材質(default_material)将被替換為“astronaut_equipment”材質。并且在場景(scene)視圖中也會看到相應變化。

7.輕按兩下出現在元素1(element 1)位置的“astronaut_equipment”材質名稱,将其屬性顯示在檢閱(inspector)面闆上。

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

在檢閱(inspector)面闆上,現在可以重新看到貼圖槽和滑動條等界面元件。

8.在項目(project)面闆上找到packt_textures檔案夾,單擊它左側的灰色小三角形,使子檔案夾“astronaut_suit”顯示出來。

9.單擊子檔案夾“astronaut_suit”使其内容顯示在資源(assets)面闆上。

10.在資源(assets)面闆上找到“equipment_albedo”紋理素材。

11.将其拖放到檢閱(inspector)面闆上的反光(albedo)槽上。

宇航員的背帶會改變顔色,這意味着紋理素材已經應用到背帶的材質中。

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

12.用同樣方法為金屬光澤(metallic)、法線貼圖(normal map)和遮擋(occlusion)拖放紋理素材。

13.為遮擋(occlusion)設定到紋理素材後,請確定将它的參數修改為0.5,以便與模型的其他部分保持一緻。

接下來我們将為這個材質多設定一個紋理,因為宇航員的背帶上有燈光。我們可以為自發光(emission)設定紋理,進而使模型的一部分亮起來。

14.在資源(assets)面闆上找到“equipment_emissive”紋理素材。

15.将該紋理素材拖放到檢閱(inspector)面闆上的自發光(emission)槽上。

在場景(scene)視圖中宇航員背帶上的燈現在将會亮起來。

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

标準着色器的自發光(emission)特性使用rgb貼圖。該貼圖還可以進一步指定一個顔色,以便對自發光顔色進行修改。我們将在第3章學習标準着色器的這一特性的更多細節。

宇航員遊戲對象的材質數組的第三個元素用于模型的頭發。這個材質與前面兩個材質使用相同的工作流,并用類似的方式設定紋理素材。為避免重複,這一次我們使用現成的素材。

16.在項目(project)面闆上找到packt_materials檔案夾以及它下面的final_materials子檔案夾。單擊子檔案夾,并在資源(assets)面闆上找到“astronaut_hair”材質。

在最終版本的材質中,讀者還可以找到現成的“astronaut”材質和“astronaut_equipment”材質。

17.在層次(hierarchy)視圖裡單擊宇航員(astronaut)遊戲對象。

18.将資源(assets)面闆上找到“astronaut_hair”材質拖放到檢閱(inspector)面闆上的材質(materials)區内的元素2(element 2)位置。

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

在繼續學習之前我們還有一件事要做。宇航員的太空服有一個透明頭盔。為了友善設定前面的其他材質,頭盔初始時處于隐藏狀态。接下來我們就處理它。

使物體透明

在加工和處理模型的過程中,一個模型可能被設定多個材質,即材質組。前面,我們在設定宇航員模型的裝備時已經遇到了這種情況:她的裝備使用一個具有自發光紋理的專用材質。

在接下來的例子中,宇航員的透明頭盔擁有獨立的uv殼和自己專屬的材質組,基于此我們可以為它設定與衆不同的材質。

頭盔模型所在的遊戲對象是宇航員遊戲對象的子遊戲對象,目前處于隐藏狀态。在下面步驟中我們需要先将它設定為可見狀态,然後才能看到後續修改為它的外觀帶來的改變。

1.在層次(hierarchy)視圖裡單擊頭盔(helmet)子遊戲對象。

如果無法找到頭盔遊戲對象,請單擊宇航員(astronaut)遊戲對象左側的灰色小三角形,将其子遊戲對象展開。

2.在材質拖放到檢閱(inspector)面闆上找到頭盔(helmet)子遊戲對象,并單擊勾選其左側的複選框将其激活。

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

與宇航員父遊戲對象相似,頭盔子遊戲對象在網格渲染器(mesh renderer)下面的材質(materials)區中也有包含兩個材質的材質數組。

材質數組中的第一個元素是“astronaut_equipment”材質,它用于繪制頭盔與太空服接口處不透明的部分。數組裡的第二個材質元素用于繪制頭盔整體的透明部分。我們暫時簡單地使用預設灰色材質。

在下面步驟中,我們再一次使用标準着色器建立材質。

3.将新産生的材質重命名為“helmet”。

4.在層次(hierarchy)視圖裡單擊頭盔(helmet)子遊戲對象,使其屬性顯示在檢閱(inspector)面闆上。将剛建立的“helmet”材質拖放到網格渲染器(mesh renderer)下面的材質(materials)區裡的元素1(element 1)位置。

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

5.輕按兩下元素1(element 1)位置上的“helmet”材質名稱,将其屬性顯示在檢閱(inspector)面闆上。

我們可以讓大部分屬性保持使用預設值,但這次需要修改渲染模式(rendering mode)。

6.單擊渲染模式(rendering mode)下拉選單,選擇透明(transparent)選項。

7.單擊反光(albedo)右側的白色方框,在彈出的顔色選擇器中,将a值設定為92。

alpha通道的透明度取值範圍在0~255,與其他rgb通道的取值範圍相同。在本例中我們希望頭盔可以看到,但是要有一定的透明度。

實際上也可以直接用紋理貼圖來指定透明度。我們将在第5章中進一步學習這種方法。

在場景(scene)視圖中,宇航員的頭盔現在具有了一定透明度。接下來我們對頭盔的材質再多進行一項修改。

1.在資源(assets)面闆上再次單擊“helmet”材質。

2.在檢閱(inspector)面闆上拖拽平滑度(smoothness)滑動條将其值修改為0.65。

半透明的頭盔表面有了一定的高光效果。

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

在後續步驟中,我們将使用标準着色器的更進階特性來為飛船建立材質。

在為宇航員設定材質時,我們隻使用了一套由反光(albedo)、金屬光澤(metallic)和法線貼圖(normal map)等參數定義的材質。接下來我們将用稍微不同的方法來設定飛船的外觀。因為飛船模型相對比較大,并且幾乎是作為宇航員的背景出現的,是以我們需要保證其表面具有足夠的細節。我們将為這個物體的網格渲染器(mesh renderer)增加額外的材質。

3.将新産生的材質重命名為“spacecraft”。

4.像前面為宇航員設定材質那樣,通過将“spacecraft”材質拖放到場景視圖中的飛船表面來為該模型設定材質。

5.在項目(project)面闆上找到packt_textures檔案夾,單擊它左側的灰色小三角形,使子檔案夾“spacecraft_surface”顯示出來。

6.單擊子檔案夾“spacecraft_surface”使其内容顯示在資源(assets)面闆上。

7.在資源(assets)面闆上找到“spacecraft_albedo”、“spacecraft_metal”、“spacecraft_ao”和“spacecraft_normal”紋理素材,将它們拖放到檢閱(inspector)面闆上對應的屬性槽中。

觀察場景(scene)視圖,可以看出這些貼圖賦予了飛船模型基礎的外觀的立體感。

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

接下來我們将為飛船建立第二個材質,并将它疊加到第一個材質的上面。

建立飛船貼花的材質

我們将用類似的方法為飛船再建立一個額外的材質。

3.将新産生的材質重命名為“spacecraft_decal”。

這次我們同樣需要材質以透明方式繪制。

4.在檢閱(inspector)面闆上将渲染模式(rendering mode)修改為透明(transparent)。

7.在資源(assets)面闆上找到“spacecraft_decal”紋理素材,将它們拖放到檢閱(inspector)面闆上的反光(albedo)屬性槽中。

這個透明紋理有alpha通道。我們将在下一步将這個新材質設定到飛船表面模型上。

8.在層次(hierarchy)視圖裡單擊飛船_表面(spacecraft_surface)遊戲對象。

該遊戲對象的屬性将顯示在檢閱(inspector)面闆上。

9.在檢閱(inspector)面闆上,找到在網格渲染器(mesh renderer)下面的材質數組。

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

10.在尺寸(size)輸入框裡輸入數字2,将材質數組的元素擴充為兩個。

11.單擊元素0(element 0)位置上的“spacecraft”材質名稱,将它所在的檔案的内容顯示在資源(assets)面闆上。

12.在資源(assets)面闆上找到“spacecraft_decal”材質并将其拖放到元素1(element 1)位置。

在場景中,貼花紋理将疊加在飛船表面的第一層紋理上面。

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

當我們将多個材質設定到同一個模型上時,一個材質會覆寫在另一個上面。隻有将上層材質的渲染模式設定為透明、剪裁或混合時,下層材質才可見。

請注意檢閱(inspector)面闆上材質數組下面出現的警告資訊。

警告:“為渲染器設定的材質數量對于目前模型的子模型數。将多個材質設定到同一個模型上會影響運作效率。考慮使用多遍着色。”

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

在本例中組合材質的确無法獲得良好的運作效率。我們将在第6章中進一步學習通過自定義着色器更高效的混合紋理的方法。

現在第二個材質已經顯示出來了,我們需要調整它的uv參數以便使更多的細節與飛船表面完美比對。

1.在資源(assets)面闆上找到并單擊“spacecraft_decal”材質。

标準着色器的uv縮放倍數(tiling)和uv起始位置(offset)參數就在主貼圖(main maps)設定區的最下面。

2.設定材質的uv縮放倍數的x值為-7,y值為7。

這将會使紋理的顯示尺寸縮小為原來的1/7。

紋理比物體表面小時,并不會以平鋪的形式重複出現。這一特性由紋理的性中的纏繞模式(wrap mode)決定。

3.設定材質的uv起始位置的x值為3.03,y值為-0.34。

這将會把貼花紋理放置在模型的恰當位置上。

接下來我們将為星球設定材質。

遠處的ridley vi星球是一個不毛之地。危險的氮氣風暴終日在星球表面肆虐。為了表達這個場景,我們将為星球建立一個基于标準着色器的材質。标準高光參數是unity标準着色器的一個可變量,它直接控制物體表面的高光程度而不是定義其金屬光澤程度。

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

實際應用中,這一參數給予了我們多一些的自由度。我們可以用它來定義物體表面高光區域的光斑大小以及強度,并且為其指定一個與表面反光和光源不同的顔色。

我們将通過如下步驟建立該材質。

3.将新産生的材質重命名為“planet”。

4.在資源(assets)面闆上單擊一次planet,就可以在檢閱(inspector)面闆上檢視它的屬性。

5.在項目(project)面闆上找到并單擊packt_textures檔案夾,是其内容顯示在資源(assets)面闆上。

6.在資源(assets)面闆上找到紋理貼圖planet001,将其拖放到在檢閱(inspector)面闆上的反光(albedo)屬性槽中。

為了表現ridley vi星球的崎岖表面,我們将為其設定一系列紋理素材。這是其中的第一張。

7.在層次(hierarchy)視圖裡找到并輕按兩下“ridley vi”遊戲對象,以便将其選中并且置于場景視圖正中。

8.在項目(project)面闆上單擊packt_materials檔案夾,将資源(assets)面闆上的“planet”材質拖放到場景中的星球上。

設定材質後,星球的外觀将發生變化。

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

為了使其表面看起來更像一個星球,我們還有一些調整要做。

9.再次單擊資源(assets)面闆上的“planet”材質。在檢閱(inspector)面闆上,将着色器(shader)類型設定為标準高光設定(standard(specular setup))。

标準高光設定着色器與普通标準着色器相似,但它允許我們指定物體表面的顔色(通過反光設定)、反射程度以及閃亮程度(通過平滑度和高光設定)。該着色器的關鍵不同之處是它可以為反射光線設定rgb顔色。

10.在檢閱(inspector)面闆上單擊高光(specular)設定右側的灰色矩形,在彈出的顔色選擇器中,将rgb通道設定為61、63和92,使星球的表面發出輕微的藍光。

11.将平滑度(smoothness)設定為0.1。

減小平滑度值将使物體表面對環境的反射程度降低,高光區域的尺寸增加,進而表面顯得更加粗糙。

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

當我們設定了天空盒并調節了場景亮度後,上面對星球的調整将會看起來更加明顯。接下來我們為場景設定天空盒。

到目前為止,我們的場景一直使用unity預設的天空盒,它隻設定了天空和地面的顔色。這種天空盒對于陸地場景比較合适,但難以用于太空場景。是以我們将建立一個新天空盒。

3.将新産生的材質重命名為“startf?ield”。

unity有一系列天空盒專用的着色器,接下來我們選擇其一使用。

4.在檢閱(inspector)面闆上單擊着色器(shader)下拉選單并選擇天空盒|六面(skybox | 6 sided)。

六面天空盒着色器可以為各個方向共設定六個紋理素材。

5.在項目(project)面闆上找到并單擊packt_textures檔案夾,使其内容顯示在資源(assets)面闆上。

6.在資源(assets)面闆上找到名為“starf?ield_front”的紋理素材,将其拖放到在檢閱(inspector)面闆上的第一個紋理槽中。

7.重複這個操作将另外五個星空紋理拖放到檢閱(inspector)面闆上的其他紋理槽中。

在檢閱面闆的底部有一個組裝好的天空盒的預覽圖。如果六個面中有某兩個面用錯了紋理,則可以從預覽圖中看到不比對的接縫。

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

在unity 5中天空盒在光照(lighting)面闆上設定。該面闆預設為隐藏狀态。

8.為打開光照(lighting)面闆,在界面頂部的菜單欄裡單擊視窗(window) | 光照(lighting)指令。

光照(lighting)面闆将浮在主視窗上面。

9.請将光照(lighting)面闆并排停靠在檢閱(inspector)面闆旁,或者其他不影響觀看場景(scene)的位置。

10.在項目(project)面闆上找到并單擊packt_materials檔案夾,使檔案夾内容顯示在資源(assets)面闆上。

11.将“starf?ield”材質拖放到光照(lighting)面闆上的天空盒(skybox)槽,替換原來的預設天空盒(default-skybox)。

現在天空盒會顯示在場景中了。

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

unity的預設光照設定使用天空盒的明亮區域來照亮場景。在檢閱(inspector)面闆上,我們可以在材質級别調節曝光值,并且可以旋轉天空盒。

接下來,我們将調節場景光照并且添加一些額外效果。

對于目前場景,我們可以繼續沿用預設的有向光源。該種光源能夠支援實時陰影效果。我們需要調節光源的位置和朝向以便使它看起來更像一個被擋在星球身後的太陽。

1.在層次(hierarchy)視圖裡單擊有向光源(directional light)遊戲對象。

2.在檢閱(inspector)面闆的頂部可以找到變換(transform)元件。将位置x(position x)的值設定為10.8,位置y(position y)的值設定為15.75,位置z(position z)的值設定為97。

這将使光源的位置位于星球的後面。

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

接下來我們将旋轉光源的朝向,使其面向宇航員和飛船。

3.繼續在檢閱(inspector)面闆上将變換(transform)元件的旋轉x(rotation x)的值設定為8.7,旋轉y(rotation y)的值設定為-174,旋轉z(rotation z)的值設定為-153。

這将使光源朝向宇航員,并且隻能照亮飛船的一個側邊。

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

在這裡我們可以添加更多的效果使場景看起來更接近電影級别。

在檢閱(inspector)面闆的底部附近,找到并勾選繪制光暈(draw halo)複選框。這個特性會在光源位置上建立一個可見的發光區域。繼續找到并單擊閃光右側的小圓按鈕。

在彈出的閃光選擇視窗裡,選擇太陽(sun)。

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

現在場景中的光源的周圍有了一圈閃光。

《Unity着色器和螢幕特效》——1.3 加載飛船維修場景并在場景中漫遊

場景光源的設定已完成。在第3章中我們将更加深入地學習光照效果。

繼續閱讀