見出し画像

ユニティちゃんを撮影するカメラをCinemachineで制御する

ユニティちゃんを撮影するカメラを「Cinemachine」で制御する手順をまとめました。

・Unity 2018.4.17f1

1. Cinemachine

「Cinemachine」は、Unityカメラを制御するためのモジュール群です。
カメラの撮影対象「ターゲット」を指定することで、「ターゲット」の動きに合わせて、カメラの位置や向きを制御することができます。複数のカメラによるカットを切り替えや、レールを敷いたドリー撮影も可能です。

Cinemachineのドキュメント

2. ユニティちゃんの準備

ユニティちゃんをTimelineでアニメーションさせる」で作った、走ってジャンプするアニメーションに対して、Cinemachineによるカメラ撮影を行ってみます。

画像1

3. Cinemachineのインストール

(1) メニュー「Window → Package Manager」を選択。
(2) 検索ボックスに「cine」と入力して、「Cinemachine」を検索。
(3) Installボタンを押す。

画像2

インストール完了すると、Unityメニューに「Cinemachine」が追加されます。

画像3

4. バーチャルカメラの追加

「Cinemachine」では、通常のカメラではなく、「バーチャルカメラ」を使ってカメラ制御を行います。
バーチャルカメラの追加手順は次のとおりです。

(1) メニュー「Cinemachine → Create Virtual Camera」を選択。
Hierarcyウィンドウにバーチャルカメラ「CM vcam1」が追加されます。バーチャルカメラが追加されると、MainCameraの設定が無効になり、直接制御できなくなります。以降は、バーチャルカメラを使って制御を行います。

画像4

(2) 「CM vcam1」の位置と向きを以下のように設定。

Position = (0, 0.7, 5)
Rotation = (0, 180, 0)

(3) 同様に「CM vcam2」を追加し、位置と向きを以下のように設定。

Position = (−5, 0.8, -0.5)
Rotation = (0, 90, 0)

(4) 同様に「CM vcam3」を追加。位置と向きは以下のように設定。

Position = (0, 0, 0)
Rotation = (0, 0, 0)

5. バーチャルカメラの切り替え

バーチャルカメラは複数存在する場合、バーチャルカメラに追加されているCinemachineVirtualCameraコンポーネントの「Priority」が一番大きいカメラが適用されます。

標準状態では、「CM vcam1」の映像が表示されています。

画像5

「CM vcam2」の「Priority」を11に増やすことで、「CM vcam2」の映像が表示されるようになります。

画像6

「Priority」を変更しなくても、「Status : Live」のSoloボタンを押すことで、映像を確認することができます。

画像7

6. Look Atの設定

Look At」は、任意のターゲット(Transform)をカメラに注視させる設定です。カメラの移動は行いません。「CM vcam1」「CM vcam2」に「LookAt」の設定を行います。

(1) 「CM vcam1」のPriorityを11、「CM vcam2」「CM vcam3」のPriorityを10に設定。
(2)「CM vcam1」の「Look At」にProjectウィンドウの「UnityChan」をドラッグ&ドロップ。

画像8

(3) Playボタンを押して動作確認。
ユニティちゃんの原点は足元なので、足元を注視しています。本当は顔を注視したいので、修正が必要です。
Projectウィンドウで「CM vcam1」を選択していると、周囲の赤い補助ウィンドウが表示されます。

画像9

(4) ProjectウィンドウのUnityChanの下に空のGameObjectを追加し、名前に「TargetPos」を指定し、以下の位置と向きを設定。

画像10

Position = (0.0, 0.7, 0.0)
Rotatioh = (0.0, 0.0, 0.0)

(5)「CM vcam1」の「Look At」にProjectウィンドウの「TargetPos」をドラッグ&ドロップ。

(6) Playボタンを押して動作確認。
無事、顔を注視するようになりました。

画像11

(7) 同様に「CM vcam2」にも「Look At」を設定。

画像12

7. Aimの設定

「CinemachineVirtualCamera」の「Aim」では、「LookAt」で設定したターゲットに対する挙動を設定します。

・Composer : カメラフレームにターゲットを保持。
・Group Composer : カメラフレームに複数のターゲットを保持。
・Do Nothing : カメラを回転させない。
・POV : ユーザーの入力に基づいてカメラを回転。
・Same As Follow Target : カメラの回転をターゲットの回転に設定。
・Hard Look At : カメラフレームの中央にターゲットを保持。

今回はデフォルトの「Composer」をそのまま使っています。

8. Followの設定

Follow」は、任意のターゲット(Transform)をカメラに追跡させる設定です。「CM vcam3」に「Follow」の設定を行います。

(1) 「CM vcam3」のPriorityを11、「CM vcam1」「CM vcam2」のPriorityを10に設定。
(2)「CM vcam3」の「Follow」にProjectウィンドウの「TargetPos」をドラッグ&ドロップ。

画像13

(7) Playボタンを押して動作確認。
無事、後ろから追跡するようになりました。

画像14

9. Bodyの設定

「CinemachineVirtualCamera」の「Body」では、「Follow」で設定したターゲットに対する挙動を設定します。

・Transposer : Follow Targetと固定関係で移動。
・Do Nothing : カメラを移動させない。
・Framing Transposer : 固定スクリーン空間の関係で、ターゲットに移動。
・Orbital Transposer : ターゲットに対して可変の関係で移動し、オプションでプレイヤーの入力を受け入れる。
・Tracked Dolly : 事前定義されたパスに沿って移動(ドリー撮影)。
・Hard Lock to Target : ターゲットと同じ位置を使用。

今回はデフォルトの「Transposer」をそのまま使います。

10. Timelineによるバーチャルカメラの制御

「Timeline」を使って、バーチャルカメラの有効・無効を切り替えることができます。

(1) Timelineビューの「+ → Chinemachine Track」で「Chinemachine Track」を追加し、参照に「Main Camera」を指定。

画像15

(2) 「Chinemachine Track」を右クリックし、「Add From Chinemachine Virtual Camera Base」で「CM vcam3」を追加し、0〜100に配置。
(3) 同様に、「CM vcam2」を100〜310、「CM vcam1」を310〜400に配置。

画像17

(4)  Playボタンを押して動作確認。
カメラが切り替わりながらアニメーションが表示されました。アニメーション終了後、最初のフレームに戻ってしまうのが、若干気にかかります。

画像18

(5) 「TimeLine」の「WrapMode」を「Hold」に指定。
最後のTimelineの最後のフレームの状態のままになります。

画像19

画像16

この作品はユニティちゃんライセンス条項の元に提供されています



この記事が気に入ったらサポートをしてみませんか?