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

  • 相关阅读:
    ubuntu下文件安装与卸载
    webkit中的JavaScriptCore部分
    ubuntu 显示文件夹中的隐藏文件
    C语言中的fscanf函数
    test
    Use SandCastle to generate help document automatically.
    XElement Getting OuterXML and InnerXML
    XUACompatible meta 用法
    Adobe Dreamweaver CS5.5 中文版 下载 注册码
    The Difference Between jQuery’s .bind(), .live(), and .delegate()
  • 原文地址:https://www.cnblogs.com/wantnon/p/4365538.html
Copyright © 2011-2022 走看看