こんにちは、ともくんのゲーム作り部屋にようこそ!
このページでは、
「UnityのVolumeってなに?」
「Volumeの使い方が分からなくて困っている。」
というお悩みの方に向けた内容となっています。
Unityでは、Volumeと呼ばれるコンポーネントを使って、カメラ映像を加工することができます。
このVolumeとは、ポストプロセスという機能をURPで使うためのコンポーネントで、カメラ映像を表示する前にフィルタやエフェクトで加工して画像を表示させることができます。
Volumeを使うことで、カメラ映像に光の効果を表示させたり、歪ませたり、ピントをずらしたりなどの効果を付けることができます。
そこで、このページでは、UnityのVolumeというコンポーネントについて、どんな機能なのか、また使い方までをまとめていきます。
Volumeとは?
まずは、Volumeがどういう機能なのかについて紹介していきます。
カメラの映像にフィルタやエフェクトを付ける役割
Volumeとは、冒頭でも解説した通り、カメラの映像に対してフィルタやエフェクトの加工を付けることができるコンポーネントです。
Volumeコンポーネントを使うことで、例えばBloom(ブルーム)と呼ばれる映像を光らせるエフェクトで、以下のように映像を加工することができます。
<加工前>

<加工後>

このVolumeでの加工はポストプロセス機能と呼ばれ、カメラで撮影した映像を表示させる前に、フィルタやエフェクトを使って加工して、映像を表示させています。
また、フィルタやエフェクトによる加工の設定は、Volume Profileというファイルを使って行い、このファイルをVolumeコンポーネントに紐づけることで、映像を加工しています。

URPやHDRPで提供されているポストプロセス機能
Volumeコンポーネントは、UnityのレンダリングパイプラインであるURP(ユニバーサルレンダーパイプライン)やHDRP(HDレンダーパイプライン)で提供されているポストプロセス機能になっています。
このレンダリングパイプラインは、Unityの画面に表示する一連の操作を実行するためのもので、URPやHDRP以外にビルトインレンダーパイプラインというものが準備されています。
Volumeコンポーネントを使って、カメラ映像を加工して表示させる場合は、このレンダリングパイプラインがURPかHDRPのプロジェクトのどちらかの際に使うことができる機能となっています。
一方で、ビルトインレンダーパイプラインを使っているプロジェクトの場合は、Post Processing Stackというポストプロセス機能を導入することで、Volumeコンポーネントのようにカメラ映像にエフェクトで加工して表示させるということができるようになります。
そのため、Volumeコンポーネントを使う場合は、レンダリングパイプラインをURPもしくはHDRPにする必要があるため注意しておきましょう。
なお、プロジェクト作成時にどのレンダリングパイプラインを使用するかを選択することができます。

Volumeの基本的な使い方
ここからは、実際にVolumeコンポーネントを使ってカメラ映像を加工する基本的な使い方を紹介していきます。
なお、ここでは以下のゲームシーンを準備してVolumeを使ってみます。

Volumeコンポーネントを付けたオブジェクトを配置
まずは、Unity内にVolumeコンポーネントを付けたオブジェクトを配置します。
オブジェクトを選択してVolumeコンポーネントをアタッチするか、ヒエラルキーウィンドウの+ボタンを押して、「Volume」の中にあるオブジェクトを選択します。


VolumeコンポーネントのModeを「Global」、もしくはヒエラルキーウィンドウから「Global Volume」を選択した場合は、シーン内のどこに配置されているカメラの映像にもVolumeの影響を与えることができます。
また、VolumeコンポーネントのModeを「Local」、もしくはヒエラルキーウィンドウから「Global Volume」以外を選択した場合は、同じオブジェクトに紐づけたコライダーの範囲内にあるカメラの映像にだけVolumeの影響を与えることになります。
ここでは分かりやすいように、ヒエラルキーウィンドウから「Global Volume」を選択して、Volumeコンポーネントを付けたオブジェクトを配置してみました。

Volume Profileでエフェクトやフィルタを作成する
次に、Volume Profileを作成して、Volumeコンポーネントに紐づけていきます。
Volume Profileを新しく作成する場合は、以下の「New」をクリックすると、簡単に作成されて自動的に紐づけが行われます。


そして、Volume Profileにフィルタやエフェクトを設定する場合は、「Add Override」をクリックして表示された一覧から、どの加工を行いたいかを指定していきます。

例えば、ここでは、映像を光らせることができる「Bloom」というものを設定しておきます。

今回は、以下のように黄色で光らせるような加工の設定を行っています。

カメラオブジェクトにVolumeオブジェクトをセットする
あとは、Volumeの影響を与えたいカメラオブジェクトに設定を加えていきます。
まず、カメラオブジェクトを選択して、インスペクターウィンドウからCameraコンポーネントのRenderingの中にある「Post Processing」にチェックを入れておきます。

次に、Environmentの中にある「Volume Trigger」に、作成したVolumeコンポーネントを付けたオブジェクトをセットしておきます。

そして、ゲーム画面を確認してみると、以下のように加工された映像が表示できているのが分かります。

他にも、Volume Profileの設定を変更していくことで、様々なエフェクトやフィルタを付けた映像を作ることができます。


まとめ
このページでは、UnityのVolumeについて、どんな機能なのか、また使い方までをまとめていきましたが、いかがでしたでしょうか?
Volumeとは、カメラで撮影した映像に対して、フィルタやエフェクトで加工を付けることができるコンポーネントです。
このVolumeを使うことで、映像を光らせたり、歪ませるといった加工をして映像を作り出すことができます。
なお、Volumeコンポーネントは、URPもしくはHDRPのレンダリングパイプラインで使うことができる機能なので、使用前にプロジェクトのレンダリングパイプラインを確認しておきましょう。
最後までお読みいただきまして、ありがとうございました!


コメント