Language:
Page Info
Tags:
Skill Level:
Engine Version:
The translation of this page is out of date. Please see the English version for the latest version of the page.

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