unity5 Orthographic模式相機視截體尺寸計算

一,經過編輯器中數值計算。面試

如圖,相機爲Orthographic模式,其camera size爲5.57,是什麼含義呢,通過測量,發現視圖中視截體的高度是5.57x2。算法

那麼視截體的寬度怎麼決定呢?編輯器

作下面試驗,前面屏幕尺寸選的是Web(600x900),因此 視截體寬度=視截體長度/900*600=7.426。經測量,這個值是對的。spa

假如咱們將屏幕規格選爲5:4,如圖:3d

而後再回到Scene視圖下,能夠看到視截體的形狀發生了變化:blog

不過能夠看出視截體的高度並無發生變化,仍然是5.57x2。按照前面的算法,視截體寬度=視截體高度/4*5=13.925。經測量,這個值是對的。rust

另外,若是調整Viewport Rect的W和H,也會影響視截體形狀,但只要H不取0,視截體高度就永遠等於2xsize值(5.57x2),因此有意義的只是W和H的比值。bug

因而能夠總結:float

在Orthographic模式下,視截體尺寸可以下計算:im

視截體高度= camera.size

視截體寬度= 視截體高度*(screenWidth/screenHeight)*(camera.viewportRect.W/camera.viewportRect.H)

二,在腳本中計算。

 

  public GameObject mainCamera;

  void Start () {

        float frustumHeight = mainCamera.GetComponent<Camera> ().orthographicSize*2;
        float frustumWidth = frustumHeight*mainCamera.GetComponent<Camera> ().aspect;
        Debug.Log (frustumWidth);
        Debug.Log (frustumHeight);

    }

在腳本中直接用mainCamera.GetComponent<Camera> ().aspect便可,裏面已經包含了screen長寬比和viewportRect長寬比的影響。

相關文章
相關標籤/搜索