Unity Camera -- (3)控制相機(jī)能看到的東西
?使用剪裁平面(Clipping Planes)定義相機(jī)可視范圍
? ? ? ? Clipping Planes定義了相機(jī)所能看到的場景范圍。在有些時(shí)候,限制相機(jī)所能看到的范圍是出于風(fēng)格上的考量,但編輯Clipping Planes的主要目的是為了優(yōu)化性能。相機(jī)所需要渲染的東西越少,程序的負(fù)載就越低。
? ? ? ? 相機(jī)的剪裁平面有兩個(gè)參數(shù)值:near(近平面)和far(遠(yuǎn)平面)。near定義了離相機(jī)最近且還能被相機(jī)所渲染的平面所處位置;far則是相反的一個(gè)平面。
? ? ? ? 對(duì)于正交投影相機(jī)來說,遠(yuǎn)近平面呈金字塔形狀,可以在場景視圖中選中了相機(jī)后看到:


? ? ? ? 1. Hierarchy中選中Main Camera,縮放一下場景視圖以便能觀察到相機(jī)整體遠(yuǎn)近平面的情況。
? ? ? ? 2. 在Main Camera的Inspector中,修改一下Clipping Planes里的Far參數(shù),從1000改為100,從100改為10,然后從10改為1。觀察一下場景視圖中相機(jī)的遠(yuǎn)近平面線框的情況以及相機(jī)預(yù)覽窗口的變化。
? ? ? ? 我們可以看到,隨著Far的減小,相機(jī)所能看到的東西也跟著減少。原來能夠被看到的東西,看不見之后,會(huì)用背景做填充(一般是天空盒背景)。
? ? ? ? 3. 在場景視圖中,我們使用移動(dòng)工具,讓相機(jī)沿著z軸向前平移。
? ? ? ? ? ? ?隨著相機(jī)的向前平移,我們可以看到之前不可見的物體,到達(dá)了Far平面范圍內(nèi)后,會(huì)突然跳出來。雖然這種效果可以被刻意用來做一些風(fēng)格化的需求,但一般來說,在游戲或?qū)崟r(shí)應(yīng)用要盡量避免。一般我們會(huì)設(shè)置一個(gè)較大的Far值,讓用戶感受不到這種物體突然消失或突然出現(xiàn)的現(xiàn)象。這里我們將Far設(shè)置回默認(rèn)的1000。
? ? ? ? 4. 近平面參數(shù)Near的意思和Far是類似的,我們也可以調(diào)整一下這個(gè)參數(shù)。但有一個(gè)常見的問題是,當(dāng)角色或某個(gè)游戲物體的模型有部分處于近平面外的時(shí)候,我們可能會(huì)看到物體內(nèi)部的mesh。

使用culling masks來隱藏或顯示物體
? ? ? ? 如果有一個(gè)物體處于相機(jī)的Near和Far平面之內(nèi),但我們又要隱藏或顯示它時(shí)該怎么做呢?解決這個(gè)問題有多種方法,對(duì)于相機(jī)來說,有一個(gè)culling masks可以用來實(shí)現(xiàn)這個(gè)功能。
? ? ? ? 1. 場景視圖中,選中紅色的膠囊體,按F聚焦。
? ? ? ? 2. 在膠囊體的Inspector中,選擇Layer?-> Add Layer, 然后將User Layer6設(shè)置為Culled。




修改背景類型
? ? ? ? 默認(rèn)情況下,場景會(huì)使用一個(gè)默認(rèn)的天空盒作為背景。這個(gè)天空盒和Directional Light(也是創(chuàng)建場景時(shí)默認(rèn)的平行光源)是綁定的。這兩個(gè)物體一起為場景的環(huán)境光(ambient light)起到了貢獻(xiàn)。雖然天空盒及相關(guān)光照是由天空盒的shader和光照屬性所決定的,但camera可以管理在場景中天空盒是否可見。
? ? ? ? 1.調(diào)整相機(jī)視角,確保相機(jī)能夠看到天空盒。
? ? ? ? 2. 在Inspector中,找到Camera組件的Enviroment部分
? ? ? ? 3. 將Background Type從Skybox修改為Solid Color

? ? ? ? 5. 點(diǎn)擊Background的顏色條,將顏色修改為其他顏色試試,比如綠色。
