【Unity】カメラの基本設定を理解しよう!|Camera入門①
Unityのカメラについて連載(Camera入門)でご紹介します。
Unityゲーム開発において必須の知識ですので、ぜひご参考ください。
第一弾の今回はカメラの基本設定の方法について詳しく解説していきます。

※本記事の被写体には「Unity-Chan」を使用しています。
© Unity Technologies Japan/UCL
参考ページ)ユニティちゃん公式サイト
Contents
カメラの概要
そもそもカメラ(Camera)とは「世界をキャプチャしてプレイヤーに表示するデバイス(公式マニュアルより)」です。
プロパティを自分好みに設定することで、独自の世界観を表現することができます。
使いこなすことができれば一人称視点など、様々な視点のゲームを開発することができます。
↓一人称視点(公式マニュアルより)

プロパティと機能
それではプロパティをご紹介します。

プロパティ機能一覧を表にまとめましたのでご覧ください。
| プロパティ | 機能 |
| Clear Flags | 画面のどの部分をクリアするか決める |
| Background | 画面の背景色(スカイボックスがない場合に限る) |
| Culling Mask | カメラに表示されるように、オブジェクトのレイヤーを設定する |
| Projection | レンダリングの機能を切り替える |
| Size | ビューポイントのサイズ(Projection=Orthographicのとき) |
| Field of View | カメラの視野角(Projection=Perspectiveのとき) |
| Physical Camera | 実際の物理的なカメラ設定を適用する |
| Clipping Planes | レンダリングを開始・停止するカメラからの距離 |
| Viewport Rect | カメラビューを描画する4点の設定 |
| Depth | 描画順でのカメラの位置 |
| Rendering Path | レンダリング方法のオプション |
| Target Texture | レンダーテクスチャを参照する |
| Ocullusion Culling | 映らないオブジェクトのレンダリングを無効にする |
| Allow HDR | ハイダイナミックレンジレンダリングをオンにする |
| Allow MSAA | アンチエイリアシング方法の一つ |
| Allow Dynamic Resolution | ダイナミック解像度スケーリングの設定 |
| Target Display | どの外部デバイスを表示するか設定 |
ではここから主要なプロパティについて詳しく解説していきます。
Clear Flags
カメラはビューをレンダリングするときに色と深度に関する情報を記憶します。
レンダリングとは、情報(数値データなど)を元に画像を生成し、表示する技術のことです。
レンダリングについては今後の記事で詳しくご紹介する予定です。
描画されない部分は空(から)で、デフォルトではSkyboxが設定されています。

上記のシーンでは、Planeとユニティちゃん部分がレンダリングにより表示され、Planeとユニティちゃん以外の部分は空であることがわかります。
本来ClearFlagsはバッファ情報の各コレクションをクリアする機能ですが、
ここでは「レンダリングされていない空の部分をどのように設定するかを決めるもの=ClearFlags」という認識で問題ありません。
連載の中で複数台カメラの使用方法をご紹介する予定ですので、難しい話はそちらでご紹介できればと思います。
では、どのように設定できるのか詳しく見てみましょう。
Skybox
デフォルトで設定されているのが「Skybox」です。
現状設定されているSkyboxが表示されます。Skyboxの詳しい設定方法は以下記事でご紹介していますのでご参考ください。
Skybox参考記事)背景を変更する方法
↓リアルな空を再現することも可能

Solid Color
空部分にBackgroundで設定された色が表示されます。
↓SolidColorに設定したときのゲームビュー

↓Backgroundの色を黄色に変更したとき

Depth Only
DepthOnlyは複数台のカメラを用いるときに使用されます。
今回はカメラ単体の設定方法のご紹介ですので省略させていただきますが、今後の連載記事で詳しくご紹介したいと思います。
Don’t Clear
Don’t Clearを設定すると、色・深度情報が共にクリアされません。
このモードはあまり使用されることはありません。
↓Don’t Clearに設定したときのゲームビュー

