【Unity】【Cinemachine】Virtual CameraのNoiseで「手ブレ」を表現する

CinemachineでVirtual CameraのNoiseを使って「手ブレ」を表現する方法をまとめました。

Unity2018.4.0
Cinemachine2.2.9

はじめに

この記事ではCinemachineで手ブレを表現するNoise機能について説明します。

f:id:halya_11:20190630200835g:plain

弱めの手ブレから激しい手ブレまでいくつかのプリセットから選べます。
また、細かくカスタムすることもできます。

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

light11.hatenadiary.com

プリセットを使って手ブレを表現する

Noise機能を使って手ブレを作るにはまず、Virtual CameraのNoiseからBasic Multi Channel Perlinを選択します。

f:id:halya_11:20190630201059p:plain

次にNoise Profileのドロップダウンをクリックします。
するとプリセットが表示されます。

f:id:halya_11:20190630201223p:plain

試しに6D Shakeを選んで再生すると次のように激しくカメラが揺れます。

f:id:halya_11:20190630201344g:plain

Amplitudeで振幅を、Frequencyで振動数を調整できます。

f:id:halya_11:20190630201714p:plain

振幅は大きいほど揺れ幅が大きくなります。
振動数は大きいほど時間あたりに揺れる回数が多くなります。

自作のNoise Profileを作る

プリセットで目的通りの手ブレが作れない場合には自作することもできます。
この場合、Noise Profileの右側の歯車アイコンからNewを選択してアセットを作成します。

f:id:halya_11:20190630201851p:plain

設定は作成したアセットのInspectorから行えます。

f:id:halya_11:20190630202018p:plain

ノイズは、各軸に対する位置と回転に対してそれぞれ設定できます。
例としてY軸の座標を動かすノイズを設定してみます。

f:id:halya_11:20190630202217p:plain

これを適用すると、Y軸方向にカメラが動くようになります。

f:id:halya_11:20190630202314g:plain

自作Noiseのコツ

自作でNoiseを作るとどうしても機械的になってしまいがちです。
これを防ぐためのコツがマニュアルで紹介されていたので軽く触れておきます。

docs.unity3d.com

まず、それぞれの移動値や回転値を設定する際には周波数別に低・中・高の三層構成にすると自然になるようです。

f:id:halya_11:20190630202558p:plain

また、カメラを手持ちするときには位置よりも回転の方がブレやすいようです。
これは確かにそんな気がします。
そのため、ノイズもまずは回転をいい感じにしてから位置のブレを加えます。

f:id:halya_11:20190630202930p:plain

最後に、振幅はより画角が広いカメラほど大きくするとそれらしくなるようです。

参考

docs.unity3d.com