最終更新:2020 年 1 月(読み終わるまでの時間:6 分)

ライト、カメラ良し。よーい、アクション!Cinemachine を使ってカメラを設定しましょう

このページで学ぶ内容:Unity における事実上の標準カメラシステムである Cinemachine に関する高度なヒント。その裏には、たくさんのオプションや可能性を持った、洗練されたシステムがあります。Unity のテクニカルエバンジェリストである Ciro Continisio による、Cinemachine の上級者向けユースケースやヒントを紹介します。 

Unity - Cinemachine でダイナミックで美しいショットを追加する

複数の Cinemachine Brain

分割画面のマルチプレイヤーゲームや、ピクチャインピクチャエフェクト(例:監視カメラ)の作成などのために、複数のカメラをシーン内に用意する必要がある場合があります。Cinemachine が Brain コンポーネントを通じてすべてのカメラを制御しているように見えますが、シーン内に複数の Brain を配置し、それぞれの Brain に一連のバーチャルカメラを制御させる方法があります。

この場合、キャラクターの顔に向いた補助的なカメラを使用して、RenderTexture へのレンダリングを行うだけで、UI にビデオフィードを表示することができます。このビデオフィードにもう少し特色を加えるには、Cinemachine を使用してキャラクターの顔がフレーム内に収まるようにします。

 

Unity - 複数の Cinemachine Brain をセットアップする

Brain のセットアップ

この設定は非常に単純です。Unity のカメラを 2 つ作成し、それぞれに Cinemachine Brain をアタッチします。その後、必要な分だけバーチャルカメラを作成します。

Brain に作成したバーチャルカメラの一部のみを認識させるには、次の 3 つの手順を実行するだけです。

  1. 特定のカメラに影響を与えるバーチャルカメラを固有のレイヤー(たとえば「Characters」)に配置します。
  2. そのレイヤーをレンダリングするように、そのカメラのカリングマスクを設定します。
  3. そのレイヤーを除外するように、他のカメラのカリングマスクを設定します。

このプロセスでカメラのカリングマスクを使用していても、それに応じてレンダリングを変更する必要はないことに注意してください。Unity では 31 個のレイヤーを使用できますが、バーチャルカメラを配置するために作成するレイヤーは 1 つだけでかまいません。 

このプロセス全体は、この記事の最後にあるビデオでもまとめられています。

Unity - Cinemachine によるワールド空間での上方のオーバーライド

さまざまな「World Up」軸

Cinemachine は、「World Up」軸が存在するという想定の下に動作します。この軸はデフォルトで Y が up となっています。Cinemachine では、この軸を基準として使用することで、どのようなカメラの動きが禁止されているかを認識します。たとえば、対象を真下から見上げたり、真上から見下ろしたりすることはありません(本物のカメラはこのような動きはしないですからね!)。

2D カメラ(平行投影としてマークされたカメラ)の場合、Cinemachine の動作は異なり、カメラは地面、つまり、この場合は X 軸と Z 軸という残り 2 つの軸で構成される平面の上しか動けないように制限されます。

ただし、この「World Up」軸とそれに対応する平面を別のものと合わせなければならない場合もあります。たとえば、2D 物理演算を使用するゲームを開発していて、ゲームプレイに XY 平面を使用しなければならない場合です。その場合には、角度を付けてこの平面をカメラに映したいものではないでしょうか。例として次の図ではカメラ平面を少し傾けています。

これを行うには、Cinemachine Brain の「World Up Override」プロパティにトランスフォームを割り当てるだけです。空のゲームオブジェクトを作成して、それをマニピュレーターとして使用すると、そのオブジェクトを回転させて試して、自分の Cinemachine 設定にとって適切な「World Up」を見つけることができます。

Unity - Cinemachine カメラのポストプロセッシングエフェクト

スマートなポストプロセッシングの適用

Cinemachine は、ポストプロセッシングスタック v1 と v2 のどちらとも連動します。ただし、Cinemachine と組み合わせて使用する場合、v2 はボリュームベースのシステムであり、いくつかの便利なテクニックを利用できるため、v2 の方が適しています。

組み合わせて使用する場合、エフェクトを次の 2 つのカテゴリに分けることをお勧めします。 

  1. すべてのショットに影響する全般エフェクト
  2. 1 つのショット(Cinemachine 用語では VirtualCamera)に特有のエフェクト

一般的に、アンビエントオクルージョン(AO)、カラーグレーディング、グレインなど、スタイルに関するエフェクトは通常、1 つ目のグループに属します。このようなスタイルは、ゲームやフィルム全体を通じて一貫したものに保つ必要があるからです。一方、被写界深度、レンズの歪み、色収差など、カメラの物理プロパティをシミュレーションするエフェクトは、Virtual Camera に設定するのが適しています。ただし、これらは絶対に遵守しなければならないルールというわけではありません。

たとえば、上記の例では、非常にローカルなポストプロセッシングボリュームを使用して、古い監視カメラのレンズを通じて見たかのような印象を実現しています。これをエディタで設定する方法については、次のセクションをご覧ください。

Unity - Cinemachine カメラを使用したポストプロセッシングエフェクト

バーチャルカメラにエフェクトを設定する

これを実現するには、Virtual Camera 自体に「Is Global」とマークされていない Post Process Volume を用意して、コライダーを追加するだけです。通常、とても小さな(半径 0.05 くらいの)Sphere Collider を使用して、ゲームプレイ中にカメラが誤ってこのボリュームに入らないようにします。具体的には、以下のように、Virtual Camera、Post Process Volume、および Collider を同じオブジェクト上に設定します。

その後、必要なエフェクトすべてを追加します。該当するチェックボックスをオンにして、メインプロフィールのエフェクトをオーバーライドすることもできます。チェックボックスをオンにしない場合、そのプロパティは基本値(通常はグローバルボリュームの値)のままになることに注意してください。オンにすると、そのボリュームに対してのみ、値がオーバーライドされます。

Unity - Cinemachine のドリーエフェクト

ドリーズームエフェクトの作成

最後に、ちょっとしたシネマトグラフィーテクニックを紹介します。「ドリーズーム」エフェクトを見たことはあるでしょうか。このエフェクトは、1958 年に Alfred Hitchcock 監督の映画『めまい』で先駆的に使われ、それ以降、多数の映画で利用されるようになりました。 

画面上では、キャラクターと背景の間の空間が広くなったり狭くなったりしているように見えます。非常に格好良いテクニックで、Cinemachine を使えば、即簡単に再現できます。 

上記の例をご覧ください。ゲームプレイの途中でトリガーが設定されています。

このエフェクトを作成するには、まず、設定が同じ 2 つの Virtual Camera を用意します。その後、一方の Virtual Camera を引いて、「Field of View」の値を減少させます。タイムラインか「Priority」を使用して 2 つの Virtual Camera をブレンドすると、ドリーズームエフェクトが実現します。

このエフェクトは、透視投影カメラを使わないと機能しません。平行投影カメラではうまくいかないことに注意してください。

 

弊社のウェブサイトは最善のユーザー体験をお届けするためにクッキーを使用しています。詳細については、クッキーポリシーのページをご覧ください。

OK