MMD聯(lián)動Unity學習筆記 Vol.6 天空盒

前言
????Skybox(天空盒)是整個3D場景的一個包裹,它可以顯示角色場景之外的世界。你可以使用天空盒來模擬無限的天空,山脈,海洋等等。在Unity里面可以輕松實現(xiàn)效果很贊的天空盒效果。這回我們共同學習天空盒的實現(xiàn)和實用。

何為天空盒?
????默認情況下,相機的背景顏色為深藍色。通常,顏色填充在視圖的任何空白區(qū)域(例如,在該場景的墻壁上方),但是可以將天空的圖片渲染為背景。這就是“天空盒"的用武之地。
????定義天空盒是圍繞攝像機的立方體,每側(cè)都有天空的圖像。無論相機朝哪個方向,它都會看著天空的照片。

????新場景實際上已經(jīng)分配了一個非常簡單的天空盒。這就是為什么天空具有從淺藍到深藍的漸變,而不僅僅是一個扁平的深藍色。如果打開照明設(shè)置窗口(菜單Window>Rendering> Lighting Settings),則第一個設(shè)置是Skybox Material,該設(shè)置的插槽顯示為default。此設(shè)置位于Environment(環(huán)境)面板中。這個窗口有許多與Unity中高級照明系統(tǒng)相關(guān)的設(shè)置面板,但是現(xiàn)在把注意力放在第一個設(shè)置。

天空盒著色器

????在Assets文件夾里面創(chuàng)建新的文件夾命名為Skybox,在里面新建一個材質(zhì)球(通常是右鍵單擊Create(創(chuàng)建)),從菜單中選擇Material(材質(zhì)),然后選擇它以查看Inspector(檢查器)中的設(shè)置。接下來,需要更改此材質(zhì)使用的著色器。材質(zhì)設(shè)置的頂部有一個Shader(著色器)菜單。天空球的Shader一共有四個種類6 Sided(六邊),Cubemap(盒形貼圖),Panoramic (全景化),Procedural(程序化)。下面我將它們分別進行說明。(這里不對Shade進行過多說明,以后再進行詳細解釋)

6 Sided? 在此著色器處于活動狀態(tài)時,材質(zhì)現(xiàn)在具有六個大紋理槽(而不僅僅是默認著色器具有的小Albedo紋理槽)。這六個紋理槽對應于立方體的六個邊,因此這些圖像應在邊緣匹配以顯得無縫。
Tint Color 整體色調(diào)。
Exposure 曝光度。
Rotation 貼圖旋轉(zhuǎn)度。

????Front,Back,Left,Right,Up,Down。天空球貼圖。這個Shader需要6張不同方向的貼圖。按照范例是里面提供貼圖的順序加上紋理貼圖就可以了。 這埯需要更改一個微妙的導入設(shè)置, 單擊導入的紋理以在Inspector中查看其屬性,將Wrap Mode(環(huán)繞模式)選項的Repeat(重復)改為Clamp(鉗制),通常,紋理可以在表面上重復平鋪。為了使它看起來無縫,圖像的相對邊緣實際上會一起滲透。然而,這種邊緣的混合可以在圖像相遇的天空中產(chǎn)生模糊的線條,因此Clamp設(shè)置將限制紋理的邊界并消除這種混合。

Render Queue(渲染隊列)可選擇從著色器,幾何體,阿爾法測試和透明體。
Double Sided Global Illumination(雙面全局光照)

范例:在Asset Store搜索cope下載Cope!Free skybox pack下載并導入。在導入的Cope!Free Skybox Pack文件夾中找到materials,里面有三個六邊的天空球材質(zhì)。在tiff文件夾中有這三個材質(zhì)的具體貼圖。

Cubemap? 這個著色器相當于上面著色器材質(zhì)的合成升級版。它將著色器所需要的六張貼圖整合成了一張貼圖。這樣使用起來也更加方便。
Tint Color 整體色調(diào)。
Exposure 曝光度。
Rotation 貼圖旋轉(zhuǎn)度。

Cubemap(HDR)盒形貼圖。這里要使用到類似十字架形狀的貼圖。有3D貼圖經(jīng)驗的同學應該馬上就能明白這種貼圖的原理。這種貼圖是用六張各個方向的圖片拼接而成的,用PS類軟件很容易制作出來,它的缺點也是容易出現(xiàn)接縫。(需要注意的是,盒形貼圖在導入Unity時,它的Inspector里面的Texture Shape(紋理形狀)默認選項是2D,這時要將它拖入貼圖中,必須先將紋理形狀改為Cube才能使用。還有多一句,改完之后點擊右下的Apply按鈕,新手經(jīng)常會忘記這個步驟。)


范例:使用搜索引擎搜索Skybox cube,在圖片中可以找到類似下面的圖片,將它導入Unity。


Panoramic?
Tint Color 整體色調(diào)。
Exposure 曝光度。
Rotation 旋轉(zhuǎn)度。

