カメラリファレンス
フレアレイヤー

カメラ

Camera は、世界をキャプチャしてプレイヤーに表示するデバイスです。カメラをカスタマイズして調整することで、独自性の高い表現力を発揮することができます。シーン内では、カメラを好きな数だけ追加できます。レンダリングの順序や、スクリーン上の位置、または、スクリーンの一部だけを表示する、など設定することも可能です。

プロパティー

プロパティー 機能
Clear Flags 画面のどの部分をクリアするかを決定します。複数のカメラを使用して、異なるゲーム要素を描画する際に便利です。
Background ビュー内のすべてのエレメントが描画され、スカイボックスがない場合に、残りの画面に適用される色です。
Culling Mask カメラに表示されるように、オブジェクトのレイヤーを含めたり取り除いたりします。インスペクター上でオブジェクトにレイヤーを割り当てます。
Projection 眺望をシミュレートするカメラの方法を切り替えます。
        Perspective カメラが眼に見えるような見え方 (透視法) でオブジェクトをレンダリングします。
        Orthographic 透視の感覚なしに (平行投影法)、カメラがオブジェクトを均一にレンダリングします。 注意 ディファードレンダリングは Orthographic モードに適応していません。フォワードレンダリングが常に使用されます。
Size (Orthographic に設定した場合) Orthographic に設定した場合のカメラのビューポイントのサイズ。
Field of view (Perspective に設定した場合) ローカルの Y 軸に沿った角度から算出した、カメラ視野角の大きさ。
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 カメラビューからの出力が含まれた レンダーテクスチャ を参照します。参照を有効にすると、このカメラは画面に描画しなくなります。
HDR HDR カメラでハイダイナミックレンジレンダリングをオンにします。
Target Display どの外部デバイスにレンダリングするかを定義します。1 から 8 までの間で選択可能です。

詳細

カメラは、プレイヤーにゲームを見せる重要な要素です。想像できるあらゆる種類の効果が得られるよう、カメラをカスタマイズ、スクリプティング、または親子付けできます。パズルゲームの場合、パズル全体が見えるように、カメラを静止状態に維持できます。FPS の場合、カメラとプレイヤーキャラクターに親子関係を設定して、カメラをキャラクター目線に配置できます。レースゲームでは、カメラはプレイヤー車両を後ろから追跡させるのが望ましいでしょう。

複数のカメラを作成し、それぞれに異なる Depth を割り当てることができます。低い Depth から高い Depth の順にカメラが描画されます。言い換えると、Depth が 2 のカメラは、Depth が 1 のカメラの手前に描画されます。Normalized View Port Rectangle プロパティーの値を調整して、画面上のカメラのビューのサイズ変更や配置を行うことができます。これにより、ミサイルカメラ、マップビュー、バックミラーのような複数の小さいビューを作成できます。

レンダリングパス

Unity は、様々なレンダリングパスをサポートしています。ゲームの内容や対象のプラットフォーム / ハードウェアに応じて、どのパスを使用するか選ぶ必要があります。レンダリングパスごとに機能やパフォーマンス特性が異なるので、主に光と影に違いがでてきます。 プロジェクトに使用されるレンダリングパスは プレイヤー設定 で選択されます。さらに、各カメラに対して、レンダリングパスを無効にできます。

レンダリングパスの詳細については、レンダリングパス を参照してください。

Clear Flags

各カメラは、そのビューを描画する際に、色と深度に関する情報を格納します。画面の描画されない部分は空っぽで、デフォルトではスカイボックスが表示されます。複数のカメラを使用する場合、各カメラはバッファにそれ自体の色と深度に関する情報を格納し、各カメラがレンダリングを行うたびに、より多くのデータを蓄積します。シーンにあるすべてのカメラがそのビューをレンダリングするので、 Clear Flags を設定して、収集された様々なバッファ情報をクリアできます。そのためには、次の 4 つのオプションから 1 つを選択します。

Skybox

これはデフォルトの設定です。画面の空白の部分には、現在のカメラのスカイボックスが表示されます。現在のカメラにスカイボックスが設定されない場合、ライティングウィンドウ ( Window > Lighting ) で選択したスカイボックスになります。これにより、「 Background Color 」に戻ります。そうでない場合は、スカイボックス をカメラに追加できます。スカイボックスを新規作成したい場合は、スカイボックスの作成方法 を参照してください。

Solid Color

画面の空白の部分には、現在のカメラの Background Color が表示されます。

Depth Only

例えばプレイヤーの銃を背景で隠れないように描画したい場合は、 1 台のカメラの Depth を 0 に設定して背景を描画し、もう 1 台のカメラの Depth は 1 に設定して武器のみを描画させます。武器を表示するカメラの Clear Flags は、Depth only に設定する必要があります。これにより、画面上の背景空間の表示は維持されますが、各オブジェクトが 3D 空間内でどこに存在するか、という情報はすべて破棄されます。銃が描画されるとき、銃がいくら壁に近くても、銃の不透明な部分が一番上に描画されます。

銃は、カメラのデプスバッファがクリアされた後で、最後に描画されます
銃は、カメラのデプスバッファがクリアされた後で、最後に描画されます

Don’t Clear

