Unreal Engine は、アイソメトリックなゲームや建築ビジュアライゼーション プロジェクトなどのプロジェクトに使用できる、正射影カメラ投影をサポートしています。正投影カメラは、Lumen、Nanite、仮想シャドウ マップ (VSM)、テンポラル スーパー解像度、反射、ボリュメトリック、パス トレーシング、ウォーター システムなど、他の Unreal Engine 機能と連動します。
シーンの例




正射投影のカメラのセットアップ
正射投影でカメラを設定するには、以下の手順に従います。
- カメラ アクタをレベル内に配置します。
- レベル エディタ アウトライナー で配置されたカメラを選択します。
- [Camera Settings (カメラ設定)] の下の [Details (詳細)] パネルにある、[Projection Mode (投影モード)] ドロップダウンを使って [Orthographic (正投影)] を選択します。
- [Details (詳細)] パネルの [Actor Transforms (アクタ変換)] を使って、カメラの移動と回転を行います。
シネマティック カメラには正投影表示を使用するオプションがありません。

以下の設定を変更することで、正投影レンダリングを調整することができます。
設定名 | 説明 |
---|---|
正投影幅 | これを展開すると、メディアの解像度、フレームレート、サイズ、メソッド、形式、詳細度バイアスの組み合わせ、ミップとタイルの数の詳細が表示されます。 |
正投影平面を自動計算 | 選択した場合、指定された正投影幅で深度クリップ平面を自動的に解決します。選択しない場合は、正投影カメラの近距離クリップ平面と遠距離クリップ平面を手動で設定できます。 |
自動平面移動 | このカメラの平面を手動で調整します。ただしそれらの間の距離を維持します。正の値の場合は遠くの平面に、負の値の場合は近くの平面に移動します。 |
正投影の近距離クリッピング平面 | 正投影平面を自動計算 が選択されていない場合、正投影カメラの近くのクリップ平面の位置を設定します。 |
正投影の遠距離クリッピング平面 | 正投影平面を自動計算 が選択されていない場合、正投影カメラの遠くのクリップ平面の位置を設定します。 |
正投影平面を更新 | 現在のカメラの近い/遠い平面およびビュー原点を自動で調整し、クリッピングおよびライトのアーティファクトを回避します。 |
カメラの高さをビュー ターゲットとして使用 | 正投影平面を更新 が選択されている場合、この設定は現時点のカメラの高さを使用し、汎用ビューまでの距離を補正します (ビューターゲットが存在しない場合は擬似的な距離として)。 |
アスペクト比 | カメラ ビューのマスキングの幅と高さの比率を設定するか、ドロップダウンを使用して一般的な事前設定済みのアスペクト比のいずれかを選択します。 |
正投影平面の自動計算
Auto Calculate Ortho Planes プロパティは、地表面と比較したカメラの角度に基づいて、クリップに近い平面をスケーリングします。近いクリップ平面の距離は、正投影高さを使用して負の値に評価されます。近いクリップ平面のデフォルトの最小位置は、カメラの背後で適用される正投影高さの約 1.4 倍です。これは、以下のコンソール変数を使って補うことができます。
遠いクリップ平面の距離は、ピクセルあたりの Unreal 単位 (デフォルトではセンチメートルで測定) の比率を最初に決定します。この値は、近いクリップ平面と遠いクリップ平面間の距離を FP16 の最大値 (66504.0f) の倍数にスケーリングするために使用します。正投影高さと Unreal 単位とピクセルの比率によっては、UE_OLD_WORLD_MAX の距離 (21 km) までスケーリングできます。シーンが小さければ小さいほど、16 ビット バッファ縮小時に深度の精度を保つために、遠いクリップ平面の距離を短くする必要があります。
正投影平面の自動計算のコンソール変数
コンソール変数名 | 説明 |
---|---|
r.Ortho.AutoPlanes |
正投影カメラが近い/遠いクリップ平面の自動計算を使用することをグローバルに許可します。 |
r.AutoPlanes.ClampToMaxFPBuffer |
正投影平面を自動計算するときに、16 ビットの深度スケーリングを使用するかどうかを決定します。16 ビットのスケーリングは、発生する深度のダウンスケーリングに役立ちます。たとえば、HZB ダウンスケーリングでは、32 ビット テクスチャの代わりに 16 ビット テクスチャを使用します。この機能は、Unreal 単位 (デフォルトではセンチメートル) とピクセルの比率に基づいて、必要な最大深度スケールを計算します。小規模なシーンでは、ほとんどのアクタが妥当な可視錐台に収まるため、32 ビットの深度範囲は必要なく、代わりに 16 ビットの深度範囲を使用します。大規模なシーンでは、平面距離は、深度バッファの典型的なフルレンジである UE_OLD_WORLD_MAX (21 km) までスケールアップします。 |
r.Ortho.AutoPlanes.DepthScale |
デフォルトの FP16 Max (66504.0f) から 16 ビットの深度スケーリングを調整します。遠いクリップ面をそれほど遠くする必要がない場合に有効であり、深さデルタを改善します。 |
r.Ortho.AutoPlanes.ShiftPlanes |
錐台全体を Z 方向にシフトさせます。近いクリップ平面をカメラに近づけ、遠いクリップ平面の値を下げる必要がある場合に便利です (水平 2.5D のシーンなど)。 |
r.AutoPlanes.ScaleIncrementingUnits |
単位とピクセルの比率が大きくなるにつれて、近平面または遠平面の最小値と最大値をスケーリングするかどうかを選択します。たとえば、センチメートル、メートル、キロメートルへとスケーリングします。 |
ビュー原点の修正
正射影カメラには、奥行きがないためにカメラのワールド位置と実際のビューの位置が正確に一致しないという問題があります。これは、照明やその他のエフェクトが、ビューの位置とカメラの現実世界の位置との間で正しく解決されない場合に、視覚的に見ることができます。そのため、コンソール変数を使用してカメラのビュー原点を補正し、カメラのワールド位置ではなく真のビュー位置を表すことができます。


