URP ポストプロセスエフェクト一覧と設定ガイド

1. 概要

Universal Render Pipeline (URP) では、シーン全体や指定エリアに対して多彩なポストプロセスエフェクトを適用することで、映画的なルックや特定のビジュアル表現を実現できます。Volume コンポーネントと Volume プロファイルを用いることで、各エフェクトのパラメータを細かく制御できます。

※注意: 利用可能なエフェクトの詳細やパラメータは、Unity のバージョン、URP の設定、プロジェクトごとのカスタマイズにより変動する場合があります。


2. 利用可能なエフェクト一覧

以下は、公式ドキュメントで紹介されている主なポストプロセスエフェクトです。

2.1 Bloom(ブルーム)

  • 目的: シーン内の明るい部分から光がにじみ出るような効果を付加し、輝きやハロー(光の輪)効果を演出します。
    • 主要パラメータ:
    • Intensity(強度): 輝きの強さを調整
    • Threshold(閾値): 効果が適用される明るさのレベル
    • Scatter(散乱度): 光が広がる拡がり具合
  • 用途例: 夜景、ライトの強調、幻想的な表現

2.2 Chromatic Aberration(クロマティック・アベレーション)

  • 目的: レンズの分散現象を模倣し、色チャネルが若干ずれることで視覚的なにじみやフリンジングを発生させます。
  • 主要パラメータ:
    • Intensity(強度): 色ずれの具合
    • Fast Mode: 高速化のためのモード切替(場合により使用)
  • 用途例: レトロ感、サイケデリックなビジュアル、演出効果の追加

2.3 Color Adjustments(カラー・アジャストメンツ)

  • 目的: シーン全体の明るさ、コントラスト、彩度、色相などを一括で調整し、映像全体の印象を変えることができます。
  • 主要パラメータ:
    • Post Exposure(露光補正)
    • Contrast(コントラスト)
    • Color Filter(カラーフィルター)
    • Hue Shift(色相シフト)
    • Saturation(彩度)
  • 用途例: カラーバランスの補正、シーンの雰囲気作り

2.4 Color Curves(カラー・カーブス)

  • 目的: RGB 各チャネルのトーンカーブを利用して、より精密な色補正やグレーディングが行えます。
  • 主要パラメータ:
    • 各チャネルのカーブ調整(RGB)
    • Master カーブ: 全体の明暗バランスの調整
  • 用途例: 高度な色調補正、フィルムライクな雰囲気の演出

2.5 Depth of Field(被写界深度)

  • 目的: フォーカスが合う部分と背景、前景のぼかし具合をシミュレートし、カメラの焦点効果を再現します。
  • 主要パラメータ:
    • Focus Distance(フォーカス距離)
    • Aperture(絞り値)
    • Focal Length(焦点距離)
    • Blade Count(絞り羽根数、ボケの形状)
  • 用途例: フォーカルポイントの強調、背景のぼかし、シネマティックな表現

2.6 Film Grain(フィルムグレイン)

  • 目的: 映画フィルム特有の粒状感を追加し、映像に質感やレトロな風合いを与えます。
  • 主要パラメータ:
    • Intensity(強度)
    • Response(応答)
  • 用途例: クラシカルなフィルムエフェクト、テクスチャの補足

2.7 Lens Distortion(レンズ歪み)

  • 目的: レンズ特有の歪みをシミュレートし、映像全体に独自の遠近感や視覚効果を与えます。
  • 主要パラメータ:
    • Intensity(強度)
    • Scale(拡大・縮小の補正)
  • 用途例: 特殊効果、リアルなカメラレンズの再現

2.8 Panini Projection(パニーニ・プロジェクション)

  • 目的: 広角レンズやパノラマ映像において、遠近感の歪み(パースペクティブの変形)を補正または強調するための効果です。
  • 主要パラメータ:
    • Distance(補正距離)
    • Crop(クロップ範囲)
  • 用途例: 広角映像の補正、視覚的インパクトの向上

2.9 Vignette(ビネット)

  • 目的: 画面の周辺部を暗くすることで、視線を中央に集める効果を生み出します。
  • 主要パラメータ:
    • Intensity(強度)
    • Smoothness(スムーズさ)
    • Roundness(丸み)
  • 用途例: シーンのフォーカス強調、雰囲気のある演出

3. 基本的な設定手順

以下は、URP シーンにおいて上記エフェクトを利用するための基本的な設定手順です。

3.1 カメラ設定の有効化

  • カメラの選択:
    Hierarchy ビューからシーン内のカメラオブジェクトを選びます。
  • Post Processing のチェック:
    Inspector 内のカメラコンポーネントにある「Post Processing」チェックボックスをオンにします。これでカメラに対して Volume によるエフェクトが適用されるようになります。

3.2 Volume コンポーネントの追加

  • Global Volume の配置:
    メニューバーから GameObject > Volume > Global Volume を選択し、シーンに Global Volume ゲームオブジェクトを追加します。Global Volume はシーン全体にエフェクトを適用するための領域です。
  • プロファイルの作成:
    Global Volume ゲームオブジェクトを選択し、Inspector に表示される Volume コンポーネントの Profile プロパティの右側にある「New」ボタンをクリックして新しい Volume プロファイルを作成します。

3.3 エフェクトの追加とカスタマイズ

  • エフェクトの追加:
    作成した Volume プロファイルに上記の各エフェクト(Bloom、Chromatic Aberration、Color Adjustments など)を追加します。エフェクトごとに、コンポーネントの追加は「Add Override」ボタンから行います。
  • パラメータの調整:
    追加したエフェクトの各パラメータをプロジェクトのビジュアル要件に合わせて調整します。たとえば、Bloom の強度や閾値、Color Adjustments の露光やコントラストなど、各値を調整することで目的の表現を実現できます。

