Version: 2019.3
言語: 日本語
シェーダーに固定関数 TexGen を実装する
パーティクルシステムとは何か?

Particle systems in Unity

パーティクルシステムは、パーティクルと呼ばれる多くの小さな画像やメッシュをを擬態してレンダリングし、視覚効果を生み出します。システムの各パーティクルは、エフェクトの個々のグラフィカルな要素を表します。個々のパーティクルのシミュレーションをまとめて行い、全体的な効果を作成します。

Unity の Spaceship デモのホログラムのテーブル。ビジュアルエフェクトグラフで作成。
Unity の Spaceship デモのホログラムのテーブル。ビジュアルエフェクトグラフで作成。

Particle systems are useful when you want to create dynamic objects like fire, smoke, or liquids, because it is difficult to depict this kind of object with a Mesh (3D) or Sprite (2D). Meshes and Sprites are better at depicting solid objects such as a house or a car.

パーティクルシステムソリューションの選択

パーティクルシステムを作成するときに柔軟に対応できるよう、Unity には 2 つのソリューションがあります。プロジェクトが コンピュートシェーダー をサポートするプラットフォームをターゲットにしている場合、両方を同時に使用することができます。パーティクルシステムソリューションは以下の 2 つです。

  • The Built-in Particle System: A solution that gives you full read/write access to the system, and the particles it contains, from C# scripts. You can use the [Particle System API(text to create custom behaviors for your particle system.
  • The Visual Effect Graph: A solution that can run on the GPU to simulate millions of particles and create large-scale visual effects. The Visual Effect Graph also includes a visual graph editor to help you author highly customizable visual effects.

The following table shows a high-level comparison of the two particle system solutions. For more information about either solution, see Built-in Particle System or Visual Effect Graph.

機能 ビルトインパーティクルシステム Visual Effect Graph
レンダリングパイプラインの互換性 ビルトインレンダーパイプライン、ユニバーサルレンダーパイプライン、HD レンダーパイプライン ユニバーサルレンダーパイプライン、HD レンダーパイプライン
可能なパーティクル数 数千 数百万
パーティクルシステムのオーサリング インスペクターで Particle System コンポーネント を使用する簡単なモジュラー式オーサリングプロセス。各モジュールは、パーティクルの定義済みの動作を表します。 グラフビューを使用する高度にカスタマイズ可能なオーサリングプロセス。
物理演算 パーティクルは Unity の基礎となる物理演算システムと相互作用します。 パーティクルは、Visual Effect Graph で定義する特定の要素と相互作用できます。例えば、パーティクルは深度バッファと相互作用します。
スクリプトの相互作用 C# スクリプトを使用して、ランタイムにパーティクルシステムを完全にカスタマイズできます。システム内の各パーティクルの読み取りと書き込みを行い、衝突イベントに応答できます。Particle System コンポーネント は再生制御 API も提供します。つまり、スクリプトを使用してエフェクトを再生および一時停止し、カスタムのステップサイズでエフェクトのシミュレーションを行います。 グラフのプロパティを公開し、C# スクリプトを通してそれらにアクセスして、エフェクトのインスタンスをカスタマイズできます。また、イベントインターフェース を使用して、グラフが処理できる添付データと共にカスタムイベントを送信することもできます。Visual Effect コンポーネント は再生制御 API も提供します。つまり、スクリプトを使用してエフェクトを再生および一時停止し、カスタムのステップサイズでエフェクトのシミュレーションを行います。
フレームバッファ なし HD レンダーパイプラインで、カラーバッファと深度バッファにアクセスできます。例えば、カラーバッファをサンプルし、その結果を使用してパーティクルの色を設定したり、深度バッファを使用して衝突のシミュレーションを行います。

Built-in Particle System

Unity のビルトインパーティクルシステムを使用すると、Unity がサポートするすべてのプラットフォーム用のエフェクトを作成できます。ビルトインのパーティクルシステムは、CPU 上でパーティクルの動作のシミュレーションを行います。これにより、以下の主な利点があります。

  • C# スクリプトを使用して、システムやシステム内の個々のパーティクルを操作できます。
  • パーティクルシステムは Unity の基礎となる物理演算システムを使用できるため、シーン内のコライダーと相互作用します。

ビルトインパーティクルシステムの使用方法については、Particle System コンポーネント を参照してください。

ビルトインパーティクルシステムで作成したエフェクトの例
ビルトインパーティクルシステムで作成したエフェクトの例

Visual Effect Graph

Visual Effect Graphは、Unity プロジェクトの大規模な視覚効果を作成するためのパッケージです。Visual Effect Graphは GPU のパーティクルの動作をシミュレートします。これにより、ビルトインのパーティクルシステムよりもはるかに多くのパーティクルをシミュレートできます。多数のパーティクルを含み、高度にカスタマイズ可能動作が必要な視覚効果を作成したい場合は、ビルトインパーティクルシステムの代わりに Visual Effect Graph を使用します。Visual Effect Graph のインストールと使用方法については、入門ガイド を参照してください。

Visual Effect Graph で作成した効果の例
Visual Effect Graph で作成した効果の例
シェーダーに固定関数 TexGen を実装する
パーティクルシステムとは何か?