2022年9月28日

新しいパーティクルシステムエディター

今回のバージョンでは、Evergine のパーティクルシステムが改良されました。今後は独自のエディタを持つアセットとなり、同じパーティクルシステムの複数インスタンスを扱う際の開発が容易になります。この新しいパーティクルシステムエディタには、パーティクル作成に役立つツールが含まれており、将来の多くの新機能の基盤にもなります。

新しいパーティクルシステムのワークフロー

以前のバージョンのEvergineでは、パーティクルシステムをコンポーネントのセットとして扱っていました。ParticleSystemコンポーネントとParticleSystemRendererコンポーネント(フォースコンポーネントは別として)がありました。これは旧WaveEngineのパーティクルシステムから大幅に改善されたものですが、複数のパーティクルシステムインスタンスが関わる複雑なシーンでプレハブに大きく依存したくないと判断しました。また、同じタイプのパーティクルシステムを簡単にグループ化できる方が最適化しやすいことにも気づき、以下の図のようにワークフローを変更しました。

開発者は以下の手順で作業します。

  • ParticleSystemアセットを作成します。
  • 新しいパーティクルシステムエディタで編集します。
  • ParticlesComponentとParticlesRendererコンポーネントを使用してエンティティを作成し、シーンに配置します。

パーティクルシステムの作成

新しいパーティクルシステムアセットの作成は、Evergine Studioで他のアセットを作成する場合と同様です。アセット詳細パネルで右クリックし、パーティクルシステムの作成を選択します。

これにより、Evergineプロジェクトに新しいアセットが作成され、編集のために開くことができます。

パーティクルシステムの編集

パーティクルシステムアセットをクリックするとエディタが開き、以下の4つの領域が表示されます。

パーティクルビューポート

メイン領域には、パラメータに基づいたパーティクルシステムのシミュレーションと、いくつかのビューポート設定が表示されます。また、以下のものも表示されます。

  • エミッタシェイプ。パーティクルがどこから放出されているかを示します。
  • パーティクルシステムがエンティティシェイプエミッタを使用している場合、方向確認用にティーポットが表示されます。
  • スケール確認用のグリッド。無効にすることも可能です。

パーティクルプロパティ

ここはパーティクルシステムを設定する領域です。

すべてのプロパティは編集しやすいように異なるセクションにグループ化されています。

  • パーティクルマテリアルは、パーティクルのレンダリングに関するプロパティ(テクスチャ、レンダーレイヤー、サンプラーステート)を設定します。
  • 一般は、最大パーティクル数、初期カラー、速度など、最も重要な側面を制御する主要なプロパティをグループ化します。
  • シェイプは、パーティクルがどこからどの方向に放出されるかを制御するプロパティを持ちます。様々なシェイプから選択できます。
    • ポイント
    • 球
    • ボックス
    • 円
    • エンティティ
    • エッジ
  • Spawn は、パーティクルの生成数と生成タイミングを管理します。以下の選択が可能です:
    • 通常の Rate 放出(パーティクル/秒)。
    • Burst は、全てのパーティクルを同時に放出します(爆発などに最適)。
    • Distanceは、エミッターの移動量に比例してパーティクルを放出します。
  • Color over life は、パーティクルの色のアニメーションを管理します。
  • Size over life は、同様にパーティクルのサイズをアニメーション化します。
  • Noise グループは、パーティクルの乱流特性を管理します。
  • Force は、フォースによる引力とそのカテゴリを有効にします。

エディターツールバー

このツールバーは、パーティクルエディターの表示に関するいくつかの側面を制御します。

  • グリッド表示のオン/オフ
  • 放出ギズモ表示のオン/オフ
  • Force CPU particles:GPUパーティクルが利用可能な場合でも、CPUパーティクルの強制使用をオン/オフにします。
  • カメラ位置をリセットします。
  • ビューポートの背景色。

シミュレーションコントロール

このバーは、パーティクルシステムのシミュレーションライフに関するいくつかの側面を制御します。

  • 全てのパーティクルをリセットし、初期状態に戻します。
  • 再生 / 停止:パーティクルシミュレーションを再生または停止します。
  • タイムファクタースライダーで、パーティクルの時間を制御できます。

シーンでのパーティクルシステムの使用

パーティクルシステムアセットをシーンにドラッグすると、そのパーティクルシステムを持つエンティティが作成されます。

その新しいエンティティには、2つの新しいコンポーネントが含まれます(Transform3Dに加えて)。

ParticlesComponent

このコンポーネントは、パーティクルシステムの特定のインスタンスのシミュレーションを管理します。以下を含みます:

  • ParticleSystem プロパティ:ソースアセットを設定します。
  • Force CPU Particles:コンピュートシェーダーを使用せず、明示的にCPUパーティクルを使用します。
  • Emit Automatically :最初から放出を開始します。オフの場合、手動で放出を開始する必要があります。
  • Life Factor :パーティクルの経過時間を速めたり遅くしたりします。
  • Time Factor :パーティクルシミュレーションの速度を調整します。

このコンポーネントはアセットを取得し、シミュレーションに必要なすべてのグラフィックスリソース、メッシュ、バッファを生成します。

ParticlesRenderer

このコンポーネントは、ParticlesComponentによって定義されたメッシュとそのマテリアルをレンダリングするだけです。

次のステップ

パーティクルエディターの作成は、Evergineで最高のパーティクルシミュレーションを提供するという私たちの願いにおける確かな一歩です。パーティクルシステムの次のステップの一つとして、パーティクルシステムごとの複数エミッターのサポートと、それらの間の関係の確立が挙げられます。

ご期待ください!

Antonio avila
著者
Antonio Ávila
Plain Concepts Research