3.4 ローカル Volume の利用(位置ベースのエフェクト)

  • シーンの特定のエリアにのみエフェクトを適用したい場合は、Global Volume の代わりにローカル Volume を利用します。ローカル Volume はエリアごとに設定でき、カメラがそのエリアに入ったときのみエフェクトが作用します。

4. 補足情報と参考リンク

  • Unity 公式ドキュメント:
    詳細な各エフェクトのパラメータや更新情報については、公式ドキュメント をご参照ください。
  • プロジェクト毎の最適化:
    エフェクトの数や設定値は、パフォーマンスや目的のビジュアルに合わせて調整する必要があります。特にモバイル向けや高性能を要求するプロジェクトの場合は、負荷とクオリティのバランスに留意してください。
  • バージョン依存の設定:
    Unity のバージョンや URP のリリースによっては、エフェクトの仕様や利用可能なパラメータに変更がある場合があります。プロジェクト開始前に最新情報の確認をおすすめします。

5. まとめ

本資料では、URP シーンにおけるポストプロセスエフェクトの一覧と、その基本的な設定手順について解説しました。Volume コンポーネントによるグローバル/ローカルの設定や、各エフェクトのカスタマイズにより、シーン全体の雰囲気や映像表現を自在にコントロールすることが可能です。プロジェクトのニーズに合わせた適切なエフェクト選択とパラメータ調整で、より高度なビジュアル表現の実現を目指してください。


コードで変更するサンプル

はい、Volume コンポーネントとそのプロファイルにアクセスすることで、コードから Vignette(ビネット)の各パラメータ(例えば、強度など)を更新することが可能です。以下に、実際のコード例を示しながら手順を解説します。


コードで Vignette の値を更新する方法

1. 必要な名前空間のインポート

まず、Volume コンポーネントと URP 固有のエフェクトにアクセスするために、以下の名前空間をインポートします。

using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;

2. Volume コンポーネントの参照を取得

対象のゲームオブジェクトにアタッチされている Volume コンポーネント(または Global Volume を利用している場合、そのオブジェクト)の参照をスクリプト内で取得します。

3. Vignette コンポーネントを取得してパラメータを更新

Volume プロファイルから TryGet<T>() メソッドを利用して、Vignette オーバーライドを取得し、そのプロパティ(例えば intensity)の値を更新します。以下はそのサンプルコードです。

using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;

public class VignetteUpdater : MonoBehaviour
{
    // Inspector から Volume コンポーネントをアサイン
    public Volume volume;

    // 更新したい強度の値(例: 0から1の範囲)
    public float newIntensity = 0.8f;

    // 取得した Vignette コンポーネントへの参照
    private Vignette vignette;

    void Start()
    {
        // volume がアサインされているかチェック
        if (volume == null)
        {
            Debug.LogError("Volume コンポーネントがアサインされていません!");
            return;
        }

        // Volume プロファイルから Vignette を取得
        if (volume.profile.TryGet<Vignette>(out vignette))
        {
            // Vignette の intensity パラメータを更新
            vignette.intensity.value = newIntensity;
            Debug.Log("Vignette intensity を更新しました: " + newIntensity);
        }
        else
        {
            Debug.LogError("Volume プロファイルに Vignette オーバーライドが存在しません。");
        }
    }

    // 動的に更新したい場合は Update() 内で変更することも可能です
    void Update()
    {
        // 例えば、キー入力によって値を変更する
        if (Input.GetKeyDown(KeyCode.UpArrow))
        {
            newIntensity = Mathf.Clamp(newIntensity + 0.1f, 0f, 1f);
            if (vignette != null) vignette.intensity.value = newIntensity;
        }
        else if (Input.GetKeyDown(KeyCode.DownArrow))
        {
            newIntensity = Mathf.Clamp(newIntensity - 0.1f, 0f, 1f);
            if (vignette != null) vignette.intensity.value = newIntensity;
        }
    }
}

ポイントの解説

  • Volume コンポーネントの取得
    上記のサンプルでは、Inspector から Volume コンポーネントを割り当てています。実行時に必ず正しくアサインされているか確認してください。
    また、もし複数の Volume を利用している場合、対象の Volume が Global かローカルかで挙動が変わるため注意が必要です。
  • Volume プロファイル内のオーバーライド取得
    volume.profile.TryGet<Vignette>(out vignette) を用いることで、Volume プロファイル内から Vignette オーバーライドを安全に取得できます。オーバーライドが存在しない場合は false となるため、その際のエラーチェックも重要です。
  • パラメータの更新
    Vignette のパラメータ(例えば intensity)は、FloatParameter オブジェクトとして格納されています。そのため、vignette.intensity.value に新しい値を代入することで更新が反映されます。
  • 動的な更新
    スクリプトの Update() メソッド内で条件に応じた更新処理を行うことで、リアルタイムにエフェクトのパラメータを変更できます。例えば、キー入力を利用して強度を調整する実装例も示しました。

注意点

  • 実行時のインスタンス化
    もし Volume プロファイルを複数のシーンやオブジェクトで共有している場合、実行時にそのプロファイルを直接変更すると他のオブジェクトにも影響が出る可能性があります。その場合は、プロファイルのインスタンスを複製してから変更することを検討してください。
  • パフォーマンスへの影響
    ポストプロセスエフェクトのパラメータ更新は大きな負荷にはなりませんが、複雑な変更や頻繁なアップデートがある場合はパフォーマンスに注意してください。

以上の方法を使えば、コードから Vignette の値(強度など)を直接更新でき、シーンのビジュアルエフェクトを動的に変更することが可能です。プロジェクトのニーズに合わせた調整を行ってください。

Post-Process,URP

Posted by hidepon