-
ここではカメラについてみていきます。
-
カメラは Unity における
-
もっとも重要なコンポーネントのひとつです。
-
カメラはシーンのコンテンツを
-
ユーザに対して表示します。
-
すべてのシーンには、シーンのオブジェクトをレンダリングするために
-
少なくともひとつのカメラが必要であり、
-
ないと何も表示されません。
-
新規のシーンが作成されるとき
-
ひとつのゲームオブジェクトがつねに作成されます。
-
これがメイン カメラ (Main Camera) です。
-
ゲームビュー カメラとは
-
ゲームオブジェクトにアタッチされるコンポーネントです。
-
つまり、カメラは他のゲームオブジェクトとまったく同じように
-
操作して、移動できて
-
親子関係やスクリプティング、
-
物理挙動を与えることにも対応しています。
-
1人称 (First Person)、 3 人称 (Third Person) 視点
-
さらに横スクロールでのカメラをを作成するとき
-
プレイヤーオブジェクトを親として使用できます。
-
First Person カメラでは、カメラが
-
キャラクターの目の高さにあり
-
キャラクターの立場から正面を向いていることを確認して下さい。
-
Third Person ビューからは、カメラが
-
キャラクターより上で後ろにあることを確認して下さい。
-
単純なパズルゲームまたは縦スクロールシューティングの場合、
-
カメラは静的であり、
-
ゲームの方向へ向いてレンダリングを行ないます。
-
このサンプルではカメラをセンタリングして
-
不要な回転をすべて取り除いて、
-
真っ直ぐ下を向かせてゲームボードの上に
-
位置させてトップダウンのゲームをシミュレーションします。
-
このケースではカメラの Orthographic モードを
-
使用しますが、これについては
-
このレッスンで後ほど解説します。
-
シーンには任意の数のカメラを持たせることが出来ます。
-
それぞれがゲーム環境の異なる部分をレンダリングさせることが出来ます。
-
このサンプルでは 3 つのカメラを用意しました。
-
ひとつがシーンのすべての動的な
-
オブジェクトをレンダリングしています。もうひとつは
-
静的な背景をレンダリングして、 3 つめは
-
上に重ねたユーザインタフェースをレンダリングします。
-
3 つのカメラを全てひとつにまとめて
-
ユーザにとってひとつの表示をさせることが出来ます。
-
3 つのカメラ全てを同時に使用する
-
正しい方法はこのレッスンの後の方で解説します。
-
カメラが Hierarchy ビューで選択されたとき
-
シーン上でカメラのプレビューが表示されます。
-
シーンに複数のカメラがあるとき
-
これによりカメラが何をレンダリングするかを見るのに役立ちます。
-
このプレビューは全画面モードであるときに
-
役立ち、例えカメラがひとつだけの場合も
-
カメラが何をレンダリングしているかみることが出来ます。
-
カメラは正面にあるものの全てを
-
そのビューの中にレンダリングします。
-
シーン全体のどこまでがビューの範囲に表示されるか
-
は白い枠線つきでシーンビューに表示されます。
-
これはビュー Frustum と呼ばれるものです。
-
ビュー Frustum の形状はピラミッドまたは
-
錐体の上の部分を切り取ったような形です。
-
ピラミッドの上の部分の切り取った部分は
-
ニア クリッピング プレーン(near clipping plane)と呼ばれ、
-
土台の部分が ファー クリッピング プレーン(far clipping plane)と呼ばれます。
-
ニアおよびファー クリッピング プレーンは
-
カメラの描画する距離を制御します。
-
レンダリングする対象となるためには
-
ニアおよびファーの間にある必要があります。
-
横の部分はカメラが端から端のどこまで見えるか、
-
さらに上から下のどこまで見えるかを示します。
-
そしてシーンのうち、 Frustum の範囲にある
-
部分はすべてレンダリングされます。
-
カメラにはシーンを見るために
-
二つの方法が用意されてます。Perspective モードと
-
Orthographic モードです。
-
どちらの方法をとるかにより Frusum の形状および
-
サイズ、さらにはカメラを通したシーンの見た目は
-
劇的に変化します。
-
Perspective モードではカメラはシーンを
-
現実世界のカメラのようにレンダリングして
-
遠近法のような図法になります。
-
これはシーンビューで確認することが出来て
-
白で表現されているカメラの Frustum は
-
カメラから遠ざかるにつれて
-
大きくなります。
-
これはゲーム作成時にもっとも一般的に使用される
-
カメラのモードです。
-
Orthographic モードでは
-
遠近法のような表現はありません。すべてのオブジェクトは
-
カメラを通した、
-
平行透視のような画法になります。みてのとおり
-
シーンビューにおいて Frustum が真っ直ぐであり
-
前および後ろの部分が同じ大きさになっています。
-
このモードはおもにリアルタイム戦略ゲーム、ボードゲーム、
-
2D ゲーム、パズルゲームといった
-
等倍のゲームでみられ、
-
追加のカメラを
-
ゲームビューの上に
-
UI 要素をレンダリングする必要がある
-
ミニマップやヘッドアップディスプレイの場合に使用されます。
-
シーンの中に何がレンダリングされるか制御するために
-
ニアおよびファー クリッピング プレーン、
-
および Frustum のサイズや形を調整して下さい。
-
Field Of View によりカメラのビューの幅を
-
制御します。これは現実世界のカメラで
-
ズームを使用する場合などに使用できます。
-
カメラが Orthographic モードにある場合、
-
Size により Field Of View プロパティを置き換えます。
-
これにより Orthographic ビューポートのサイズを
-
制御します。
-
これは Field Of View に似ていますが、
-
Size プロパティの値は
-
前や後ろのプレーンのサイズを同時に変化させます。
-
これは Orthographic カメラでは
-
パース(遠近法)がかからないためです。
-
シーンには何らかの背景が必要です。
-
これは Clear Flags および
-
Background プロパティにより制御されます。
-
Background プロパティでセットされた
-
Color の値は、もし他の設定が何も変更されない場合は
-
シーンの中でオブジェクトの後ろに描画されるものと
-
なります。これはデフォルトでは
-
空のシーンの背景にみえる青色となります。
-
Clear Flags によりカメラの背景が
-
決定されます。この設定は
-
複数のカメラを使用するときに特に重要です。
-
各々のカメラはそのビューをレンダリングするときに
-
Color および Depth の情報を格納します。シーンのうち
-
描画されない部分は空と判断されます。
-
Clear Flags プロパティにより
-
空のシーンで何が描画されるかを判断します。
-
もし Skybox がレンダリング設定でセットされている場合
-
背景は Skybox となります。
-
Skybox は全てのカメラにおいて デフォルトで Clear Flag となっています。
-
Skybox とは複数の画像を含む
-
マテリアルであり、シーン全体を囲んで
-
シーンにおけるテクスチャの背景となります。
-
Skybox および レンダリング設定については
-
該当するレッスンを参照して下さい。
-
もし Skybox をセットしてない場合、または
-
Solid Color を Clear Flag として選択した場合、
-
Background プロパティの Color の値が
-
シーンにある
-
全てのオブジェクトの背景として使用されます。
-
Depth Only は主に
-
複数のカメラの場合に使用されます。 Depth Only については
-
もう少し後で解説します。
-
Don't Clear の場合は、各々のフレームが
-
その直前のものの上に描画され、
-
滲みのエフェクトが得られます。この設定は
-
ゲームでの使用はあまり一般的ではありません。
-
複数のカメラを使用するとき、もっとも実用的な
-
Clear Flags の設定は Depth Only です。
-
この設定により各々のカメラは
-
値が与えられ、
-
カメラのビューにおける各々のコンテンツおよび Depth は
-
Depth の昇順で
-
互いに重なります。
-
通常はメイン カメラは
-
もっとも小さい Depth の値を割り当てます。
-
さらに Clear Flag を
-
Skybox または Solid Color とします。
-
他の全てのカメラは Clear Flags を
-
Depth Only にセットします。これにより
-
背景は究極的にひとつしかなく、
-
全ての他のカメラの画像は
-
このメインカメラの上にレイヤーされます。
-
カメラがレンダリングしているコンテンツは
-
Culling Mask プロパティにより制限されます。
-
Culling Mask ドロップダウンにより
-
シーンで利用可能なすべてのレイヤーをリストします。
-
カメラは Culling Mask で選択されたレイヤーにあるオブジェクトのみ
-
レンダリングします。
-
レイヤーに関する詳細および使用方法については
-
対応するレッスンを参照して下さい。
-
ユーザインタフェースを重ねる場合、
-
UI 要素は UI レイヤーにセットして
-
います。UI カメラは Culling Mask を
-
UI レイヤーのオブジェクトのみレンダリングするようにセットしています。
-
Clear Flags は Depth Only にセットして
-
さらに Depth はシーンにおける全てのカメラのうち
-
もっとも高い値にセットしています。
-
これにより UI カメラは
-
UI 要素を Culling Mask 設定にのみもとづいて描画して
-
UI 要素は他の全てのレイヤーの上に
-
Depth の順に描画します。
-
覚えておくべき点として、カメラは
-
Orthographic ビューにセットしてあり、
-
UI 要素にパースがかかることを避けています。
-
複数のカメラを使用する
-
典型的な用途は UI 要素のレンダリングであり、
-
ミニマップやヘッドアップディスプレイを
-
ワールド座標空間のビューに重ねて表示したり、ミラーとしてバック側を表示したり、
-
ミサイルのカメラや、シーンにおけるオブジェクトの描画順を
-
強制的に決める場合に使用し、
-
First Person Shooter における銃が
-
レベルにおける他のオブジェクトの中に描画されないようにするなどの場合があります。
-
他のプロパティである Normalized Viewport Rect, Render Path,
-
Target Texture および HDR などは
-
より上級者向けであるため別のレッスンで解説します。
(翻訳:gamesonytablet)