読者です 読者をやめる 読者になる 読者になる

テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】3Dゲームに使うカメラワークの用語と、その設定について

今回はカメラワークについてメモします。
内容は3Dゲームをおもしろくする技術を参考にしつつメモして行きます。内容に誤りがあるかもしれないので、ツッコミ大歓迎です。
模写ではなく面白そうな部分を抽出してUnityで再現してるだけなので、詳しく知りたい人は本屋へGO

カメラワーク

カメラワークとは、カメラをどのように動かすかといった技術です。カメラワークを考えながら動かすことで、迫力のある画面や見やすい画面、操作しやすい画面を作りやすくなります。

このカメラワークですが、2Dゲームの場合そこまで多岐に渡る内容は無いですが、3Dだとカメラの動きに関して幾つかの用語が出てきます。まずはカメラワークの用語についてメモします。

まずはカメラの移動についてです。カメラの被写体に対してどのように動かすかで、幾つかの名称があります。

f:id:tsubaki_t1:20160216221450j:plain

フィックス

フィックス(Fix)は被写体に対してカメラを動かさないカメラワークです。カメラを動かさないので、キャラクターを追いやすく、安定した絵になります。
フィックス後フェードイン・フェードアウトで画面を変化させる事もあれば、後述するパンやドリーに繋いでカメラを動かす事もあるそうです。

個人的には戦車の進軍を見る時は、フィックスを横切る絵が好き

f:id:tsubaki_t1:20160216223906g:plain

設定に関してですが、フィックスは「動かない」ので、動かさなければフィックスになります。

ドリー

ドリーは移動撮影と呼ばれるカメラワークです。
被写体の動きに合わせてカメラが追随します。背景が動くので割とダイナミックな感じの絵になります。被写体の手前にモデルがあると特に。
映画だと、よく台車にカメラが乗ってるアレです。

f:id:tsubaki_t1:20160216224001g:plain

この設定をUnityでやる最も手っ取り早い方法は、Cameraを被写体の子オブジェクトにしてしまう事ですが、それだと色々と不都合があったりするので、実際は対象のTransformを追跡するようなコードを書くのが良さそうです。

コードで言うと、Assets>Import Package>Utilityに含まれるFollow Targetが近いです。ただ相対距離を手入力する方式で、面倒くさい方法なので参考程度に。

f:id:tsubaki_t1:20160216231051j:plain

パン

パン(Panoramic Viewing)は、被写体に合わせてカメラの向きを変更します。
このカメラワークは広い風景を表現したり、複数の被写体の位置関係を表現するのに向いています。

f:id:tsubaki_t1:20160216224358g:plain

Unityでやる場合、Lookatでカメラの向きを云々する方法もありますが、今回はAssets/Import Package/Cameraに含まれるLookatTarget.csを使用しました。Targetに被写体を設定すると、被写体を指定の角度まで追ってくれます。

f:id:tsubaki_t1:20160216230317j:plain

またTransformで操作する場合、RotationのYを操作します。スクリプトで動かす場合、Y軸のRotateAxisを加算するのが手っ取り早いです。

ティルト

左右の動きがパンならば、縦方向の傾きはティルトです。ティルトアップ・ティルトダウン・縦パンやパンアップ・パンダウンのように色々な呼び名があるそうです。

遠近感を出したりするなどに向いてます。

f:id:tsubaki_t1:20160216231744g:plain

LookatTarget.csのRotationRangeをx軸に固定すると、こんな感じでティルトが出来ますが、活用の場があるかは不明です。

また単純にカメラの位置を回したい場合、CameraがアタッチされているオブジェクトのTransformのrotationのxを操作します。

f:id:tsubaki_t1:20160216233035j:plain

ロール

ロールはカメラを傾けます。安定感が無い代わりに非常にインパクトの強い迫力満点な感じの絵を出せます。ただ、使いどころが難しいです。

f:id:tsubaki_t1:20160216232159g:plain

f:id:tsubaki_t1:20160216232403g:plain

Unityでやるとしたら、Rotationのz軸を動かします。

f:id:tsubaki_t1:20160216233146j:plain

ドリーイン・ドリーアウト

ドリーイン・ドリーアウトは移動撮影の一つで、カメラ自体を動かして画面の拡大・縮小を行います。
カメラが実際に動くので、後述するズームイン・ズームアウトより立体感があります。またカメラが動くので壁を貫通したりします。

f:id:tsubaki_t1:20160216234829g:plain

この表現を行う方法は簡単、カメラを対象に近づければOKです。
その際、モデルを貫通してポリゴンの裏を見せないようにご注意を。どうしても貫通する場合は、Clipping PlanesのNearをもっと小さくすると猶予が増えます。

f:id:tsubaki_t1:20160216235006j:plain

ズームイン・ズームアウト

ズームイン・ズームアウトは、画角(Field of View)を広く・狭くすることで画面を拡大縮小します。ドリーと異なりカメラの位置は動いていないので、モデルを貫通する事はありません。
この方法でズームした場合、立体感が薄れます。
人が目を細めたような、何かに注目するような感じで使えます。

f:id:tsubaki_t1:20160216235111g:plain

Unityで設定する場合、CameraのField of Viewを設定します。カメラ設定がPerspectiveではなくOrthographicの場合、Sizeがこれに該当します。

FOVが23度くらいで凄く注目してる、65度で割と広く漠然と見てる…ぐらいの認識だそうで。
ちなみに日本のゲームは45度ぐらいが多いと噂で聞きましたが、実際どうなんでしょう。自分の節穴アイでは見分けは付きませんハハ

f:id:tsubaki_t1:20160216235938j:plain

またAssets>ImportPackage>Cameraに含まれるTargetFieldOfViewを使用すると、被写体に合わせてFOVを調整してくれます。

f:id:tsubaki_t1:20160217000044j:plain

ドリーとズームのコンボ

ドリーイン(接近)しながらズームアウトを合わせると立体感が増していく…みたいな面白い表現が出来るそうなので実際に試してみました。
確かに、夢から覚めるとか意識が戻る的な表現をする場合、こういった表現は面白そうです。逆にドリーアウト(離れる)しながらズームインすると、立体感を失います。

f:id:tsubaki_t1:20160217000801g:plain

感想

とりあえずゲームを面白くする技術の5ページ分+αくらいをUnityで試しながらメモしましたが、割と奥が深そうです。
他にも「やってはいけないカメラ表現」や「操作しやすいカメラワーク」「酔わないカメラワーク」「アクションやロボゲー・ホラーゲー等のゲームに使われてる各カメラワーク紹介」などは、気が向いたら作りながら紹介したい所です。

www.amazon.co.jp

関連

tsubakit1.hateblo.jp

tsubakit1.hateblo.jp

www.ediusworld.com

tsubakit1.hateblo.jp

tsubakit1.hateblo.jp

ウダサンコウボウ: [Unity]アップ時に可愛く撮る(カメラの視野角)