Unity3D渲染系列之SkyBox天空盒
好幾周沒(méi)寫(xiě)博客了,這幾周要不是回家要不就是有好久不見(jiàn)的朋友過(guò)來(lái)看自己。回家、有朋友過(guò)來(lái)看自己的確很開(kāi)心,但是幾周下來(lái)自己變得懶惰了,要放縱自己的確是很容易的一件事。就像布爾費(fèi)墨說(shuō)“旅游是件很廉價(jià)的事”一樣,放縱自己也是很廉價(jià)的,只要你想,立馬就能實(shí)現(xiàn)。永遠(yuǎn)不要放縱自己!
說(shuō)了這么多,現(xiàn)在進(jìn)入主題吧。接下來(lái)我會(huì)寫(xiě)Unity3D渲染相關(guān)的一個(gè)系列教程。教程參考了擅碼網(wǎng)猴哥的《Unity3D虛擬現(xiàn)實(shí)(VR)之渲染基礎(chǔ)篇》,當(dāng)時(shí)看這個(gè)教程還是兩年前,這個(gè)教程對(duì)自己的幫助很大,大大加深了自己對(duì)Unity3D渲染的認(rèn)識(shí),推薦給大家。
接下來(lái),正式進(jìn)入天空盒。
1.天空盒是什么
(嗯,剛剛中斷了,去看了《哪吒之魔童降世》,國(guó)產(chǎn)動(dòng)畫(huà)電影也能做到國(guó)外那種水準(zhǔn)了,啥時(shí)候自己用Unity3D也能渲染出那種作品的話(huà)就牛逼了,哈哈。繼續(xù)吧。)
天空盒子(Skybox)實(shí)質(zhì)上是一個(gè)立方體紋理,如果不知到什么立方體紋理,別急,后面會(huì)告訴你。天空盒有什么作用呢?作用就是給場(chǎng)景一個(gè)大的背景,當(dāng)視野沒(méi)被物體擋住時(shí),你所看到的就是天空盒,另外還有個(gè)作用是給物體添加一點(diǎn)光(這一點(diǎn)本片文后面部分會(huì)專(zhuān)門(mén)講解)。
Unity3D新建一個(gè)場(chǎng)景的話(huà),會(huì)帶有一個(gè)默認(rèn)天空盒。見(jiàn)下圖。看到的地平線、灰色、藍(lán)色都是天空盒。
2.如何設(shè)置天空盒
按照以下路徑打開(kāi)LightingSetting面板。
Lighting設(shè)置面板如下。圖中勾選的位置即是天空盒的位置。以后這個(gè)面板會(huì)專(zhuān)門(mén)講解,這里只需知道天空盒在哪兒設(shè)置即可。
這里你可以刪除也可以設(shè)置為自定義的天空盒。
3.如何制作天空盒
首先創(chuàng)建一個(gè)材質(zhì)球,然后設(shè)置Shder如下。Skybox的Shader選擇哪一個(gè)(如選擇6 Sided還是 Cubemap要根據(jù)你的紋理來(lái)定,6 Sided需要前后左右上下6張圖,Cubemap只需要一張圖但要求這張圖是HDR模式的,什么是HDR,這里不說(shuō),涉及的東西太多了,聰明的你若想知道一定知道如何了解,不懂也不要緊,知道圖要這樣做就行了)。
3.1 6 Sided天空盒
我們先選擇6 Sided這個(gè)Shader,6個(gè)面的天空盒的素材可從這里下載。
然后上下左右前后分別指定上對(duì)應(yīng)的圖就行了。
然后直接將做好的天空盒材質(zhì)球拖拽到Scene視圖中或者在LightingSetting面板處設(shè)置。
設(shè)置完后立馬能看到效果。
3.2?HDR天空盒
另外新建一個(gè)材質(zhì)球,設(shè)置Shader為Cubemap。再重復(fù)一次,這種Shader只需要一張圖,但必須保證該圖是HDR模式的。(Unity3D官方也推薦使用這種方式制作天空盒)
導(dǎo)入一張HDR圖片,然后在該圖片的紋理設(shè)置面板處,將紋理類(lèi)型設(shè)置為Cube,如圖。(免費(fèi)的HDR天空盒)
設(shè)置完畢后將該紋理賦給之前新建的天空盒材質(zhì)球,再拖到Scene視圖中就可以看到效果。
設(shè)置完的效果,是不是比默認(rèn)天空盒漂亮很多呢。
4.天空盒的光源作用(環(huán)境光)
天空盒除了用來(lái)作為背景外還有一個(gè)作用就是充當(dāng)光源(環(huán)境光)。下面來(lái)看看具體是怎么回事。
現(xiàn)在新建一個(gè)場(chǎng)景,在此場(chǎng)景內(nèi)新建一個(gè)Cube物體,然后刪除場(chǎng)景中默認(rèn)帶有的平行光。
現(xiàn)在場(chǎng)景中沒(méi)有任何一個(gè)光源了,但是Cube物體仍然看得清楚,不是黑的。在現(xiàn)實(shí)世界,如果一個(gè)物體沒(méi)有燈(包括太陽(yáng))照到,我們?nèi)匀荒芸匆?jiàn)它,原因就是有環(huán)境光。(ps:標(biāo)準(zhǔn)光照模型描述一個(gè)物體的光照強(qiáng)度=環(huán)境光+漫反射+高光反射+自發(fā)光)
在Unity3D中這個(gè)環(huán)境光就來(lái)自于場(chǎng)景的天空盒。我們?cè)囍涯J(rèn)天空盒刪除掉。刪除掉之后下面會(huì)添加一個(gè)設(shè)置環(huán)境顏色的選項(xiàng),此時(shí)這個(gè)環(huán)境顏色就是環(huán)境光,因?yàn)闆](méi)天空盒了就用一種單一的顏色來(lái)指定,我們把它設(shè)置為全黑(就是沒(méi)有任何環(huán)境光了)。
?
這時(shí)我們?cè)倏碨cene視圖,Cube是不是全黑啦?!
這就是天空盒的光源作用。
5.天空盒Shader其他參數(shù)
Tint Color? 用來(lái)設(shè)置天空的顏色,會(huì)和圖片的顏色疊加
Exposure? 曝光強(qiáng)度,值越大,天空盒越亮(環(huán)境光越強(qiáng))
Rotation? ? 旋轉(zhuǎn)角度,可以用來(lái)模擬太陽(yáng)的位置(僅僅是用來(lái)展示太陽(yáng)的位置,太陽(yáng)光用平行光來(lái)模擬與天空盒無(wú)關(guān),讓玩家認(rèn)為太陽(yáng)光就是從那個(gè)太陽(yáng)所在的方向射過(guò)來(lái)的)
大家可以試著調(diào)整這幾個(gè)參數(shù),看看效果。
?
一不小心三個(gè)小時(shí)就過(guò)去了,時(shí)間過(guò)得真快啊。希望自己能朝著自己心中的星辰大海一步一步走下去。加油吧。
項(xiàng)目上傳到GitHub上了,見(jiàn)04.Rendering-1-Skybox,下次再會(huì)!
總結(jié)
以上是生活随笔為你收集整理的Unity3D渲染系列之SkyBox天空盒的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux线程全解
- 下一篇: svn admin 详细介绍