1. 程式人生 > >Unity Camera & Maya Camera FOV

Unity Camera & Maya Camera FOV

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

針對我們的需求,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°