Camera は、世界をキャプチャしてプレイヤーに表示するデバイスです。カメラをカスタマイズして調整することで、独自性の高い表現力を発揮することができます。シーン内では、カメラを好きな数だけ追加できます。レンダリングの順序や、スクリーン上の位置、または、スクリーンの一部だけを表示する、など設定することも可能です。
プロパティー | 機能 |
---|---|
Clear Flags | 画面のどの部分をクリアするかを決定します。複数のカメラを使用して、異なるゲーム要素を描画する際に便利です。 |
Background | ビュー内のすべてのエレメントが描画され、スカイボックスがない場合に、残りの画面に適用される色です。 |
Culling Mask | カメラに表示されるように、オブジェクトのレイヤーを含めたり取り除いたりします。インスペクター上でオブジェクトにレイヤーを割り当てます。 |
Projection | 眺望をシミュレートするカメラの方法を切り替えます。 |
Perspective | カメラが眼に見えるような見え方 (透視法) でオブジェクトをレンダリングします。 |
Orthographic | 透視の感覚なしに (平行投影法)、カメラがオブジェクトを均一にレンダリングします。 注意: ディファードレンダリングは Orthographic モードに適応していません。フォワードレンダリングが常に使用されます。 |
Size (Orthographic に設定した場合) | Orthographic に設定した場合のカメラのビューポイントのサイズ。 |
Field of view (Perspective に設定した場合) | ローカルの Y 軸に沿った角度から算出した、カメラ視野角の大きさ。 |
Clipping Planes | レンダリングを開始および停止するカメラからの距離。 |
Near | 描画が行われるカメラにもっとも近い点。 |
Far | 描画が行われるカメラからもっとも遠い点。 |
Normalized View Port 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 | カメラビューからの出力が含まれた レンダーテクスチャ を参照します。参照を有効にすると、このカメラは画面に描画しなくなります。 |
HDR | HDR カメラでハイダイナミックレンジレンダリングをオンにします。 |
Target Display | どの外部デバイスにレンダリングするかを定義します。1 から 8 までの間で選択可能です。 |
カメラは、プレイヤーにゲームを見せる重要な要素です。想像できるあらゆる種類の効果が得られるよう、カメラをカスタマイズ、スクリプティング、または親子付けできます。パズルゲームの場合、パズル全体が見えるように、カメラを静止状態に維持できます。FPS の場合、カメラとプレイヤーキャラクターに親子関係を設定して、カメラをキャラクター目線に配置できます。レースゲームでは、カメラはプレイヤー車両を後ろから追跡させるのが望ましいでしょう。
複数のカメラを作成し、それぞれに異なる Depth を割り当てることができます。低い Depth から高い Depth の順にカメラが描画されます。言い換えると、Depth が 2 のカメラは、Depth が 1 のカメラの手前に描画されます。Normalized View Port Rectangle プロパティーの値を調整して、画面上のカメラのビューのサイズ変更や配置を行うことができます。これにより、ミサイルカメラ、マップビュー、バックミラーのような複数の小さいビューを作成できます。
Unity は、様々なレンダリングパスをサポートしています。ゲームの内容や対象のプラットフォーム / ハードウェアに応じて、どのパスを使用するか選ぶ必要があります。レンダリングパスごとに機能やパフォーマンス特性が異なるので、主に光と影に違いがでてきます。 プロジェクトに使用されるレンダリングパスは プレイヤー設定 で選択されます。さらに、各カメラに対して、レンダリングパスを無効にできます。
レンダリングパスの詳細については、レンダリングパス を参照してください。
各カメラは、そのビューを描画する際に、色と深度に関する情報を格納します。画面の描画されない部分は空っぽで、デフォルトではスカイボックスが表示されます。複数のカメラを使用する場合、各カメラはバッファにそれ自体の色と深度に関する情報を格納し、各カメラがレンダリングを行うたびに、より多くのデータを蓄積します。シーンにあるすべてのカメラがそのビューをレンダリングするので、 Clear Flags を設定して、収集された様々なバッファ情報をクリアできます。そのためには、次の 4 つのオプションから 1 つを選択します。
これはデフォルトの設定です。画面の空白の部分には、現在のカメラのスカイボックスが表示されます。現在のカメラにスカイボックスが設定されない場合、ライティングウィンドウ ( Window > Lighting ) で選択したスカイボックスになります。これにより、「 Background Color 」に戻ります。そうでない場合は、スカイボックス をカメラに追加できます。スカイボックスを新規作成したい場合は、スカイボックスの作成方法 を参照してください。
画面の空白の部分には、現在のカメラの 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 座標がフォグの “深さ” に使用されるためです。これは、orthographic カメラにとって厳密には正確ではありませんが、レンダリング中のパフォーマンスで恩恵を得るために使用されます。
カメラのビューを、別のオブジェクトに適用できる Texture に変えます。これを使うと、競技場のビデオモニターや監視カメラ、反射などを簡単に作成できます。
1つのカメラにつき 8つまでターゲットディスプレイを設定できます。カメラは 8つのモニターのうち 1つにレンダーするよう制御されています。これは PC、Mac、Linux だけに適応しています。ゲームビューで、Camera Inspector で選択された画像が表示されます。