カメラ
マニュアル     リファレンス     スクリプト   
リファレンスマニュアル > コンポーネント > レンダリングコンポーネント > カメラ

このドキュメントは有志により翻訳されたもので、オフィシャルではありません。オリジナルのページはこちら
This document is unofficially translated by users.Please see the original document here.

翻訳に関する修正など、ご連絡はこちらまで。
Please send e-mail to here, when you have any question about the translation.

カメラ(Camera)

カメラは、世界を切り取りプレイヤーに表示する装置です。カメラをカスタマイズし、操作する事で、ゲームの表現を、真にユニークなものとする事が出来ます。シーンには好きなだけカメラを配置出来ます。レンダリングの順序や、スクリーン上の位置、又は、スクリーンの一部だけを表示するように設定する事も可能です。


Unityの柔軟なカメラオブジェクト

属性

クリアフラグ(Clear Flags) スクリーンのどの部分をクリアするかを決定します。複数のカメラを使ってゲームの異なる要素を描いている場合に便利です。
背景色(Background Color) ビュー無いの全てのエレメントが描かれ、スカイボックスが無かった場合に、スクリーンの残りの部分が指定した色で塗りつぶされます。
正規化ビューパート矩形(Normalized View Port Rect) 4つの値が、スクリーンのどの位置にカメラのビューを表示するかを指定します。スクリーン座標は0から1で表されます。
X カメラビューを描画する、横方向の開始位置です。
Y カメラビューを描画する、縦方向の開始位置です。
幅(Width) スクリーン上のカメラ出力の幅です。
高さ(Height) スクリーン上のカメラ出力の高さです。
ニアクリッププレーン(Near clip plane) カメラの描画を行う、カメラから最も近い点です。
ファークリッププレーン(Far clip plane) カメラの描画を行う、カメラから最も遠い点です。
ビューのフィールド(Field of view) カメラのビュー角度の幅で、ローカルのY軸にそって度(degree)で表されます。
平行投影(Orthographic) カメラが、遠近感をシミュレートするかを設定します。
並行投影サイズ(Orthographic size) 平行投影時のカメラのビューポーとサイズです。
深度(Depth) カメラの描画順における位置です。高い深度値を持ったカメラが、低い深度値のカメラより上に描かれます。
カリングマスク(Culling Mask) カメラがレンダリングするオブジェクトのレイヤを、含めたり、除いたりします。レイヤはインスペクタでオブジェクトに設定します。
レンダターゲット(Render Target) (Unity Pro限定) カメラビューの出力を含むレンダテクスチャへの参照です。参照を行うとスクリーンにカメラをレンダリングする事が出来なくなります。

詳細(Details)

カメラはゲームをプレイヤに見せるために重要です。カメラは、思いつく効果を実現するために、カスタマイズしたり、スクリプトで操作したり、親子関係を設定したりできます。パズルゲームであれば、カメラがパズル全体を表示するように固定するでしょう。一人称視点シューティングであれば、カメラの親をプレイヤキャラクタに設定し、キャラクタの目の高さに合わせるでしょう。レースゲームであれば、車を追跡するようにカメラを配置するでしょう。

複数のカメラを作り、それぞれを異なる深度に割り当てる事が出来ます。 カメラは、低い深度から、高い深度の順番で描かれます。 言い換えると、深度2のカメラは深度1のカメラの上に描かれる事になります。 正規化ビューパート矩形属性の値を調整する事で、スクリーン上のカメラビューの、一夜サイズを調整できます。これにより、ミサイルカメラや、マップビュー、リアミラーなどの、複数の小さなビューを 作る事が出来ます。

クリアフラグ(Clear Flags)

それぞれのカメラは、ビューをレンダリングする際に、色と深度情報を保存します。スクリーンの描画されなかった部分は空白です。通常はデフォルトでスカイボックスが描画されます。複数のカメラを使用している場合、それぞれのカメラが、色と深度情報をバッファに書き出し、レンダリングされた情報を積み上げていきます。シーン中のビューをレンダリングする全てのカメラで、異なるバッファ情報をクリアするためのクリアフラグを設定する事が出来ます。次の4つのオプションの中から選びます:

スカイボックス(Skybox)

これがデフォルトの設定です。スクリーン上の描き残された部分には全て、現在のカメラのスカイボックスが表示されます。 現在のカメラにスカイボックスが設定されていなければ、レンダリング設定(Render Settings)で選ばれたスカイボックスが用いられます。 (Edit->Render Settingsに有ります)それから、背景色に戻ります。

ソリッドカラー(Solid Color)

スクリーン上の塗り残された部分は、現在のカメラの背景色で、塗りつぶされます。

深度のみ(Depth Only)

