VolumeのON・OFFをスクリプトで行う
はじめに
この記事ではUnityの映像表現で使われるVolumeについての基本的な機能を解説します。
Volumeとはカメラに対して映像効果を加えるものです。これを実装することでリアルな世界観を表現できますが、
処理が重くなる欠点があります。具体的な表現は下図参照。
今回は下の映像表現の切り替えを行います。
Volumeを使う方法
URP(Universal Render Pipeline)・HDRP(High Definition Render Pipeline)等を導入することで使えるようになります。
導入方法は下のリンクから。HDRPはInstallしたらWizardを使って手っ取り早く設定しましょう。URPの方法は自分が使うようであればブログ投稿していきます。
Volumeの使用手順
①GameObject
=> Volume
=>Global Volume
でSceneにVolumeを挿入する。
今回はSceneに置いただけでカメラに映像効果を加えることができるGlobal Volumeを使います。
②New
を押してVolume Profile
を作成する。
③VolumeのAdd Override
=> Post-processing
=>Color Adjustments
を選ぶ
Color Adjustments設定
①テストColorFilter
にチェックを入れてみる。
②ColorFilterの色を変更。
色の変更を行ったらColorFilterのチェックを外しておく。
スクリプト
①以下のスクリプトをGlobal Volumeにアタッチする。
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.HighDefinition;
public class CameraColorChange : MonoBehaviour
{
public Volume _volume;
void Start()
{
_volume.profile.TryGet<ColorAdjustments>(out var color);
color.colorFilter.overrideState = true;
}
}
②Volume変数にInspector上に設置してあるGlobal Volumeをセットする。
テスト
変更できました。動画が繰り返されているので点滅しているように見えますが、実際には起こりません。
まとめ
スクリプトは数行で完結するが、調べるのには少し時間がかかりました。
Add ComponentされたものはスクリプトでEnableを使えばほとんどが制御できるがVolumeは
- プロファイルにアクセス
- OverrideしてあるSRPを指定して取得
- 変数の指定
とプロファイル内容の変更をする手順となります。結構めんどくさい。
調べても自分が欲しい情報には中々ヒットせず公式リファレンスを見て解決できました。