Camera (カメラ) は、ゲーム世界をキャプチャしてプレイヤーに表示するデバイスです。カメラをカスタマイズして調整することで、独自性の高い表現力を発揮することができます。シーン内では、カメラを好きな数だけ追加できます。レンダリングの順序や、画面上のあらゆる場所、または、スクリーンの一部だけを表示する、など設定することも可能です。
Unity は、プロジェクトに使用する レンダリングパイプライン に応じて、Camera インスペクターに異なるプロパティを表示します。
プロパティ | 機能 |
---|---|
Clear Flags | 画面のどの部分をクリアするかを決定します。複数のカメラを使用して、異なるゲーム要素を描画する際に便利です。 |
Background | ビュー内のすべてのエレメントが描画され、スカイボックスがない場合に、残りの画面に適用される色です。 |
Culling Mask | カメラに表示されるように、オブジェクトのレイヤーを含めたり取り除いたりします。インスペクター上でオブジェクトにレイヤーを割り当てます。 |
Projection | 眺望をシミュレートするカメラの方法を切り替えます。 |
Perspective | カメラが眼に見えるような見え方 (透視法) でオブジェクトをレンダリングします。 |
Orthographic | 透視の感覚なしに (平行投影法)、カメラがオブジェクトを均一にレンダリングします。 注意: ディファードレンダリングは Orthographic モードに適応していません。フォワードレンダリングが常に使用されます。 |
Size (Orthographic を選択した場合) | Orthographic に設定した場合のカメラのビューポイントのサイズ。 |
FOV Axis (Perspective に設定した場合) | FOV の軸 |
Horizontal | カメラは水平方向の FOV 軸を使います。 |
Vertical | カメラは垂直方向の FOV 軸を使います。 |
Field of view (Perspective に設定した場合) | FOV Axis ドロップダウンで指定された軸に沿って測定されたカメラのビュー角度 (単位は度)。 |
Physical Camera | このボックスにチェックを入れると、カメラの Physical Camera (物理カメラ) プロパティを有効にします。 Physical Camera プロパティを有効にすると、現実世界のカメラ属性をシミュレートするプロパティ、Focal Length、Sensor Size、Lens Shift を使用して Field of View (有効視野、FOV) を計算します。 このボックスをチェックするまで、Physical Camera のプロパティはインスペクターに表示されません。 |
Focal Length | カメラセンサーとカメラレンズ間の距離 (ミリメートル) を設定します。 数値が小さいほど、FOV は広がります。また、その逆も言えます。 この値を変更すると、Unity は FOV プロパティを自動的に更新します。 |
Sensor Type | カメラがシミュレートする現実世界のカメラ形式を指定します。リストから希望の形式を選択します。 カメラフォーマットを選択すると、Unity は自動的に Sensor Size > X と Y プロパティを正しい値に設定します。 Sensor Size の値を手動で変更すると、Unity は自動的にこのプロパティを Custom に設定します。 |
Sensor Size | カメラセンサーのサイズをミリメートル単位で設定します。 Sensor Type を選択すると、X と Y の値が自動的に設定されます。必要に応じてカスタム値を入力できます。 |
X | センサーの幅 |
Y | センサーの高さ |
Lens Shift | 中心から水平または垂直にレンズをシフトします。値はセンサーサイズの倍数です。例えば、X 軸に沿ってシフト値 0.5 を適用すると、センサーの水平サイズの半分だけセンサーをオフセットします。 レンズシフトを使用して、カメラが被写体に対してある角度 (例えば、平行線の収束など) を取っているときに発生する歪みを補正することができます。 カメラ錐台を 斜め にするには、レンズをどちらかの軸に沿ってシフトします。 |
X | 水平センサーのオフセット |
Y | 垂直センサーのオフセット |
Gate Fit |
解像度ゲート (ゲームビューのサイズ/アスペクト比) のサイズを フィルムゲート (物理カメラセンサーのサイズ/アスペクト比) に関連づけて変更するオプション。 解像度ゲートとフィルムゲートの詳細は、物理カメラ を参照してください。 |
Vertical | 解像度ゲートをフィルムゲートの高さに合わせます。 センサーのアスペクト比がゲームビューのアスペクト比より大きい場合、レンダリングされた画像の側面がトリミングされます。 センサーのアスペクト比がゲームビューのアスペクト比よりも小さい場合、Unity はレンダリングされた画像の側面をオーバースキャンします。 この設定を選択すると、センサー幅 (Sensor Size の X プロパティ) を変更してもレンダリング画像に影響しません。 |
Horizontal | 解像度ゲートをフィルムゲートの幅に合わせます。 センサーのアスペクト比がゲームビューのアスペクト比より大きい場合、レンダリングされた画像の上下をオーバースキャンします。 センサーのアスペクト比がゲームビューのアスペクト比よりも小さい場合、Unity はレンダリングされた画像の上下をトリミングします。 この設定を選択すると、センサーの高さ (Sensor Size の Y プロパティ) を変更してもレンダリング画像に影響しません。 |
Fill | 解像度ゲートをフィルムゲートの幅または高さのいずれか小さい方に合わせます。これにより、レンダリングした画像をトリミングします。 |
Overscan | 解像度ゲートをフィルムゲートの幅または高さのいずれか大きい方に合わせます。これにより、レンダリングされた画像をオーバースキャンします。 |
None | 解像度ゲートを無視し、フィルムゲートのみを使用します。これにより、レンダリングされた画像をゲームビューのアスペクト比に合わせて拡大します。 |
Clipping Planes | レンダリングを開始および停止するカメラからの距離。 |
Near | 描画が行われるカメラにもっとも近い点。 |
Far | 描画が行われるカメラからもっとも遠い点。 |
Viewport Rect | 画面のどこにこのカメラビューを描画するかを示す 4 つの値。ビューポート座標で計測されます (値 0–1)。 |
X | カメラビューの出力の水平方向の開始位置。 |
Y | カメラビューの出力の垂直方向の開始位置。 |
W (Width) | カメラビューの画面上の出力の幅。 |
H (Height) | カメラビューの画面上の出力の高さ。 |
Depth | 描画順でのカメラの位置。大きい値を持つカメラが、小さい値のカメラの手前に描画されます。 |
Rendering Path | カメラが使用するレンダリング方法を定義するオプション。 |
Use Player Settings | このカメラは、Player 設定で指定されたレンダリングパスを使用します。 |
Vertex Lit | このカメラでレンダリングされたオブジェクトはすべて、頂点ライトオブジェクトとしてレンダリングされます。 |
Forward | すべてのオブジェクトがマテリアルごとに 1 つのパスでレンダリングされます。 |
Deferred Lighting | すべてのオブジェクトは、ライトなしで 1 回描画され、その後、すべてのオブジェクトのライトがレンダーキューの最後にまとめてレンダリングされます。注意: カメラの投影モードが Orthographic に設定されている場合は、この値はオーバーライドされて、カメラは常にフォワードレンダリングになります。 |
Target Texture | カメラビューの出力が含まれた レンダーテクスチャ への参照。この参照を有効にすると、このカメラは画面に描画しなくなります。 |
Occlusion Culling | このカメラのオクルージョンカリングを有効にします。オクルージョンカリングを使うと、他のオブジェクトの背後に隠れている (例えば、壁に隠れている) オブジェクトはレンダリングされません。詳しくは、オクルージョンカリング を参照してください。 |
Allow HDR | このカメラのハイダイナミックレンジレンダリングを有効にします。詳細は HDR レンダリング を参照してください。 |
Allow MSAA | このカメラのマルチサンプリングアンチエイリアス (MSAA) を有効にします。 |
Allow Dynamic Resolution | このカメラの動的解像度 (Dynamic Resolution) レンダリングを有効にします。詳細は動的解像度 を参照してください。 |
Target Display | どの外部デバイスにレンダリングするかを定義します。1 から 8 までの間で選択可能です。 |
カメラは、プレイヤーにゲームを表示する重要な役割を果たします。想像できるあらゆる種類の効果を達成するためのカスタマイズ、スクリプティング、または親子付けが可能です。パズルゲームの場合、パズル全体が見えるように、カメラを静止状態に維持できます。ファーストパーソンシューティングゲームの場合、カメラとプレイヤーキャラクターに親子関係を設定して、カメラをキャラクター目線に配置できます。レースゲームでは、プレイヤー車両の後ろをカメラに追跡させるのが望ましいでしょう。
複数のカメラを作成し、それぞれに異なる Depth を割り当てることができます。低い Depth から高い Depth の順にカメラが描画されます。言い換えると、Depth が 2 のカメラは、Depth が 1 のカメラの手前に描画されます。Normalized View Port Rectangle プロパティの値を調整して、画面上のカメラのビューのサイズ変更や配置を行うことができます。これにより、ミサイルカメラ、マップビュー、バックミラーのような複数の小さいビューを作成できます。
Unity は様々なレンダリングパスをサポートします。ゲームコンテンツとターゲットプラットフォーム/ハードウェアに応じて、どれを使用するかを選択します。異なるレンダリングパスは、主にライトとシャドウに影響する様々な機能とパフォーマンスの特徴を持っています。 プロジェクトで使用されるレンダリングパスは Player 設定で選択します。また、カメラごとにオーバーライドすることもできます。
レンダリングパスの詳細については、レンダリングパス を参照してください。
各カメラは、そのビューを描画する際に、色と深度に関する情報を格納します。画面の描画されない部分は空っぽで、デフォルトではスカイボックスが表示されます。複数のカメラを使用する場合、各カメラはバッファにそれ自体の色と深度に関する情報を格納し、各カメラがレンダリングを行うたびに、より多くのデータを蓄積します。シーンにあるすべてのカメラがそのビューをレンダリングするので、 Clear Flags を設定して、収集された様々なバッファ情報をクリアできます。そのためには、次の 4 つのオプションから 1 つを選択します。
これがデフォルトの設定です。画面の空の部分には現在のカメラのスカイボックスが表示されます。現在のカメラにスカイボックスが設定されていない場合、Lighting ウィンドウ で選択されたスカイボックスになります (Window > Rendering > Lighting)。次に、Background Color にフォールバックします。代わりに Skybox コンポーネント をカメラに追加することもできます。新しいスカイボックスを作成したい場合は、スカイボックスの作成方法 を参照してください。
画面の空白の部分には、現在のカメラの Background Color が表示されます。
例えばプレイヤーの銃を背景で隠されないように描画したい場合は、1 台のカメラの Depth を 0 に設定して背景を描画し、もう 1 台のカメラの Depth を 1 に設定して武器のみを描画させます。武器を表示するカメラの Clear Flags は、Depth only に設定する必要があります。これにより、画面上の背景空間の表示は維持されますが、各オブジェクトが 3D 空間内でどこに存在するか、という情報はすべて破棄されます。銃が描画されるとき、銃がいくら壁に近くても、銃の不透明な部分が一番上に描画されます。
このモードでは、色と深度のバッファのいずれもクリアされません。その結果、各フレームが次のフレーム上に描画され、シミのように見える効果が得られます。これは通常はゲームでは使用されず、たいてい、カスタムシェーダーと併用されます。
GPU (たいていはモバイル GPU) の中には、画面をクリアしないとコンテンツが次のフレームで定義されないものがあります。システムの中には、画面が前のフレームの画像、真っ黒な画面、ランダムな色のピクセルを含む場合があります。
Clipping Planes (クリップ面) の Near と Far プロパティは、カメラのビューの開始および終了場所を決定します。カメラの方向に対して垂直に面が配置され、その位置から測定されます。Near plane (ニアクリップ面) は、描画されるもっとも近い場所で、Far plane (ファークリップ面) はもっとも遠い場所になります。
また、クリップ面によって、深度バッファの精度がシーン上にどう配分されるかが決まります。一般に、バッファの精度を高めるには、ニアクリップ面 をできるだけ遠くに移動させた方がよいです。
ニアとファーのクリップ面とカメラの視野角で定義された平面は、いわゆるカメラの錐台を示します。Unity では、この錐台外にあるオブジェクトは表示されません。これは、錐台カリングと呼ばれます。錐台カリングは、ゲーム内でオクルージョンカリングが使用されているか否かに関係なく発生します。
パフォーマンス上の理由から、より小さいオブジェクトを早めにカリングしたい場合があるでしょう。例えば、小さい岩や破片は、大きい建物に比べて、短い距離でも非表示にする事ができます。これを行うには、小さいオブジェクトを 別のレイヤー に置き、Camera.layerCullDistances スクリプト関数を使用して、レイヤーごとのカリング距離を設定します。
Culling Mask (カリングマスク) は、レイヤーを使用してオブジェクトのグループを選択的にレンダリングするのに使用されます。レイヤーの使用法については、レイヤー を参照してください。
Normalized Viewport Rectangles (正規化したビューポート矩形) は、現在のカメラビューが描画される画面の一定の部分を定義するためのものです。画面の左下ににマップビューを、右上にミサイルチップビューを配置できます。少し設計を行なうだけで、Viewport Rectangle を使用して、独自の動作を作成できます。
Normalized Viewport Rectangle を使用して、2 プレイヤー用に 2 分割した画面効果を簡単に作成できます。2 台のカメラを作成後、カメラの H 値を 0.5 に設定し、プレイヤー 1 の Y 値を 0.5 に、プレイヤー 2 の Y 値を 0 に変更します。これにより、プレイヤー 1 のカメラが画面の半分上から上部に表示され、プレイヤー 2 のカメラが下部で始まり、画面の半分で停止します。
カメラを Orthographic (平行投影) にすると、カメラのビューからすべての景色が削除されます。これはアイソメトリックまたは 2D ゲームの作成に便利です。
フォグは Orthographic カメラモードでは均一に描画され、それゆえに期待通りに表示されない場合があることに注意してください。これは、投影後のスペースの Z 座標がフォグの “深度” に使用されるためです。これは、平行投影カメラにとって厳密には正確ではありませんが、レンダリング中のパフォーマンスのために使用されます。
カメラのビューを、別のオブジェクトに適用できる テクスチャ に変えます。これを使うと、競技場のビデオモニターや監視カメラ、反射などを簡単に作成できます。
1 つのカメラにつき 8 つまでターゲットディスプレイを設定できます。カメラは 8 つのモニターのうちの 1 つにレンダリングするよう制御されています。これは PC、Mac、Linux だけに適用されます。ゲームビューでは、Camera インスペクターで選択された画像が表示されます。