Spherical(HDR) 球形貼圖?;径际侵福ㄇ蛐危┤百N圖,是比較推薦的一種天空盒類型,它是由全景像機拍攝或多張圖片合成。一般來說JPG,HDR,EXR格式的全景圖都可以使用。JPG的優(yōu)點是文件小,但是動態(tài)范圍和色彩數(shù)都比較低,HDR和EXR的動態(tài)范圍,色彩數(shù)都較高,但EXR的圖片的精度要高于HDR圖片, 而HDR圖片的亮度范圍要高于openEXR圖片,文件比EXR要小一些。那么如何取舍,具體選擇哪種格式,還是要看個人或項目的需求而定。
Mapping 有兩個選項,6 Frames Layout(6幀層級)和Latitude Longitude Layout(
Image Type 可選擇360度和180度。選擇180度的話,天空球只對場景一半產(chǎn)生作用。還會出現(xiàn)Mirror on Back的勾選框,勾選后會鏡像前面的天空球映射到后面。

范例:使用搜索引擎搜索Skybox?Panoramic,在圖片中可以找到類似下面的圖片,將它導入Unity。

Procedural 這種天空盒著色器不能導入貼圖,只能使用參數(shù)設(shè)置,所以實現(xiàn)的效果相對簡單。
Sun 參數(shù)有三個選項None(沒有),Simple(簡單),High Quality(高質(zhì)量)。
Sun Size 太陽的大小。
Sun Size Convergence 在選擇高質(zhì)量的時才會出現(xiàn)的參數(shù),可以調(diào)節(jié)太陽的聚散程度。
Atmosphere Thickness 大氣的厚度。
Sky Tint 天空的色調(diào)。
Ground 地面的顏色。
Exposure 曝光度。


應用天空盒的兩種方法
?1.在當前攝像機上添加skybox? ?
首先選擇hierarchy下面的main camera(主攝像機),然后點擊component->Rendering->skybox。給主攝像機添加一個天空盒,這是我們就可以在攝像機的屬性欄看到 skybox 屬性。?

這里有兩個位置需要注意。第一點,攝像機Inspector下面camera組件的clear flags(清除標記)必須選擇skybox,否則天空盒是不會顯示出來的,這點要注意。第二點,這就是需要設(shè)置的天空盒材質(zhì)。點擊custom skybox屬性后面的小圓點圖標,在彈出的選擇欄中選擇剛剛想要的天空盒材質(zhì) (直接把天空盒材質(zhì)拖到這個位置也可以),然后可以在攝像機高預覽窗口中看到效果。
2.在當前場景上添加skybox

????將配置好的天空球材質(zhì)直接拖到場景中的空白處。或者打開照明設(shè)置窗口(菜單Window>Rendering> Lighting Settings),Scene選項卡的Environment(環(huán)境)的第一個設(shè)置就是Skybox Material(天空盒材質(zhì)),點擊后面小圓點添加或者直接拖入材質(zhì)球都可以。
(兩種方式的結(jié)果是一樣的。第一種方式的優(yōu)勢在于,假如世界中有多個攝像機的話,切換攝像機 需要看不同的天空,就可以使用第一種方式來實現(xiàn)。)

天空球?qū)Σ馁|(zhì)的影響
Material中Metallic代表環(huán)境光對物件的影響,Smoothness代表對天空盒子的反射值的影響。
點選Windows > Lighting > Settings
環(huán)境光在Environment Lightings/Source改成Color,Ambient的顏色就會影響環(huán)境光
Environment Reflection/Source改成Custom,Cube map的貼圖就會變成天空盒子反射貼圖。

使用太空場景制作天空球
????下載軟件Spacescape,下載地址alexcpeterson.com/spacescape/

????下載完成后,點擊File > Open,Export Skybox,保存為PNG文件,圖像大小設(shè)為1024, Export For設(shè)為UNITY。
????將圖像文件導入Unity的Assets中,新建材質(zhì)球,命名為skybox_20171012,將Shader設(shè)為Skybox/6 Sided,將右上角的窗口鎖上,將對應方向圖像拖進材質(zhì)貼圖中。如果圖像邊緣出現(xiàn)接縫的情況,有以下幾種解決辦法,按住Shift選中六張圖片,Wrap Mode由Repeat改為Clamp,F(xiàn)ilter Mode由Bilinear改為Piont(No Filter),Compression由Normal Quality改為None,以上三個參數(shù)某一個改變即可修復天空盒問題。Exposure調(diào)整好亮度,注意過高可能使天空盒出現(xiàn)明顯的鋸齒,Rotation調(diào)整天空盒的角度,Tint Color使天空盒變色。

? 傅老師的教程有介紹過天空盒的簡單用法

????官方的Standard Assets里面有天空盒的包,在Assets Store里面也可以搜索到豐富的天空盒資源。也可以試試自己制作天空盒材質(zhì)。
????場景里面有一個漂亮天空盒效果非常棒,可以營造出玩家周圍廣闊氛圍的錯覺。現(xiàn)在就來試一試,給空蕩的場景添加一個漂亮的天空盒吧。