Culling Mask
レイヤーを使用してオブジェクトのグループを選択的にレンダリングする機能です。
レイヤーとは簡単にいうと主に描画の際に使用するグループ分け方法です。オブジェクトをグループごとに分けたいときなどに便利です。
実例で説明していきます。
ユニティちゃんの属するレイヤーをMainCameraで表示させないように変更してみましょう。
まずユニティちゃんのレイヤーを確認します。
ヒエラルキービューでユニティちゃんを選択して、インスペクタービューでレイヤーを確認します。
↓ユニティちゃんインスペクタービュー

赤枠部分に現在設定されているレイヤーが表示されています。デフォルトでは「Default」に設定されていると思います。
次にMainCameraのCullingMask→Defaultのチェックを外してください。
↓Defaultのチェックを外す

ではゲームビューを確認してみましょう。
↓ユニティちゃんが消える

このようにCullingMaskを設定することで任意のレイヤーを表示させないようにすることができます。
Projection
3D空間をどのように2Dとして描写するかを設定します。
Projectionには「Perspective」と「Orthographic」があります。
キューブを以下のように配置してそれぞれを比較してみましょう。

Perspective
Perspectiveはそのままの景色をレンダリングします。遠近法を使った描写です。
↓Perspectiveに設定したときのゲームビュー

Field of viewで視野角を設定することもできます。
↓カメラの位置を近づけて値を80に設定したときのゲームビュー

↓カメラの位置を離して値を10に設定したときのゲームビュー

Orthographic
Orthographicはオブジェクトを均等に描写します。平行投射を使った描写です。
↓Orthographicに設定したときのゲームビュー

Sizeを変更することでビューポイントの大きさを変更できます。
↓Size=1のとき

↓Size=3のとき

Clipping Planes
レンダリングを開始・停止する距離を設定します。
NearとFarの値を設定することでレンダリング範囲を指定します。
- Near:レンダリングが開始するカメラからの距離(赤枠)
- Far:レンダリングが停止するカメラからの距離(緑枠)
↓赤枠と緑枠と青線で囲まれた空間をレンダリングする

Viewport Rect
カメラビューの描画を設定します。
以下の値を設定することができます。
| X |
描画される開始の水平位置
|
| Y |
描画される開始の垂直位置
|
| W | 画面上の出力幅 |
| H |
画面上の出力高さ
|
それぞれの値を設定して違いをみてみましょう。
↓X=0.5のときのゲームビュー

全体に対して半分の水平位置に描画されています。
↓Y=0.5のときのゲームビュー

全体に対して半分の垂直位置に描画されています。
↓W=0.5のときのゲームビュー

初期位置(左下)から半分の幅で出力されています。
↓H=0.5のときのゲームビュー

初期位置(左下)から半分の高さで出力されています。
まとめ
いかがでしたでしょうか。
Unityカメラの連載(Camera入門)第一弾として、基本的な使い方についてご紹介してきました。
実際のカメラとなんとなく使い方が似ていると感じた方もいらっしゃるのではないでしょうか。Unityでは現実のカメラでできることはほとんど再現することができます。
連載でご紹介予定のPhysicalCameraを使用すれば、より現実に近い細かい設定をすることも可能です。
この記事をきっかけに独自の表現方法を習得していただければ幸いです。
↓他の連載記事もぜひご参考ください。
Camera入門②)カメラの切り替えをスクリプトで実現しよう!
Camera入門③)カメラをマウスに連動させて回転させよう!
Camera入門④)プレイヤーにカメラを追従させよう!
↓Unity関連記事はこちらをご参考ください
Unity関連記事)【入門】Unityを使ったアプリ開発ができるようになる!Unityの基本からARへの応用まで

この記事はいかがでしたか?
もし「参考になった」「面白かった」という場合は、応援シェアお願いします!

