【unityプラグイン】Post Process ポストエフェクト画面特殊効果色置換

 プラグインのドキュメントとインストール方法:

インストール | 後処理 | 3.2.2

リソースのバックアップ:

PostProcessing2 (UnityPackage 後処理視覚効果処理)-Unity3D ドキュメント クラス リソース-CSDN ダウンロード

1. 空のオブジェクトを作成し、コンポーネントを追加します: Post-process Volume

  1. 新しいプロファイルを作成する

  2. 効果を追加して、目的の効果を追加します。

  3. このオブジェクトの Layer を特定のレイヤーに設定します。ここでは Post-process という名前を付けました。

ボリュームは、特定の効果とアクションの範囲を制御できます
ボリュームのレイヤーとトリガー範囲を設定する
  •  Is Global: エフェクトをグローバルに適用するかどうか。チェックはグローバル効果で、それ以外はローカル効果です。
    • 部分的な効果には、Box Collider などの 3D コライダーを追加する必要があります。Camera が Collider に入ると、追加された画像効果を見ることができます。

2. コンポーネントをカメラに追加: 後処理レイヤー

  1. トリガーを設定します。後ろにあるこのボタンをクリックするだけです。
  2. レイヤーを設定し、後処理に設定

  • トリガー: オブジェクトのトランスフォームを特殊効果のトリガーとして設定します。
    • この Transform はブレンド機能を制御し、Unity はデフォルトで Camera をTriggerに割り当てます。他のゲーム オブジェクトを使用してブレンド機能を制御することもできます。
    • たとえば、トップダウン ゲームでは、カメラの Transform ではなく、プレイヤー キャラクターの GameObject を使用してブレンドを操作する方が適切な場合があります。
    • このフィールドが [なし] に設定されている場合、そのレイヤーのローカル ボリュームは無効になります (グローバル ボリュームは正常に機能します)。
  • レイヤー: ここでのレイヤーは、レンダリングするレイヤーを参照するのではなく、ボリュームが配置されているレイヤーを選択することを指し、これらのレイヤーに対するボリュームの効果のみがレンダリングされます。
  •  トップダウンゲーム:東方

 いくつかの効果:

色関連 - カラー グレーディングの一部の機能:

原画: 

 高彩度: 色相と彩度

色相の変更: 色相対色相

色の除去/保存: 色相と彩度

色の置き換え 

色置換の初期イメージ:

テクスチャのルックアップ - テクスチャのルックアップ (LUT) 
  1. Ps では、満足のいく効果が得られるように絵に色を付けます
  2. この初期 LUT に適用されたエフェクトをオーバーレイします
  3. 変更した LUT を保存し、Unity に入れます。
  4. Lookup Texture を LUT として指定して、画面の色を置き換えます。

  

コード部分: 

using UnityEngine.Rendering.PostProcessing;

新しいボリュームを作成します。

[
パブリック PostProcessVolume QuickVolume(int レイヤー、float 優先度、params PostProcessEffectSettings[] 設定)
]

例: ブルームを動的に作成します。Update で明るさの変更を制御します。

using UnityEngine;
using UnityEngine.Rendering.PostProcessing;

public class Test : MonoBehaviour
{
    PostProcessVolume m_Volume;
    Bloom m_bloom;
    float startValue = 12.68f;

    void Start()
    {
        // Create an instance of a Bloom
        m_bloom = ScriptableObject.CreateInstance<Bloom>();
        m_bloom.enabled.Override(true);
        m_bloom.intensity.Override(startValue);
        // Use the QuickVolume method to create a volume with a priority of 100, and assign the bloom to this volume
        m_Volume = PostProcessManager.instance.QuickVolume(gameObject.layer, 100f, m_bloom);
    }
    void Update()
    {
        // Change intensity using a sinus curve
        m_bloom.intensity.value = startValue + Mathf.Sin(Time.realtimeSinceStartup)*6f;
    }
    void OnDestroy()
    {
        RuntimeUtilities.DestroyVolume(m_Volume, true);
    }
}

このコードは、新しいブルーム エフェクトを作成し、新しく生成されたボリュームに割り当てます。次に、フレームごとにブルームの強度を変化させます。メモリ リークを回避するには、不要になったボリュームと添付されたプロファイルを破棄します。

構成ファイル エディター

1 つ以上のボリュームで使用されている既存のプロファイルを手動で編集することもできます。To do this, you can use . 各フィールドの効果はわずかに異なります。PostProcessVolume

  • 共有プロファイルを直接変更します。
    • クラス フィールド名: sharedProfile
    • 同じ構成ファイルを使用してすべてのボリュームに変更を適用します
    • 変更されたアセット -再生モードを終了してもリセットされない
  • このボリュームのみの共有プロファイルのクローンをリクエストするには:
    • クラス フィールド名:プロフィール
    • 指定されたボリュームに変更を適用します
    • プレイモード終了時にリセット
    • 構成ファイルが不要になったら、手動で破棄する必要があります

PostProcessProfile次のユーティリティ メソッドが含まれています。

実践方法 説明
T AddSettings() プロファイルのタイプTの新しい効果を作成、追加、および返します。すでに存在する場合は例外をスローします
PostProcessEffectSettings AddSettings(PostProcessEffectSettings エフェクト) 作成した効果をプロファイルに追加し、その効果を返します。
無効なRemoveSettings() プロファイルから効果を削除します。存在しない場合は、例外がスローされます。
bool TryGetSettings(out T outSetting) プロファイルから効果を取得します。如果找到プロフィール,则返回 true,反之返回 false

/PostProcessing/Runtime/PostProcessProfile.csソース ファイルには、さらに多くのメソッドがあります。

重要:手動で作成した プロファイル または効果はすべて破棄する必要があります

補足事項

オンザフライでインスタンス化する必要がある場合は、ファイルをバインドする必要があります。PostProcessLayerPostProcessResources

AddComponent が呼び出された後、PostProcessLayer ファイルInit()PostProcessResources パラメーターとして使用されます。

リソースはどこにありますか? PostProcessLayer スクリプトのインポート設定で、この列をクリックして見つけます。

例:

var postProcessLayer = gameObject.AddComponent<PostProcessLayer>();
postProcessLayer.Init(resources);

おすすめ

転載: blog.csdn.net/yjy99yjy999/article/details/126630797