URP Vignette と Continuous Move Provider を用いて VR 空間内の移動処理にビネット効果を適用する【XR Interaction Toolkit】
Universal Render Pipeline の Vignette と XR Interaction Toolkit の Continuous Move Provider を組み合わせて, VR 空間内で移動処理を行う際にビネット効果を適用し,VR酔いの低減を行うようにします.
検証環境
- Unity 2019.4.17f1
- Universal Render Pipeline 7.3.1
- XR Interaction Toolkit 1.0.0-pre2
Vignette 効果
Oculus Integration の OVR Vignette の際に詳細が説明されています. xrdnk.hateblo.jp
URP Vignette
まずは Volume コンポーネント側の設定を行います. 適当に空オブジェクトを作成し,UnityEngine.Rendering.Volume スクリプトコンポーネントをアタッチします. 適用範囲 (Mode) を Global にします.Volume Profile の New を押し,Volume Profile を作成します. Volume Profile に Vignette 設定を追加します.Add Override を押下し,Post-Processing > Vignette を選択します. Vignette のパラメタ設定は今回は以下のようにしました.Roundedはここではチェックした方がよいと思います.
次に Camera 側の確認を行います. Main Camera の Camera コンポーネントの Rendering > Post Processing にチェックが入っていること, Universal Additional Camera Data コンポーネントがアタッチされていることを確認します.
Continuous Move Provider (Device-based)
Continuous Move Provider の設定を行います.
Vignette Provider
以下のスクリプトコンポーネントを適当なオブジェクトにアタッチします.
Intensity は Vignette 効果の強さ.Duration は Vignette 効果の遷移時間, Volume には Vignette がある Volume コンポーネントを持つオブジェクト, Locomotion Provider には Locomotion 処理実行時に Vignette 効果を適用したい, Locomotion 関連のコンポーネント (ここでは Continuous Move Provider)を設定します. 基底クラスに Locomotion Provider があれば,回転処理,テレポート処理でも適用できます.
動作確認
移動処理を行う際にビネット効果が適用されているのを確認できました.