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