このモードでは、色と深度のバッファのいずれもクリアされません。その結果、各フレームが次のフレーム上に描画され、シミのように見える効果が得られます。これは通常はゲームでは使用されず、たいてい、カスタムシェーダーと併用されます。

GPU (たいていはモバイル GPU) の中には、画面をクリアしないとコンテンツが次のフレームで定義されないものがあります。システムの中には、画面が前のフレームの画像、真っ黒な画面、ランダムな色のピクセルを含む場合があります。

Clipping Planes

Clipping Planes (クリップ面) の NearFar プロパティーは、カメラのビューの開始および終了場所を決定します。カメラの方向に対して垂直に面が配置され、その位置から測定されます。Near plane (ニアクリップ面) は、描画されるもっとも近い場所で、Far plane (ファークリップ面) はもっとも遠い場所になります。

また、クリップ面によって、深度バッファの精度がシーン上にどう配分されるかが決まります。一般に、バッファの精度を高めるには、ニアクリップ面 をできるだけ遠くに移動させた方がよいです。

ニアとファーのクリップ面とカメラの視野角で定義された平面は、いわゆるカメラの錐台を示します。Unity では、この錐台外にあるオブジェクトは表示されません。これは、錐台カリングと呼ばれます。錐台カリングは、ゲーム内でオクルージョンカリングが使用されているか否かに関係なく発生します。

パフォーマンス上の理由から、より小さいオブジェクトを早めにカリングしたい場合があるでしょう。例えば、小さい岩や破片は、大きい建物に比べて、短い距離でも非表示にする事ができます。これを行うには、小さいオブジェクトを 別のレイヤー に置き、Camera.layerCullDistances スクリプト関数を使用して、レイヤーごとのカリング距離を設定します。

Culling Mask

Culling Mask (カリングマスク) は、レイヤーを使用してオブジェクトのグループを選択的にレンダリングするのに使用されます。レイヤーの使用法については、レイヤー を参照してください。

Normalized Viewport Rectangle

Normalized Viewport Rectangles (正規化したビューポート矩形) は、現在のカメラビューが描画される画面の一定の部分を定義するためのものです。画面の左下ににマップビューを、右上にミサイルチップビューを配置できます。少し設計を行なうだけで、Viewport Rectangle を使用して、独自の動作を作成できます。

Normalized Viewport Rectangle を使用して、2 プレイヤー用に 2 分割した画面効果を簡単に作成できます。2 台のカメラを作成後、カメラの H 値を 0.5 に設定し、プレイヤー 1 の Y 値を 0.5 に、プレイヤー 2 の Y 値を 0 に変更します。これにより、プレイヤー 1 のカメラが画面の半分上から上部に表示され、プレイヤー 2 のカメラが下部で始まり、画面の半分で停止します。

Normalized Viewport Rectangle プロパティーで作成された 2 プレイヤー用表示
Normalized Viewport Rectangle プロパティーで作成された 2 プレイヤー用表示

Orthographic

カメラを Orthographic (平行投影) にすると、カメラのビューからすべての景色が削除されます。これはアイソメトリックまたは 2D ゲームの作成に便利です。

フォグは orthographic カメラモードでは均一に描画され、それゆえに期待通りに表示されないかもしれないことに注意してください。これは、ポストパースペクティブスペースの Z 座標がフォグの “深さ” に使用されるためです。これは、orthographic カメラにとって厳密には正確ではありませんが、レンダリング中のパフォーマンスで恩恵を得るために使用されます。

Perspective カメラ
Perspective カメラ
Orthographic Camera オブジェクトはここでの距離にもとづいて小さくなることはありません。
Orthographic Camera オブジェクトはここでの距離にもとづいて小さくなることはありません。

Render Texture

カメラのビューを、別のオブジェクトに適用できる Texture に変えます。これを使うと、競技場のビデオモニターや監視カメラ、反射などを簡単に作成できます。

アリーナの実況カメラの作成に使用される Render Texture
アリーナの実況カメラの作成に使用される Render Texture

Target Display

1つのカメラにつき 8つまでターゲットディスプレイを設定できます。カメラは 8つのモニターのうち 1つにレンダーするよう制御されています。これは PC、Mac、Linux だけに適応しています。ゲームビューで、Camera Inspector で選択された画像が表示されます。

ヒント

  • その他の GameObject 同様、カメラはインスタンス化、パレンディング、および記述できます。
  • レーシングゲームでスピード感を高めるには、Field of View の値を高くします。
  • Rigidbody コンポーネントを加えると、物理特性のシミュレーションでカメラを使用できます。
  • シーンで使用できるカメラの数には制限はありません。
  • 平行投影カメラは 3D のユーザーインターフェースを作成するのに便利です。
  • 深度のアーティファクトが生じる場合は (互いに近い面がちらつく)、Near Plane の値をできる限り大きく設定してみてください。
  • カメラは、ゲーム画面とレンダーテクスチャを同時にレンダリングできません。1 度にどちらか 1 つだけ可能です。
  • もっと面白い効果をつくりたい場合は、カメラのビューをテクスチャにレンダリングする Render-to-Texture と呼ばれるオプションがあります。
  • Unity には、Components->Camera Control から利用できるプリインストールされたカメラスクリプトが用意されています。これらを試して、何ができるかを試してみてください。
カメラリファレンス
フレアレイヤー