Motion Blur
Motion Blur (モーションブラー) エフェクトは現実世界のカメラが、カメラの露出時間よりも早く動くオブジェクトを撮影するときに画像に生じるぼやけをシミュレートします。このぼやけは通常、素早く動くオブジェクト、または長時間の露出が原因となります。
Motion Blur の使用
Motion Blur エフェクトは HDRP の速度バッファから速度を使います。つまり、Motion Blur にエフェクトを持たせるためには、プロジェクトで Motion Vectors を有効にしなければなりません。Motion Vectors を有効化する方法については、モーションベクトルドキュメント を参照してください。
Motion Blur は Volume フレームワークを使うため、Motion Blur プロパティーを有効化し変更するには、Motion Blur オーバーライドを Volume に追加しなければなりません。Volume に Motion Blur を追加する手順は以下の通りです。
- シーンまたは Hierarchy ビューで、Volume コンポーネントを含むゲームオブジェクトを選択し、Inspector で表示します。
- Inspector で Add Override > Post-processing へ移動し、Motion Blur をクリックします。これで HDRP は Volume が影響を与えるすべてのカメラに対して Motion Blur を適用します。
Motion Blur には手動で展開しなければならない 追加オプション が含まれています。
API
ランタイム中このオーバーライドにアクセスし制御するためには、Volume スクリプティング API を使用します。Volume システムの仕組みにより、プロパティーは標準 Unity コンポーネントとは異なる方法で編集されます。また、各プロパティーに overrideState があるなど、他にも注意する点があります。これは Volume システムが、設定したプロパティー値と Volume Profile に保存されているデフォルト値のうち、どちらを使うかを指示します。API を正しい利用法についての詳細は、 Volume スクリプティング API を参照してください。
プロパティー
プロパティー | 説明 |
---|---|
Intensity | Motion Blur エフェクトの強度を設定します。これは速度バッファ内の速度の値を増減します。値を 0 に設定すると Motion Blur は無効になります。 |
Quality | このエフェクトの品質レベルを特定します。各品質レベルは異なるプリセット値を適用します。Unity はプリセットがオーバーライドするプロパティーの編集ができないようにしています。各プロパティーに独自の値を設定したい場合は、Custom を選択してください。 |
Sample Count | HDRP が Motion Blur エフェクトを演算するために使う、最大サンプルポイント数を設定します。値が高いほど、質が高くより滑らかな結果になりますが、エフェクトのリソース負荷が大きくなります。 |
Maximum Velocity | スライダーを使って、Camera 回転を除くすべてのモーションブラーのソースに対して HDRP が許容する最大速度をピクセル単位で設定します。このしきい値以上の値は、しきい値に固定されます。値が高いほど、モーションブラーは強くなり、リソース負荷が大きくなります。 |
Minimum Velocity | スライダーを使って、モーションブラーをトリガーする最小速度をピクセル単位で設定します。値が高いほど、HDRP は動きの遅いゲームオブジェクトに Motion Blur を計算しなくなり、リソース負荷が軽くなります。 |
Camera Motion Blur | カメラの動きがモーションブラーに影響を与えるかどうかを示します。このプロパティーを無効にすると、カメラの動きがモーションブラーに影響を与えなくなります。 |
Camera Clamp Mode | HDRP がカメラの動きと回転を決定するモーションベクトルを固定するために使う方法を指定します。これは厳密にはカメラからのモーションベクトルを固定しますが、カメラに関連するモーションベクトル速度も変更する場合があるため、注意が必要です。例えば、カメラを親に持つ (つまりカメラと一緒に動き回転する) ゲームオブジェクトは、カメラが動く際にモーションベクトルが 0 になる場合があります。オプションは以下の通りです。 • None: Camera に起因するモーションベクトルコンポーネントは、同じように対応されます。 •Rotation: ** Camera 回転に起因するモーションベクトルコンポーネントは、別々に固定されます。 •Translation: Camera 移動に起因するモーションベクトルコンポーネントは、別々に固定されます。 •Separate Translation And Rotation: Camera 回転と移動に起因するモーションベクトルコンポーネントは、別の固定オプションで別々に固定されます。 •Full Camera Motion Vector**: Camera の全動作 (回転と移動) に起因するモーションベクトルコンポーネントは、Object モーションとは別に固定されますが、単一のしきい値を持ちます。 |
- Rotation Clamp | スライダーを使って、HDRP が Camera 回転によるゲームオブジェクトの速度への影響を許可する最大速度を設定します。この値は画面の割合で表現されます。値が高いほど、Camera 回転がより幅広い結果をもたらします。 このプロパティーは、Camera Clamp Mode を Rotation または Separate Translation And Rotation に設定したときのみ関連します。 |
- Translation Clamp | スライダーを使って、HDRP が Camera 移動によるゲームオブジェクトの速度への影響を許可する最大速度を設定します。この値は画面の割合で表現されます。値が高いほど、Camera 回転がより幅広い結果をもたらします。 このプロパティーは、Camera Clamp Mode を Translation または Separate Translation And Rotation に設定したときのみ関連します。 |
- Motion Vector Clamp | スライダーを使って、HDRP が Camera 変換の変更によるゲームオブジェクトの速度への影響を許可する最大速度を設定します。この値は画面の割合で表現されます。値が高いほど、Camera 回転がより幅広い結果をもたらします。 このプロパティーは、Camera Clamp Mode を Full Camera Motion Vector に設定したときのみ関連します。 |
詳細
Mortion Blur のパフォーマンスへの影響を低減するために、複数のオプションが用意されています。効果の高い順に並べると、以下のようになります。
- Sample Count を減らします。サンプル数が少ないほど、パフォーマンスの高さに直接影響を与えます。ただし、アルゴリズムは最大サンプル数を固定するため、1 ピクセル以下離れているサンプルは存在せず、従ってサンプル数が大きくてもゆっくり動くゲームオブジェクトには、さほど影響しません。
- Minimum Velocity を増やします。このしきい値を増やすと、HDRP がぼやかす画面量が少なくなります。このしきい値を下回る速度のゲームオブジェクトが多数ある場合は、HDRP はそれらの Motion Blur を演算せず、エフェクトのリソース負荷は軽減します。
- Maximum Velocity および Camera Clamp パラメーターを減らします。これにより、ぼやけの強度が軽減され、GPU により優しいアクセスパターンになります。
None 以外に Camera Clamp Mode を選択すると、カメラモーションに通常関連するモーションベクトルが、関連しなくなります。例えば、オブジェクトの親がカメラでそのカメラに完全に従う場合、通常そのオブジェクトは、ゼロに近い長さのモーションベクトルを持ちます。ただし、カメラが異なる固定方法をオブジェクトに用いる場合、固定点に到達した場合の最終速度長は、ゼロにならない可能性が高いでしょう。