Version: 2022.2
言語: 日本語
カメラのトリック
カメラからの距離で求める錐台のサイズ

視錐台を理解する

錐台 という言葉はピラメッドのような形の上部を、底面と平行な面で切り取った形状を示します。これはパースペクティブカメラにより表示できてレンダリングされる領域です。次の仮想の実験によりどうしてそうなるかを説明します。

真っ直ぐな棒(ホウキの取っ手か鉛筆)をカメラに端をつけて、持ったまま写真を撮る状況を想像してください。もし棒をカメラレンズに垂直に真ん中に当てていれば写真には点しか見ることができません。棒の残りは隠れてしまいます。もし上部に移動した場合、下半分は見えるようになりますが、棒を上に傾けることで再び隠すことができます。続けて棒を上に移動してさらに上に向けると丸い端はいずれ端の上端に到達します。この時点で、棒の軌跡より上のオブジェクトは写真に表示されません。

棒を同様に移動して左、右、下、または水平、垂直に組み合わせて回転させることができます。“隠れた” 棒の角度は単にそれぞれの軸での、写真の中心からの距離に依存します。

この仮想実験の意味することは、カメラのイメージのあらゆる点はワールド座標系での直線に相当して、直線上では 1 点のみがイメージ上に表示できます。直線上の、その点より後ろにあるものは隠されます。

イメージの外端はイメージの隅に相当する境界線により定義されます。もし直線をカメラに向かって後ろ向きに辿った場合、最終的にひとつの点につながります。Unity では、この点はカメラの transform 位置と一致し、パースペクティブの中心と呼びます。画面の上端の中心と、パースペクティブの中心と、下端の中心とを、結んでできる角度は field of view (略して FOV) と呼ばれます。

前述のように、境界線の外にあるものはカメラにより表示されませんが、その他にも何をレンダリングするかについて二つの制約があります。ニアクリッピングプレーンとファークリッピングプレーンはカメラの XY 平面と平行で、中心から直線上である距離でセットされます。ニアクリッピングプレーンよりカメラに近いもの、ファークリッピングプレーンより遠いものは、レンダリングされません。

二つのクリッピングプレーンと境界線により切り取られたピラメッドの形状ができて、これを視錐台と呼びます。

The far clipping plane and floating point math

Objects, lights, and shadows might flicker if they’re far away. The flickering occurs because distances are too large to calculate positions precisely with floating point math. In each frame, the object, light, or shadow is at a slightly different position, so it moves in and out of the view frustum.

Minimise flickering using one of the following approaches:

  • Reduce the far clipping plane distance in the Camera component to avoid the distance of objects becoming too large for precise calculations.
  • Make everything in your scene smaller, to reduce distances across your whole scene.

Unity calculates lights and shadows with the world space position as the reference point, for example 0, 0, 0 in a 3D scene. Flickering occurs when lights and shadows are far away from the world space position. To minimise flickering, you can enable camera-relative culling, so Unity uses the camera position as the relative position for shadow calculations. See Culling settings in Graphics settings.

カメラのトリック
カメラからの距離で求める錐台のサイズ