導入
このドキュメントでは、Aximmetryのネイティブレンダリングエンジンを使用してパーティクル効果を作成する方法について説明します。
パーティクルシステムとは
パーティクルシステムは、コンピュータグラフィックスのテクニックの一つで、多くの小さな要素(スプライトや3Dモデル)を使用して、火、雨、煙など、再現が難しい複雑な効果を実現する技術です。
これらの小さな要素は「パーティクル」と呼ばれます。
Aximmetryには、これらの効果をリアルタイムで作成・調整できるCPUベースのパーティクルシステムが搭載されています。
パーティクルシステムはどのように機能するのでしょうか
パーティクルシステムは、異なるコンポーネントから構成されています。
これらのコンポーネントは次の通りです:
- ソース:パーティクルの生成ポイントとなります
- エフェクター:パーティクルの外観や仮想空間での動きを制御します
パーティクルソース
パーティクルソースは、パーティクルが生成されるポイントです。
Aximmetryでは、3種類の異なるパーティクルソースを使用できます。これらのソースは、Aximmetry内の他のノードと同じように追加できます。
- パーティクルキューブソース - パーティクルはキューブから発射されます
- パーティクルスフィアソース - パーティクルはスフィアから発射されます
- パーティクルモデルソース - パーティクルはモデルから発射されます。モデルはAximmetryのプリミティブまたはインポートされたモデルのいずれかです。
パーティクルタイプ
スプライトパーティクル
パーティクルは小さな画像(または画像シーケンス)で、雨滴や火花などです。実際には、画像は任意のものを使用できます。
このタイプのパーティクルシステムは最も一般的に使用されます。
スプライト パーティクルが使用される例:
- 雨
- 雲
- 火
オブジェクト パーティクル
放出されるパーティクルはモデルです。オブジェクト パーティクルを使用すると、より現実的な3D効果を実現できます。
これらのタイプは使用頻度が低く、レンダリングコストが高いですが、より現実的な見た目を実現できます。
オブジェクトパーティクルの例:
- 石の落下
- 影を投射したり受けたり、仮想の光と相互作用する効果
注: 多くの3Dオブジェクトを表示したい場合は、インスタンス化の方が適しています。インスタンス化の例はここを参照してください: \Tutorials\Instancing
パーティクルエフェクター
パーティクルエフェクターは、3D環境内でパーティクルの外観と動作を制御するモジュールです。
Aximmetryでは多くのパーティクルエフェクターを提供しています:
- Particle Animation - スプライトパーティクルと組み合わせて使用でき、画像シーケンスを使用する場合、このモジュールで画像を切り替えることができます。
- Start TimeとEnd Timeのプロパティを使用して、シーケンス内の表示する画像をランダムに指定できます。
- Particle Color - スプライトパーティクルと組み合わせて、その lifetime を通じて色付けできます。
- Particle Fluctuation - 粒子の不透明度が最小値と最大値の間で変動します。
- Particle Gravity - 粒子は重力の影響を受けます。方向、強度、その他のパラメーターを指定できます。
- Particle Highlight - 粒子にハイライトが適用され、ブライト効果を再現します。
- Particle Mapped Veloc - 粒子の動きはVelocity Mapテクスチャで制御されます。
- パーティクル・メイズ - パーティクルが迷路のようなパターンで移動します。
- パーティクル・モデル・ディフレクター - パーティクルがモデルから反射されます。
- パーティクル・オパシティ - スプライトパーティクルと組み合わせて使用でき、その不透明度を生涯にわたって調整できます。
- パーティクル・オシレーション - パーティクルがソースの周囲で振動します。
- パーティクル プレーン デフレクター - パーティクルはプレーンから反射されます。
- パーティクル ローミング - パーティクルはソースの周囲を自由に移動します。
- パーティクル 回転 - パーティクルが回転します。風で吹き飛ばされるような効果に最適です。
- パーティクル 回転 3D - パーティクルは任意の軸を中心に3D空間で回転します。
- 粒子スケール - 粒子のスケールは寿命を通じて調整可能です。
- 粒子スケール3D - 粒子のスケールは3D空間内で寿命を通じて調整可能です。
- 粒子球フェード - 粒子は設定された球体に到達するとフェードアウトします。
- 粒子球キラー - 粒子は設定された球体に到達すると消滅します。
- 粒子ストリップ - 粒子は設定された方向に沿って伸びます。
- Particle Twirl - 粒子はソースを中心に回転します。
- Particle Velocity - 粒子はソースから離れて飛んでいきます。
上記のエフェクターの組み合わせを自由に組み合わせることで、多くの異なる粒子効果を作成できます。各パラメーターはリアルタイムで変更可能です。
シーンに粒子システムを追加する方法
粒子システムを追加する方法は、シーンにモデルをインポートする手順と非常に似ています。
例えば、カメラ、平面、2つの光源を含む非常にシンプルなシーンがあるとします:
まず、シーンにParticle Sourceを追加します。Insert Moduleメニューを開き、Particle Sourceを検索します。
以下のオプションが表示されます:
いずれかを選択できます。この例ではParticle Cube Sourceを使用します。シーンに追加し、次のように接続します:
- Particle Model Sourceを使用する場合、ソースとなるモデルを指定する必要があります。次のように設定します:
デフォルトでは、ソースはグリッドテクスチャで表示されます。非PBRマテリアルにはこちら()、PBRマテリアルにはこちら()の手順で任意のシェーダーを接続できます。
NOTE: より複雑なソースを作成するには、独自のモデルを使用することもできます。
NOTE: モデルを表示したくないが、そのモデルからパーティクルを生成したい場合は、モデルを非表示にできます。この場合、シェーダーを接続する必要はありません。
次に、Sprite Particle モジュールを次のように追加します:
- Object Particle を使用したい場合は、次のように接続します:
次に、非PBRマテリアル用の詳細はこちら(here)またはPBRマテリアル用の詳細はこちら(here)に従って、任意のシェーダーを接続できます。
NOTE: 独自のモデルを接続して、それをパーティクルとして生成することもできます。
Sprite Particle モジュールを選択し、Pin Value ウィンドウでImage File プロパティを探します:
ここに希望のイメージファイルを設定します。ここでは透明な雨滴のイメージを使用しました。
画像ファイルを設定すると、パーティクルが表示され始めます。
ここでもSize、Rotation、Colorを変更できます。
注: LayerのレンダリングレイヤーやBlending Modeを変更することもできますが、必要ない場合はデフォルト値のままにしておくことをおすすめします。
Size、Rotation、Colorを設定すると、シーンに毎秒雨滴が表示されるようになります。
パーティクルソースの調整
パーティクルソースは、パーティクルの出現頻度、出現数、ソース領域の大きさを調整するために使用できます。
パーティクルソースの変換プロパティを使用して、パーティクルの出現位置を調整できます:
パーティクルの生成率を増加させます。これを行うには、Emit Interval:を探します:
この値は秒単位で測定されます。0.1に設定してみましょう。画面に多くの雨滴が表示されるはずです。
ここで設定できる他のパラメーターを確認しましょう:
- 再生、再生、停止、クリア - これらのプロパティを使用して、パーティクルシステムの生成を制御できます。クリアはすべてのパーティクルを即座に削除し、その後再び生成を開始します。
- Emitter Lifetime - Sourceが新しい粒子を生成し続ける時間を指定できます。これも秒単位で測定されます。
- Max Emit Count - 生成できる粒子の最大数を設定できます。
- Particle Orientation - 粒子が生成される方向を指定できます。
- Particle Lifetime - 粒子が表示される時間を設定できます。これも秒単位で測定されます。
- Particle Life Speed - 粒子のライフタイムの経過速度を設定できます。この値は Particle Lifetime の値に乘じられます。
- Inher Velocity Amount - 粒子はソースの速度を継承します。ソースを移動させると、粒子は移動方向に向かって飛んでいきます。
- Random Seed - 粒子は擬似乱数で生成されます。このプロパティで異なる生成パターンを切り替えることができます。
- 事前生成 - 不可視のパーティクルが事前に生成されるため、モジュールを有効にした際にゼロから生成する必要がありません。
- シェーダーインデックス - パーティクルは、同じインデックスをレンダリングしているカメラでのみ表示されます。
- 非アクティブ時に停止 - モジュールがアクティブでない限り、パーティクルは生成されません。
- キューブサイズ - ソースキューブのサイズを設定できます。
- スフィア半径 - ソーススフィアの半径を設定できます。
- 頂点のみ - パーティクルはモデルの頂点から生成され、面やエッジからは生成されません。
- カラーマップ - スプライトパーティクルに追加のテクスチャを適用できます。
- 表面のみ - パーティクルはソースの表面にのみ表示され、内部には表示されません。
エフェクターの追加
上記のリストにあるエフェクターを、パーティクルソースに次のように接続できます:
単一のソースに複数のエフェクターを追加することも可能です。例:
調整後、パーティクルシステムは次のように表示される可能性があります:
パーティクルシステム例
チュートリアルコンテンツパッケージの一部として、パーティクルシステムの例をいくつか用意しています。こちらからアクセスできます: Tutorials\Particle System
注意: チュートリアルとサンプルパッケージがインストールされている必要があります。