Unity中的Camera的FOV和Maya中Camera的Angle of View即使設置成相同值,預覽時結果會有很大差異
原因:
Unity Camera的FOV是Vertical FOV的角度
Maya Camera的Angle of View是Horizontal FOV的角度
解決方法
先保證Maya和Unity中的Aspect Ratio一致,然後再按照長寬比換算兩者各自應該使用的FOV或者Angle of View。
例如按照下面的方式設置,即可實現兩邊完全一樣
Unity中的設置:
- Field of View:45
- AspecRatio:4/3
Maya中的Camera設置:
- Angle of View:60
- AspecRatio:4/3
不同Aspect Ratio的屏幕適配
我們遊戲中對不同Aspect Ratio的屏幕的適配方法是:
- Vertical FOV維持不變
- Horizontal FOV = VerticalFOV * AspectRatio (此方法有誤差)
也就是說使用16:10設備的用戶在水平方向上看到的東西比使用4:3屏幕的用戶多!
製作過場動畫或者和相機關係密切的動畫時,建議在Maya中以4:3屏幕爲準,以保證沒有東西跑到畫面外
經過反覆測試發現horizontalFov和verticalFov的關係並沒有那麼簡單。
橫縱FOV與長寬比的關係如下:
tan(hFOV/2) = tan(vFOV/2) * aspect
參考:http://forum.unity3d.com/threads/how-to-calculate-horizontal-field-of-view.16114/
針對我們的需求,horizontalFov爲90°,verticalFov爲60°,那麼aspect應該是:
tan(hFOV/2) = tan(vFOV/2) * aspect
aspect = tan(hFOV/2) / tan(vFOV/2)
aspect = tan(90/2) / tan(60/2)
aspect = tan(45) / tan(30)
aspect = 1 / 0.57735 = 1.732
結論:當aspect爲1.732的時候,攝像機的horizontalFov爲90°,verticalFov爲60°