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

カメラ

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

プロパティー

|プロパティー: |説明: | |:—|:—| |Clear Flags |画面のどの部分をクリアするかを決定します。複数のカメラを使用して、異なるゲーム要素を描画する際に便利です。 | |Background |ビュー内のすべてのエレメントが描画され、スカイボックスがない場合に、残りの画面に適用される色です。 | |Culling Mask |カメラに表示されるように、オブジェクトのレイヤーを含めたり取り除いたりします。インスペクター上でオブジェクトにレイヤーを割り当てます。 | |Projection |景色をシミュレートするカメラの機能を切り替えます。 | |        Perspective |カメラがそのままの景色でオブジェクトをレンダリングします。 | |        Orthographic |透視の感覚なしに、カメラがオブジェクトを均等にレンダリングします。 注意: Deferred レンダリングは Orthographic モードに適応していません。Forward レンダリングが常に使用されます。 | |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 |このカメラは、プレイヤー設定でいずれの Rendering Path されても使用します。 | |        Vertex Lit |このカメラでレンダリングされたオブジェクトはすべて、Vertex-Lit オブジェクトとしてレンダリングされます。 | |        Forward |すべてのオブジェクトがマテリアルごとに 1 つのパスでレンダリングされます。 | |        Deferred Lighting |ライティングなしで、すべてのオブジェクトが 1 回描画され、すべてのオブジェクトのライティングがレンダリングキューの最後で一緒にレンダリングされます。 注意: カメラの投影モードが Orthographic に設定されている場合は、この値は上書きされて、カメラは常にフォワードレンダリングとなります。 | カメラビューからの出力が含まれた レンダーテクスチャ を参照します。参照を有効にすると、このカメラは画面に描画しなくなります。

|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

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

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

Clip Planes

NearFar Clip Plane プロパティーは、カメラのビューの開始および終了場所を決定します。カメラの方向に対して垂直に面が配置され、その位置から測定されます。Near plane は、レンダリングされるもっとも近い場所で、Far plane はもっとも遠い場所になります。

また、クリッピングプレーンによって、デプスバッファの精度がシーン上にどう配分されるか、が決まります。一般に、バッファの精度を高めるには、Near 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 コンポーネントを追加すると、物理特性のシミュレーションでカメラを使用できます。
  • シーンで使用できるカメラの数には制限はありません。
  • Orthographic カメラは 3D のユーザーインターフェースを作成するのに便利です。
  • 深度の不具合が生じている場合は(互いに近い面がちらつく)、Near Plane をできる限り大きく設定してみてください。
  • カメラは、ゲーム画面および Render Texture に対して同時にレンダリングできません。いずれかのみになります。
  • もっと面白い効果をつくりたい場合は、カメラのビューをテクスチャにレンダリングするオプションがあります。 Render-to-Texture と言います。
  • Unity には、Components->Camera Control から利用できるプリインストールされたカメラスクリプトが用意されています。これらを試して、何ができるかを試してみてください。
カメラリファレンス
フレアレイヤー