プレイヤーの銃が環境にクリップされないように描きたい場合は、環境を描画するためのカメラを深度0に、武器のみを描画するためのカメラを深度1に深度1に設定します。武器用のカメラはクリアフラグ(Clear Flags)深度のみ(depth only)に設定します。 これで、スクリーン上の環境のグラフィカルディスプレイが保持されますが、3D空間に存在する、その他のオブジェクトの情報は破棄されます。銃が描画されるとき、不透明な部分はどんなに壁が近くに有ろうと、描画される事になります。


カメラの深度バッファがクリアされる直前に、銃が最後に描画されます。(The gun is drawn last, after clearing the depth buffer of the cameras before it)

クリアしない(Don't Clear)

このモードは色バッファも深度バッファもクリアしません。結果として、次のフレームが上書きされ、擦り付けたような効果になります。ゲームではあまり使われませんが、カスタムシェーダと一緒に使うには良いでしょう。

プレーンでクリップ(Clip Planes)

ニアクリッププレーンファークリッププレーン属性により、カメラビューの開始と終了が決められます。 プレーンはカメラの向きに垂直に横たわっており、カメラの位置から測定されます。 ニアプレーンはレンダリングされる最も近い位置で、ファープレーンは最も遠い位置です。

クリッピングプレーンは、深度バッファ精度が、どのようにシーンに割り当てられるかも決定します。 一般に、良い精度を得るにはニアプレーンをなるべく遠くにするべきです。

ニアとファークリッププレーンは、カメラ視体積(frustum)として、一般に知られる、カメラのビューのフィールドにより定められます。 Unityは、レンダリング時に、完全に視体積の外に位置するオブジェクトが、表示されない事を保証します。これは視体積カリングと呼ばれます.視体積カリングは平行投影時も行われます。

パフォーマンスの理由から、小さいオブジェクトを先にカリング(間引き)したいと思うでしょう。たとえば、小さな石やゴミは、大きなビルに比べて、小さな距離であっても見えなくする事が出来ます。小さなオブジェクトを異なるレイヤ(separate layer)に入れ、Camera.layerCullDistancesスクリプトの機能を使い、レイヤごとに(per-layer)カリング距離を設定する事で実現できます。

カリングマスク(Culling Mask)

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

ユーザインタフェースは、一般的に、異なるレイヤに配置すると良いといえます。それにより、UIレイヤをレンダリングするように設定したカメラで、他のレイヤからわけてレンダリングする事が出来るようになります。

UIを他のカメラビューの上に表示するためには、クリアフラグ(Clear Flags)深度のみ(Depth only)に設定し、UIカメラの深度が、他のカメラより高くなるように設定しなければなりません。

正規化ビューポート矩形(Normalized Viewport Rectangle)

正規かビューポート矩形(Normalized Viewport Rectangles)は、現在のカメラの特定の位置にスクリーンを表示する場合に定義します。マップビューをスクリーンの右下の角に配置したり、ミサイル上のビューを左上の角に配置したりできます。ちょっとしたデザインで、ユニークな動作をするビューポート矩形(Viewport Rectangle)を作れます。

2人のプレイヤーのためにスクリーンを分割する効果は正規化ビューポート矩形(Normalized Viewport Rectangle)を用いて簡単に作れます。2つのカメラを作った後、プレイヤ1のYmin値を0.5に、プレイヤ2のYmax値を0.5に設定します。これで、プレイヤ1のカメラは、スクリーンの上半分に、プレイヤ2のカメラはスクリーンの下半分に表示されます。


2人のプレイヤ用のディスプレイを正規化ビューポート矩形で作成

平行投影(Orthographic)

カメラを並行投影にすると、ビューから全ての遠近感がなくなります。これは、固定してんの2Dゲームを作るのに有効です。


透視投影カメラ

平行投影カメラ。オブジェクトは距離に応じて小さくなりません!

レンダテクスチャ(Render Texture)

この機能はUnity Proライセンスでのみ使用可能です。(Unity iPhoneではサポートされていません) これは、他のオブジェクトに適応可能なテクスチャの上にカメラを配置します。これはスポーツアリーナのビデオモニタや、監視カメラの映像、反射等を作るのに便利です。


レンダテクスチャはアリーナカメラのライブ映像を作るのに使えます。

ヒント

  • カメラは、ゲームシーンとレンダテクスチャを同時に描画できません。
  • プロライセンスの所持者はカメラのビューを、Render-to-Textureと呼ばれる、テクスチャにレンダリングする手法により、よりユニークな効果を得られます。
  • Unityには、カメラスクリプトが用意されています。Components->Camera Controlの中に有ります。色々変更して、思い通りの効果が得られるよう、試してみてください。