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

シーン コリジョンにディスタンス フィールドを使うためにパーティクル システムを有効にする方法を説明します。

Choose your operating system:

Windows

macOS

Linux

コンテンツ

DFParticleBanner.png

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

Distance Field Collision Mode で使用するコリジョンは Scene Depth よりも信頼できます。ただし、シーン全体の解像度を低く表現するために グローバル ディスタンス フィールド を使用しているため、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. コンテンツ ブラウザ パーティクル システム を探して開く、または使用できるものがない場合は新しく作成します。

    ContentBrowser.png

    機能別サンプル にあるパーティクル P_GPU_particles_collision2 アセットは、最低限の設定で開始できます。

  2. 選択したパーティクル システムをダブルクリックして Cascate Partice エディタ を開きます。

    Cascade.png

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

    AddGPUmodule.png

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

    AddCollisionModule.png

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

    DetailsPanelCollisionMode.png

最終結果

パーティクル システムを有効にしてディスタンス フィールドにコリジョン モードを使用する方法を学習しました。パーティクルはシーン深度に頼ることなくシーン全体と衝突します。これにより、広範囲をカバーしても小さい範囲に特化しても、ビジュアル エフェクトのタイプと作成したこれらのエフェクトのライフタイムに柔軟性ができます。

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

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

タグ
Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
閉じる