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长宽比的影响。

相关文章
相关标签/搜索