構成
Unreal Engine のデフォルトではパースペクティブ投影を使用します。 ただし、この投影モデルは、広い視野で作業していると、ジオメトリに歪みが発生します。 たとえば、FOV が 120 の球体の場合は非常に顕著です。
そのため、Unreal Engine では、パニニ投影を使用してこの問題の修正を試みるオプションのポストプロセス パスを提供します。 このポストプロセスの目的は、パースペクティブ投影ではなくパニニ投影を使用する必要がある位置でレンダリングされるピクセルを移動させることです。 設定するには
r.LensDistortion.Panini.D > 0に設定するだけです
。 このポストプロセス エフェクトはアップスケーリング パスで実行されます。 r.ScreenPercentage != 100 または
r.LensDistortion.Panini.D > 0に設定するだけです
。 このパラメータの詳細については、このページの下部に記載されているオリジナルの研究論文を直接参照してください。
r.LensDistortion.Panini.D > 0 では、エフェクトを直接強調します。 唯一のパラメータではなく、紙のハード圧縮と線形補間 (r.LensDistortion.Panini.S) です。 また、一部の球体がまだ角に映っているように見える場合は、このパラメータも微調整できます。 ただし、r.LensDistortion.Panini.S < 0 の場合、レンダリングされていない黒く見えるピクセルが角に表示され始めます。
このエフェクトの仕組みをより詳しく把握するために、r.LensDistortion.ScreenFit も変更できます。 留意すべき点として、パースペクティブ投影のピクセルの一部は、最終的には画面の上部と下部に近い画面には表示されないということを覚えておいてください。
直線
パニニ投影ではライン上でいくつかの保証がもたらされます。 まず、垂直方向のラインは、r.LensDistortion.Panini.D と r.LensDistortion.Panini.S に対してまっすぐに維持されます。 次に、画面の中央を通るラインは、任意の r.LensDistortion.Panini.D に対しても直線的なままであることが保証されていますが、r.LensDistortion.Panini.S = 0 です。 したがって、この数学的プロパティは、ファースト パーソン シューター ゲームに最適です。画面の中心に向いた武器のパニニ投影は、中心に向かう直線を維持するためです。
中心ぼかし
このポストプロセス効果の問題の 1 つは、画面の中心がぼやける現象が
r.LensDistortion.Panini.D
の増加に伴い増加します。 パニニ投影は、特にシャープニングフィルターを活用して、この現象に対処するためにアップスケールパスに実装されています。 しかし、それだけでは問題を解決できないことがあります。 そのため、r.ScreenPercentage の値を大きくする必要がある場合もあります。ただし、描画するピクセル数が増えるので、すべてのレンダリング パフォーマンスでコストがかかります。 小さい値のプレイヤーを選択することで
r.LensDistortion.Panini.D
より高いスクリーン比率を確保できないハードウェアでも、アップスケールパスのシャープニングフィルターのみを使用することでこのエフェクトが得られます。
パニニ投影を使用するもう 1 つの方法は、マテリアルのワールド位置オフセット入力ピンに接続されるワールド位置オフセットを出力するマテリアル関数を使用することです。 Unreal Tournament では、これを使用し、パースペクティブ投影の歪みを修正するために、異なる FOV で武器をレンダリングします。 UTのgithubリポジトリで確認できます