ビュー原点修正のコンソール変数
コンソール変数名 | 説明 |
---|---|
r.Ortho.AllowNearPlaneCorrection |
有効にすると、正投影カメラは近い平面の位置に合わせて自動的に更新され、カメラ位置が近いクリップ平面の位置に置き換えられて投影行列の計算が行われます。正投影の近いクリップ平面はカメラ位置より後方にあると、エンジンがカメラ位置より後方の照明を解決する際にいくつかの問題が発生するため、これが役立ちます。 |
r.Ortho.DefaultUpdateNearClipPlane |
近い平面補正を使用するときに更新する正投影の近いクリップ平面の値。 |
r.Ortho.CameraHeightAsViewTarget |
有効にすると、近い平面の補正を計算するときに、カメラの高さをビュー ターゲットとして使用します。主に VSM のクリップマップ選択に役立ち、平面付近での過補正を回避します。 |
仮想シャドウ マップ
Nanite と非 Nanite のジオメトリを混ぜて使用する場合、仮想シャドウ マップは、パースペクティブ モードでの処理の難しさを反映するように、正投影レンダリングで処理が難しくなることがあります。設定のバランスを取るのは難しいことがあります。以下のコンソール変数によって、VSM がどのように解決し、シーンに対して正しい描画解像度を選択するかを、カスタム コントロールすることができます。
仮想シャドウ マップのコンソール変数
コンソール変数名 | 説明 |
---|---|
r.Ortho.VSM.EstimateClipmapLevels |
有効にすると、現在のカメラの正投影幅に基づいて第 1 レベル VSM を計算します。 |
r.Ortho.VSM.ClipmapLODBias |
VSM 第 1 レベルの調整に使用する LOD バイアス。 |
r.Ortho.VSM.ProjectViewOrigin |
有効にすると、VSM クリップマップの WorldOrigin を移動して、ViewTarget (存在する場合) 周辺にフォーカスを合わせます。 |
r.Ortho.VSM.RayCastViewOrigin |
有効にすると、ViewTarget が存在しない場合 (スタンドアローン カメラの場合など)、レイキャストで ViewOrigin を推定します。 |
カメラ ビューのデバッグ
正投影カメラには、すべてのカメラ (エディタ ビューを除く) を強制的に正投影に解決するためのデバッグ オプションがあります。シッピング ビルドでは、これらのオプションは無効になっています。
カメラ ビューのデバッグのコンソール変数
コンソール変数名 | 説明 |
---|---|
r.Ortho.Debug.ForceAllCamerasToOrtho |
有効にすると、シーン内のすべてのカメラに正射投影ビューの使用を強制します。 |
r.Ortho.Debug.ForceOrthoWidth |
有効にすると、ForceAllCamerasToOrtho オプションを使用するときに正投影幅を調整します。 |
r.Ortho.Debug.ForceUseAutoPlanes |
有効にすると、ForceAllCamerasToOrtho オプションを使用するときに、近い/遠い自動クリップ平面の評価を使用します。 |
r.Ortho.Debug.ForceCameraNearPlane |
有効にすると、ForceAllCamerasToOrtho オプションを使用するときに、近いクリップ平面を調整します。ForceUseAutoPlanes が有効な場合は無視されます。 |
r.Ortho.Debug.ForceCameraFarPlane |
有効にすると、ForceAllCamerasToOrtho オプションを使用するときに、遠いクリップ平面を調整します。ForceUseAutoPlanes が有効な場合は無視されます。 |
r.Ortho.EditorDebugClipPlaneScale |
Lit モードのエディタ正投影デバッグ ビューポートにのみ影響します。現在の 正投影幅 に基づいて、近いクリップ平面を比例して変えるようにスケールを設定します。これは、ジオメトリがシーン内でクリップしたときに、正射投影ズームを変更すると変化します。デバッグ平面のビューで、さまざまなサイズの照らし出されたメッシュを視覚化する際に役立ちます。この値が変化すると、他の光のアーティファクトが現れることがあります。 |
制限事項と追記
Unreal Engine の優先順位は常にパースペクティブ ビュー カメラであり、エンジンの新機能が追加された場合、正投影カメラに最適化されない可能性がありますが、なるべく機能の同等性を保つようにする予定です。
以下のコンソール変数は、特定の場合に役立ちます。
コンソール変数名 | 説明 |
---|---|
r.Ortho.DepthThicknessScale |
シーンの深度厚さスケールを調整します。正投影シーンの奥行きは、通常、遠近法よりも比例して小さくなり、1/100 のスケールとなります。たとえば、Lumen 深度差テストは、このスケールの方が効果的に機能します。非常に小さな表面間深度差を使用する場合など、この値を使用して、さまざまなスクリーン トレース パスにわたって同時に深度厚さテスト値のスケールを調整する場合があります。 |
r.Ortho.CalculatingDepthThicknessScale |
深度厚さテストスケールを近平面/遠平面の差から自動的に導出するかどうか。これはデフォルトで有効になっています。ただし、無効 (0) の場合は、r.Ortho.DepthThicknessScale に指定されたスケーリングが使用されます。 |
r.Ortho.FogHeightAdjustment |
有効にすると、正投影カメラの高さがフォグのカットオフ高さを決定するために使用されます。 |
r.Ortho.UsePreviousMotionVelocityFlattenPass |
正投影カメラのモーション ブラー パスが、以前の平坦化されたテクスチャ (テンポラル スーパー解像度によるテクスチャなど) を使用するかどうかを設定します。注:無効にすると、遠くの平面にちらつきが発生することがあります。 |
ボリュメトリック クラウドと正投影カメラ
ボリュメトリックは正投影カメラ ビューで問題を引き起こす可能性があります。特にボリュメトリック クラウドではその傾向が顕著です。問題が発生する主な原因は、正投影ビューを使用した場合のシーンのスケーリング方法にあります。たとえば、正投影ビューでボリュメトリック クラウドを見ると、雲のパースペクティブな一部ではなく、10 メートル × 10 メートルのウィンドウのようなものが表示されます。