Unity-使用斜視錐體
默認(rèn)情況下,視錐體圍繞攝像機(jī)的中心線對(duì)稱安放,但這并不是必須的。視錐體可設(shè)置為“傾斜的”,即一側(cè)與中心線的角度小于對(duì)側(cè)與中心線的角度。
這種做法使得圖像一側(cè)的透視看起來(lái)更加緊湊,給人的印象是觀察者非常靠近在該邊緣處可見(jiàn)的對(duì)象。此功能的一個(gè)用法示例是賽車(chē)游戲;如果視錐體在其底部邊緣變平,則從觀察者的角度看起來(lái)會(huì)更貼近道路,凸顯了速度感。

在內(nèi)置渲染管線中,使用斜視錐體的攝像機(jī)只能使用前向渲染路徑。如果攝像機(jī)設(shè)置為使用延遲著色 (Deferred Shading) 渲染路徑并使視錐體傾斜,Unity 會(huì)強(qiáng)制該攝像機(jī)使用前向渲染路徑。
設(shè)置視錐體傾斜度
雖然 Camera 組件沒(méi)有專門(mén)用于設(shè)置視錐體傾斜度的功能,但可以通過(guò)啟用攝像機(jī)的?Physical Camera?屬性并應(yīng)用 Lens Shift 設(shè)置,或通過(guò)添加腳本來(lái)更改攝像機(jī)的投影矩陣,從而實(shí)現(xiàn)這樣的功能。
使用 Lens Shift 設(shè)置視錐體傾斜度
啟用攝像機(jī)的?Physical Camera?屬性可顯示?Lens Shift?選項(xiàng)。可以使用這些選項(xiàng)來(lái)沿著 X 和 Y 軸偏移攝像機(jī)的焦點(diǎn)中心,從而最大限度減少渲染圖像的失真。
移動(dòng)鏡頭可以減小與移位方向相反側(cè)的視錐體角度。例如,向上移動(dòng)鏡頭時(shí),視錐體底部與攝像機(jī)中心線之間的角度會(huì)變小。

有關(guān) Physical Camera 選項(xiàng)的更多信息,請(qǐng)參閱關(guān)于物理攝像機(jī)的文檔。
有關(guān)設(shè)置各個(gè) Physical Camera 屬性的更多信息,請(qǐng)參閱?Camera 組件參考。
使用腳本設(shè)置視錐體傾斜度
以下腳本示例顯示了如何通過(guò)更改攝像機(jī)的投影矩陣來(lái)快速實(shí)現(xiàn)斜視錐體。請(qǐng)注意,僅當(dāng)游戲運(yùn)行播放模式時(shí)才能看到腳本的效果。
C# 腳本示例
沒(méi)有必要了解投影矩陣如何使用它。horizObl 和 vertObl 值分別設(shè)置水平和垂直傾斜量。值為零表示無(wú)傾斜。正值使視錐體向右或向上移動(dòng),從而使左邊或底邊變平。負(fù)值使視錐體向左或向下移動(dòng),從而使視錐體的右邊或頂邊變平。如果將此腳本添加到攝像機(jī)并在游戲運(yùn)行時(shí)將游戲切換到 Scene 視圖,則可以直接看到效果;在檢視面板中改變 horizObl 和 vertObl 的值時(shí),攝像機(jī)視錐體的線框會(huì)發(fā)生變化。任一變量中的值為 1 或 –1 表示視錐體的一側(cè)與中心線完全齊平。此范圍之外的值也是允許使用的,但通常沒(méi)有必要。