Language:
Page Info
Tags:
Skill Level:
Engine Version:

Particle Collision モードにディスタンス フィールドを使用する

DFParticleBanner.png

Scene Depth (シーン深度) を利用すると、ゲームにおけるパーティクル コリジョンが制限され、カメラビューのみでしか使用できない場合があります。ライフタイムの長いパーティクル、もしくは広い領域に使用するパーティクルに対しては、 コリジョンはあまり正確ではない、という見方もできます。プロジェクトで Mesh Distance FieldsNEW! を使用している場合は、 Scene Depth の代わりに、パーティクルの Collision Mode をシーン全体のコリジョンに使用することができます。

Distance Field Collision Mode で使用するコリジョンは Scene Depth よりも信頼できます。ただし、シーン全体の解像度を低く表現するために Global Distance Field を使用しているため、 Distance Field Collision Mode を使用すると、パーティクルは薄いオブジェクトを通過し、鋭角が丸くなることに気が付くでしょう。解像度が低くなる代わりに、 Distance Field によるコリジョンは非常に効率的になります。パフォーマンス負荷が Scene Depth の使用時とほぼ同じになり、カメラ ビューの制限なしに動きます。Distance Field Collision Mode は Shader Model 5 (SM5) の機能です。SM5 をサポートしないハードウェアでは、パーティクルは自動的に Scene Depth を使ったコリジョンに戻ります。

このガイドでは、パーティクル システム内のディスタンス フィールドに対して Collision Mode を有効にする方法を説明します。

ステップ

この機能を使うには、[Project Settings (プロジェクト設定)][Rendering] セクションで [Generate Mesh Distance Fields (メッシュ ディスタンス フィールドの生成)] を有効にする必要があります。有効にしていない場合は、 Mesh Distance Fields を有効にする をご覧ください。

  1. [Content Browser (コンテンツ ブラウザ)] から [Particle System] を開きます。用意してない場合は、新規に作成します。

    ContentBrowser.png

    例えば、コンテンツ サンプル のパーティクル P_GPUParticles_Collision2 アセットは、最小限のセットアップで使い始めることができます。

  2. 選択したパーティクル システムをダブルクリックすると カスケード パーティクル エディタ が開きます。

    Cascade.png

  1. カスケード パーティクル エディタを開いたら、空いているところを右クリックして、モジュール リストから [Type Data] > [New GPU Sprites] を選択します。

    AddGPUmodule.png

  2. もう一度空いているところを右クリックして、モジュール リストから [Collision] > [Collision(Scene Depth)] を選択します。

    AddCollisionModule.png

  3. [Collision (Scene Depth)] モジュールを選択します。[Details (詳細)] パネルの [Collision Mode] の横にあるドロップダウンから [Distance Field] を選びます。

    DetailsPanelCollisionMode.png

最終結果

パーティクル システムを有効にしてコリジョン モードをディスタンス フィールドで使う方法を説明したので、シーン深度を使わずにパーティクルとシーン全体とコリジョンが可能になりました。 これにより、領域の大小に関係なく、視覚効果の種類の選択肢が広がり、作成したエフェクトのライフタイムも長くなります。

このサンプルではパーティクル コリジョンには Distance Fields コリジョンを使用しています。パーティクルは、カメラ ビューの中で見えていようとなかろうと、Distnace Field が生成されているサーフェスによって常にブロックされます。カメラが木の下を移動すると、 木の上のサーフェス上 (カメラ ビューの範囲外) のパーティクルのコリジョンはまだパーティクルに影響を与えています。

Scene Depth コリジョンをパーティクル コリジョンに使用すると、パーティクルは Scene Depth バッファーを使ってカメラ ビューで可視化されているものによってのみブロックされます。従って、カメラが木の下を通ると、 木の上のサーフェス上 (カメラ ビューの範囲外) のパーティクルのコリジョンはパーティクルに影響を与えず、たとえブロックされていたとしても、カメラの前の地面に落ちます。

Tags