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


一,通過編輯器中數值計算。

如圖,相機為Orthographic模式,其camera size為5.57,是什么含義呢,經過測量,發現視圖中視截體的高度是5.57x2。

那么視截體的寬度怎么決定呢?

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

假如我們將屏幕規格選為5:4,如圖:

然后再回到Scene視圖下,可以看到視截體的形狀發生了變化:

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

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

於是可以總結:

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

視截體高度= 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長寬比的影響。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM