【Unity】Volumeとは?ゲーム映像にフィルタやエフェクトを付けられる機能

Volumeとは? Unity

こんにちは、ともくんのゲーム作り部屋にようこそ!

このページでは、

「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コンポーネントを使って、カメラ映像を加工して表示させる場合は、このレンダリングパイプラインがURPHDRPのプロジェクトのどちらかの際に使うことができる機能となっています。

一方で、ビルトインレンダーパイプラインを使っているプロジェクトの場合は、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のレンダリングパイプラインで使うことができる機能なので、使用前にプロジェクトのレンダリングパイプラインを確認しておきましょう。

最後までお読みいただきまして、ありがとうございました!

コメント