zoukankan      html  css  js  c++  java
  • 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长宽比的影响。

  • 相关阅读:
    kubernetes入门(03)kubernetes的基本概念
    洛谷P3245 [HNOI2016]大数(莫队)
    洛谷P4462 [CQOI2018]异或序列(莫队)
    cf997C. Sky Full of Stars(组合数 容斥)
    cf1121F. Compress String(后缀自动机)
    洛谷P4704 太极剑(乱搞)
    洛谷P4926 [1007]倍杀测量者(差分约束)
    洛谷P4590 [TJOI2018]游园会(状压dp LCS)
    洛谷P4588 [TJOI2018]数学计算(线段树)
    洛谷P4592 [TJOI2018]异或(可持久化01Trie)
  • 原文地址:https://www.cnblogs.com/wantnon/p/4365538.html
Copyright © 2011-2022 走看看