【Unity】【Cinemachine】Group Composerを使って複数のオブジェクトが必ず映り込むカメラを作る

CinemachineのAimをGroup Composerに設定して複数のオブジェクトが必ず映り込むカメラを作る方法をまとめます。

Unity2018.4.0
Cinemachine2.2.9

はじめに

この記事では、CinemachineのVirtual CameraのAimをGroup Composerに設定した時の挙動について説明します。

f:id:halya_11:20190630012915p:plain

また説明の便宜上、Followには何もアサインしない状態にしておきます。

f:id:halya_11:20190629232741p:plain

なお、Cinemachineの基本的な使い方やVirtual Cameraの設定方法は本記事では説明しません。
これらは以下の記事にまとめていますので、必要に応じて参照してください。

light11.hatenadiary.com

Target Groupを作る

まず映したい対象をグループ化します。
空のGameObjectを作ってCinemachine Target Groupをアタッチし、
Targetの+ボタンを押下して対象となるオブジェクトをアサインします。

f:id:halya_11:20190630013320p:plain

Radiusにはそれぞれのオブジェクトの半径を入れておきます。

f:id:halya_11:20190630013412p:plain

Group Composerを設定する

次にVirtual CameraのLook Atに前節のTarget Groupをセットします。
そしてAimをGroup Composerに設定します。

f:id:halya_11:20190630013929p:plain

これで常に両方のオブジェクトが映るようなカメラを作れます。

f:id:halya_11:20190630015352g:plain

Framing Mode

Framing Modeを変えると「何をもって両方のオブジェクトがカメラに映り込んでいると判定するか」が変わります。
例えばFraming ModeをHorizontalにすると、Target Groupが画面横幅に収まっていればカメラに映り込んでいると判定されます。
すなわち縦方向は見切れる可能性が出てきます。

f:id:halya_11:20190630015915g:plain

Framing Modeは以下の三種類から選べます。

名前 説明
Horizontal 画面横基準で映り込み判定
Vertical 画面縦基準で映り込み判定
Horizontal And Vertical 画面横&縦基準で映り込み判定

Adjustment Mode

Group Composerはカメラの回転値の他に、FoVや対象までの距離(すなわちカメラの位置)を変えることでこの機能を実現しています。
本来Aimはカメラの回転値のみを変える機能なので、Group ComposerはAimの中でもかなり特殊なモードであるといえます。

さてGroup Composer単体で使う場合にはFoVやカメラの位置を自動的に変えてくれるのは便利ではありますが、これらを変えて欲しくない場合もあるかと思います。
このような場合にはAdjustment Modeを変更することで対応できます。

f:id:halya_11:20190630020643p:plain

各モードの説明は下記の通りです。

名前 説明
Zoom Only FoVだけを変更する
Dolly Only 位置だけを変更する
Dolly Then Zoom FoVも位置も変更する

その他の設定項目はComposerと同じ

Group Composerのその他の設定項目に関してはComposerと同じなので割愛します。
Composerの設定項目については下記にまとめていますので必要に応じて参照してください。

light11.hatenadiary.com

関連

light11.hatenadiary.com