Unity Camera Orthographic Size 攝像機大小

如圖,Unity的Camera的投影(Projection)設置有如下兩種,正交(Orthographic)和透視(Perspective)。

正交模式下的話,攝像機是以一個固定的大小(Size),平行觀察。被觀察的物體不會因離攝像機的遠近,而導致最終顯示在屏幕的大小位置不同。物體旋轉的話,在屏幕上的效果只會邊長或變短,並不會有前大後小的效果(2D效果)

透視模式下的話,攝像機是以一個角度(Field of View),擴散觀察。被觀察的物體會因離攝像機的遠近,而導致最終顯示在屏幕的大小位置不同。物體旋轉會有離攝像機近的部位顯示的偏大,遠的部位偏小的效果(3D效果)

 

這個時候,有一個問題是,在被觀察的物體不動的情況下,當我用正交攝像機投影出一個畫面的時候,此時將攝像機的投影模式改爲投影模式,該如何設置參數,從而保證看到的畫面不變。(實際情景是,FairyGUI的Stage Camera的正交攝像頭,但是美術那邊想要實現3D UI 的效果,所以想把Stage Camera改爲透視攝像頭,但是如何設置角度與位置使得UI可以完整的顯示在屏幕上)

我們可以看出透視攝像機在不同距離的橫切面是不同的屏幕大小,所以我們要找到其中一個距離的屏幕大小,正好和正交攝像機的屏幕大小一樣即可。

所以我們先要來了解下所謂的攝像機屏幕大小的概念Orthographic Size

Orthographic Size

在正交模式下,我們設置Size的值,攝像機的大小會隨之變動,那麼這個值和攝像機的大小是什麼關係呢?

簡單的理解就是,size的值是正交攝像機高度的一半。當你拉伸屏幕窗口的時候,攝像機的高度不變,寬度改變。比如,我們Size設置的爲7,表示屏幕的高度爲14unit。

我們可以通過建立幾個單位爲1unit的cube進行驗證,如圖,我們用七個單位爲1unit的cube,排成一排,正好是屏幕高度的一半。

知道Size的概念後,我們如果要使透視攝像機也一樣顯示Size=7的屏幕大小的話,只需要使得,當透視攝像機Field of View 爲α時,在距離x的情況下,橫切面的高度的一半爲7即可,如圖

根據三角函數我們可以得出 x = 7÷ tan(α÷2)

爲了方便計算,我們可以把Field of View設爲90度,則,tan45=1,所以我們只要將攝像機的z軸位置設置爲-7,即可達到和正交攝像機size=7時,一樣的屏幕效果(被觀察的物體z軸爲0)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章