パーティクルが衝突した地点からさらにパーティクルを発生させるには
https://www.youtube.com/watch?v=bUmfBURGHxc&hd=1
今回はパーティクルが衝突した地点から、さらに別のパーティクルを発生させる方法についてご紹介します。
サンプルとして使用するのは、「パーティクルが地面にぶつかってそのまま消滅するには」のビデオで解説したシーンを使っていきますので、パーティクルが地面にぶつかるという工程につきましては、そちらのビデオをご覧ください。
パーティクルが衝突した地点から、さらに別のパーティクルを発生させるにはまず、最初にパーティクルが衝突した地点というのを検出できるようにしなければなりません。これを検出できるようにするため、パーティクルオペレータを追加します。このパーティクルオペレータというのは、接続しているパーティクルに関する様々な情報を取得するためのアイテムです。
パーティクルオペレータのプロパティを見てみると、特性の追加というボタンがありますので、こちらをクリックしてみると、どういった情報を取得したいのかを選択できるようになっています。今回、パーティクルが衝突した地点から別のパーティクルを発生させるため、パーティクルが衝突したタイミング(イベント)と、衝突した位置の情報が必要になります。このため、衝突イベントと衝突位置という特性を追加するようにします。これで情報が取れるようになりましたが、ひとつ注意しておくことがあります。
今回、このパーティクルではパーティクルの衝突時にパーティクルを消滅させるようアセンブリを使用していますが、このアセンブリの処理のすぐ後にParticle Operatorの処理が行われるよう、Particle Simulationのオペレータを開き、接続の順序がアセンブリの後に来ていることを確認してください。このノードの接続の順序が正しくないと、適切な情報が取得できなくなってしまいます。
次に、この取得した情報を元に新たなパーティクルを発生させるためのエミッターが必要となりますので、コレクター/エミッターを追加し、スケマティックビューへと追加します。このコレクター/エミッターがパーティクルを発生させるベースとなりますので、衝突のタイミングでパーティクルが発生するよう、Particle Operatorの衝突イベントをパーティクル放射へと接続します。さらにコレクター/エミッターでその位置を受け付けられるよう、コレクター/エミッターに対して先ほどと同様、特性の追加で位置を追加し、Particle Operatorの衝突位置を接続します。
実際に受け取った情報でパーティクルを発生させるため、シミュレーションを一つ追加し、コレクター/エミッターを追加したParticle Simulationのオペレータへと接続します。シミュレーションさせてみると、パーティクルの落下地点に新たにパーティクルが追加されたのがわかります。
ここからさらに、この落下地点を元にパーティクルを発生させます。これにはソースエミッターを使いましょう。ソースエミッターとパーティクルシミュレーションを追加し、ソースエミッターを新たに追加したパーティクルシミュレーションのオペレータへと接続します。
シミュレーションさせてみると、落下地点からパーティクルが発生するようになったのが確認できます。
このように、パーティクルの落下地点を取得するにはパーティクルオペレータ、そこからパーティクルを発生させるためにはコレクター/エミッターを使うことで、次々とパーティクルを発生させることができるようになります。