カメラコンポーネント の Physical Camera (物理カメラ) プロパティは、Unity カメラで現実世界のカメラ形式のシミュレーションを行います。これは、現実世界のカメラを模倣した 3D モデリングアプリケーションからカメラ情報をインポートするのに便利です。
Unity はほとんどの 3D モデリングアプリケーションの物理カメラ設定と同じ設定を提供します。カメラが見ているものを制御する主な 2 つのプロパティは、Focal Length (焦点距離) と Sensor Size (センサーサイズ) です。
Focal Length: センサーとカメラレンズ間の距離。垂直方向の有効視野 (FOV) を決定します。Unity カメラが Physical Camera モードのとき、Focal Length を変更すると FOV もそれに応じて変更されます。Focal Length が短くなると FOV が大きくなり、その逆もまたしかりです。
Sensor Size: 画像をキャプチャーするセンサーの幅と高さ。これらは物理カメラのアスペクト比を決定します。現実世界のカメラ形式に対応したいくつかのプリセットのセンサーサイズから選択するか、または、カスタムサイズを設定できます。ゲームビューに設定したときに、センサーのアスペクト比がレンダリングされたアスペクト比と異なる場合、レンダリングされた画像に対してカメラ画像を一致させる方法を制御できます (後述の Gate Fit の情報を参照)。
Lens Shift (レンズシフト) は、カメラのレンズをセンサーから水平方向と垂直方向にオフセットします。これにより、焦点の中心を変更したり、レンダリングされたフレーム内の対象を、歪みの少ない、または歪みのない状態で再配置できます。
このテクニックは建築写真でよく見られます。例えば、高い建物をキャプチャーしたい場合は、カメラを回転させることができます。しかし、それは画像を歪ませ、2 本の垂直線が収束するように見えます。
カメラを回転させる代わりにレンズを上に移動すると、建物の上部を含むように画像の構図を変えることができ、しかも 2 本の垂直線がまっすぐにとどまります (収束しません)。
同様に、水平のレンズシフトを使用して、カメラを回転させることによって歪みを生じることなく、幅の広いオブジェクトをキャプチャできます。
レンズシフトの 1 つの副作用は、カメラの 視錐台 を斜めにしていることです。つまり、カメラの中心線と錐台の間の角度は、1 方の角度がもう 1 方の角度よりも小さくなります。
これを使用して、透視に基づいた視覚エフェクトを作成できます。例えば、レースゲームでは、遠近感を地面に対して近くに保ちたい場合があります。レンズシフトは、スクリプティングなしに斜め錐台を達成する方法です。
詳細については、斜めの錐台の使用を参照してください。
Camera コンポーネントの Gate Fit プロパティは、ゲームビューと物理カメラセンサーが異なるアスペクト比を持つ場合の動作を決定します。
Physical Camera モードでは、カメラに 2 つの “ゲート” があります。
Aspect ドロップダウンメニューで設定した解像度に応じて、ゲームビューでレンダリングされるエリアを “解像度ゲート” と呼びます。
Sensor Size プロパティの定義に応じて、カメラが実際に見るエリアを “フィルムゲート” と呼びます。
2 つのゲートのアスペクト比が異なる場合、Unity は解像度ゲートをフィルムゲートに “フィット” (一致) させます。いくつかのフィットモードがありますが、それらはすべて 3 つの結果のうちのいずれかになります。
シーンビューでゲートを表示しそれらがどのようにフィットしているかを見るには、カメラを選択し視錐台を見ます。解像度ゲートはカメラのファークリップ面です。フィルムゲートは、錐台の底の 2 番目の矩形です。
Gate Fit モードの選択に応じて、Unity が解像度ゲート (つまりカメラの視錐台) のサイズを変更する方法が決まります。フィルムゲートは常に同じサイズのままです。
以下は、各 Gate Fit モードの詳細についての説明です。
Gate Fit を Vertical に設定すると、Unity は解像度ゲートをフィルムゲートの高さ (Y 軸) に合わせます。センサーの幅 (Sensor Size > X) を変更しても、レンダリングされた画像には影響しません。
センサーのアスペクト比がゲームビューのアスペクト比より大きい場合は、レンダリングされた画像の側面がトリミングされます。
センサーのアスペクト比がゲームビューのアスペクト比よりも小さい場合、Unity はレンダリングされた画像の両側にオーバースキャンします。
Gate Fit を Horizontal に設定すると、Unity は解像度ゲートをフィルムゲートの幅 (X 軸) に合わせます。センサーの高さ (Sensor Size > Y) を変更しても、レンダリングされた画像には影響しません。
センサーのアスペクト比がゲームビューのアスペクト比よりも大きい場合、Unity はレンダリングされた画像の上下にオーバースキャンします。
センサーのアスペクト比がゲームビューのアスペクト比よりも小さい場合、Unity はレンダリングされた画像の上下をトリミングします。
Gate Fit を None に設定すると、Unity は解像度ゲートをフィルムゲートの幅と高さ (X 軸と Y 軸) に合わせます。Unity はレンダリングされた画像をゲームビューのアスペクト比に合わせて伸縮させます。
Gate Fit を Fill または Overscan に設定すると、解像度ゲートとフィルムゲートのアスペクト比に応じて、Unity は自動的に垂直か水平方向いずれかへ合わせます。