視野角(FOV)の投影幾何学とアスペクト比換算マトリクス
3Dゲームエンジンにおいて、視野角(Field of View / FOV)は仮想カメラが空間を切り取る角度を定義します。一般的なゲームは中心投影(透視投影)を採用しているため、ウルトラワイドモニター(21:9や32:9)で水平視野角を広げすぎると、画面端の描画対象が横に激しく引き伸ばされる「擬似魚眼歪み」が発生します。ゲームごとにスライダーの基準(水平基準、垂直基準、4:3基準)が異なるため、適切な換算が必須です。
| エンジン / 代表タイトル | 採用しているFOV基準 | 16:9時の90°相当値 | 21:9時の90°相当値 | 画面端の歪みやすさ |
|---|---|---|---|---|
| Unreal Engine (標準) | 水平FOV (16:9固定) | 90° H-FOV(垂直約59°) | 自動Hor+で106°に拡張 | 中程度の周辺部引き伸ばし |
| Source Engine (CS2/TF2) | 4:3基準の水平FOV | 106° 実効水平FOV | 121° 実効水平FOV | 21:9で端が大きく歪む |
| Frostbite (Battlefield) | 垂直FOV (Vertical FOV) | 74° V-FOV(水平106°) | 74° V-FOV(水平121°) | 歪みが少なくアスペクト比変化に強い |
| Unity (標準カメラ) | 垂直FOV | 59° V-FOV(水平90°) | 59° V-FOV(水平106°) | 比率変化に対して極めて安定 |
ステップ1: 水平FOVから垂直FOVへの数学的換算
ゲーム間でエイムの感覚や距離感を統一するため、垂直FOVへ統一換算します:
計算式
垂直FOV = 2 * atan( tan(水平FOV / 2) * (画面縦解像度 / 画面横解像度) )
早見表(16:9基準)
- 一般的な水平90° -> 垂直FOV
59°に設定。 - オーバーウォッチ標準の水平103° -> 垂直FOV
71°に設定。 - 広視野の水平110° -> 垂直FOV
78°に設定。 - 21:9(3440x1440)環境では、垂直FOVを
71°〜74°に保つことで、画面中央の照準サイズを狂わせずに左右の視界のみを自然に121°まで拡張できます。
ステップ2: ウルトラワイドの上下カット(Vert-)防止とHor+固定
一部の粗雑な移植タイトルでは、21:9時に左右を広げるのではなく、16:9の上下を切り取って無理やり画面を埋める「Vert-」不具合が発生します:
- 視野が上下に狭くなっていないか確認します。
- Unreal Engine採用タイトルの場合、
Engine.iniを編集します:
[/Script/Engine.LocalPlayer]
AspectRatioAxisConstraint=AspectRatio_MaintainYFOV
AspectRatio_MaintainYFOVを指定することで、Y軸(垂直画角)を固定してX軸方向のみを追加描画させ、キャラや照準の歪みを防ぎます。
ステップ3: パニーニ投影(Panini Projection)による画面端の歪み補正
画角が110°を超える広視野環境での歪みと3D酔いを緩和します:
- ゲーム内のグラフィック設定に
Panini Projection(パニーニ投影)があるか確認します(近年のUE5タイトルに搭載)。 - パニーニ投影は画面外周部を円柱状に補正し、端の円形オブジェクトが楕円に伸びる現象や、柱が斜めに倒れるような歪みを防止します。
- 未対応のゲームでは、Flawless WidescreenやReShadeの
Panini Shaderを適用することで、外周部を圧縮し3D酔いを大幅に軽減できます。