【Unity】カメラの基本設定を理解しよう!|Camera入門①


Unityのカメラについて連載(Camera入門)でご紹介します。

Unityゲーム開発において必須の知識ですので、ぜひご参考ください。

第一弾の今回はカメラの基本設定の方法について詳しく解説していきます。

被写体Unityちゃん

※本記事の被写体には「Unity-Chan」を使用しています。

© Unity Technologies Japan/UCL

参考ページ)ユニティちゃん公式サイト

カメラの概要

そもそもカメラ(Camera)とは「世界をキャプチャしてプレイヤーに表示するデバイス(公式マニュアルより)」です。

プロパティを自分好みに設定することで、独自の世界観を表現することができます。

使いこなすことができれば一人称視点など、様々な視点のゲームを開発することができます。

↓一人称視点(公式マニュアルより)

Camera-RenderTexture

プロパティと機能

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

カメラプロパティ

プロパティ機能一覧を表にまとめましたのでご覧ください。

プロパティ 機能
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参考記事)背景を変更する方法

↓リアルな空を再現することも可能

WispySkyboxビュー

Solid Color

空部分にBackgroundで設定された色が表示されます。

↓SolidColorに設定したときのゲームビュー

SolidColor設定

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

Unityちゃん黄色

Depth Only

DepthOnlyは複数台のカメラを用いるときに使用されます。

今回はカメラ単体の設定方法のご紹介ですので省略させていただきますが、今後の連載記事で詳しくご紹介したいと思います。

Don’t Clear

Don’t Clearを設定すると、色・深度情報が共にクリアされません。

このモードはあまり使用されることはありません。

↓Don’t Clearに設定したときのゲームビュー

Don'tClear

Culling Mask

レイヤーを使用してオブジェクトのグループを選択的にレンダリングする機能です。

レイヤーとは簡単にいうと主に描画の際に使用するグループ分け方法です。オブジェクトをグループごとに分けたいときなどに便利です。

実例で説明していきます。

ユニティちゃんの属するレイヤーをMainCameraで表示させないように変更してみましょう。

まずユニティちゃんのレイヤーを確認します。

ヒエラルキービューでユニティちゃんを選択して、インスペクタービューでレイヤーを確認します。

↓ユニティちゃんインスペクタービュー

ユニティちゃんレイヤー

赤枠部分に現在設定されているレイヤーが表示されています。デフォルトでは「Default」に設定されていると思います。

次にMainCameraのCullingMask→Defaultのチェックを外してください。

↓Defaultのチェックを外す

デフォルトを外す

ではゲームビューを確認してみましょう。

↓ユニティちゃんが消える

ユニティちゃん消える

このようにCullingMaskを設定することで任意のレイヤーを表示させないようにすることができます。

Projection

3D空間をどのように2Dとして描写するかを設定します。

Projectionには「Perspective」と「Orthographic」があります。

キューブを以下のように配置してそれぞれを比較してみましょう。

キューブ配置

Perspective

Perspectiveはそのままの景色をレンダリングします。遠近法を使った描写です。

↓Perspectiveに設定したときのゲームビュー

Perspective

Field of viewで視野角を設定することもできます。

↓カメラの位置を近づけて値を80に設定したときのゲームビュー

値80

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

値10

Orthographic

Orthographicはオブジェクトを均等に描写します。平行投射を使った描写です。

↓Orthographicに設定したときのゲームビュー

Orthographic

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

↓Size=1のとき

Size=1

↓Size=3のとき

Size=3

Clipping Planes

レンダリングを開始・停止する距離を設定します。

NearとFarの値を設定することでレンダリング範囲を指定します。

  • Near:レンダリングが開始するカメラからの距離(赤枠)
  • Far:レンダリングが停止するカメラからの距離(緑枠)

↓赤枠と緑枠と青線で囲まれた空間をレンダリングする

レンダリング範囲

Viewport Rect

カメラビューの描画を設定します。

以下の値を設定することができます。

X
描画される開始の水平位置
Y
描画される開始の垂直位置
W 画面上の出力幅
H
画面上の出力高さ

それぞれの値を設定して違いをみてみましょう。

↓X=0.5のときのゲームビュー

X=0.5

全体に対して半分の水平位置に描画されています。

↓Y=0.5のときのゲームビュー

Y=0.5

全体に対して半分の垂直位置に描画されています。

↓W=0.5のときのゲームビュー

W=0.5

初期位置(左下)から半分の幅で出力されています。

↓H=0.5のときのゲームビュー

H=0.5

初期位置(左下)から半分の高さで出力されています。

まとめ

いかがでしたでしょうか。

Unityカメラの連載(Camera入門)第一弾として、基本的な使い方についてご紹介してきました。

実際のカメラとなんとなく使い方が似ていると感じた方もいらっしゃるのではないでしょうか。Unityでは現実のカメラでできることはほとんど再現することができます。

連載でご紹介予定のPhysicalCameraを使用すれば、より現実に近い細かい設定をすることも可能です。

この記事をきっかけに独自の表現方法を習得していただければ幸いです。

 

↓他の連載記事もぜひご参考ください。

Camera入門②)カメラの切り替えをスクリプトで実現しよう!

Camera入門③)カメラをマウスに連動させて回転させよう!

Camera入門④)プレイヤーにカメラを追従させよう!

↓Unity関連記事はこちらをご参考ください

Unity関連記事)【入門】Unityを使ったアプリ開発ができるようになる!Unityの基本からARへの応用まで


Furui