ストリームとはグループを使用した非常に効率的な方法です。何回かだけパーティクルに影響を与えたい場合であれば、通常ではグループを使います。Streamsは、いくつかの事をパーティクルのグループに分けて実行したい時に非常に役に立ちます。ソルバ上でクリックすれば、ネットワーク内のすべてのストリームの名前を確認することができます。デフォルトでは、ストリームの名前が、パーティクルを作成するノードと同じ名前です。
ストリームは基本的には、別々のチェーンに分けて、ソルバの前に再度一緒に結合することができるグループです。これは、ネットワーク内で起きていることを調べようとする時に役に立ちます。また、影響を与えたいノード毎にグループを参照する必要がありません。
例えば、POP Locationの後にパーティクルを青色にするためにPOP Colorを追加したとします。そして、ingroup = @P.y < -5;
のルールを定義したPOP Streamを別に作成して、そのストリームの後にパーティクルを緑色にするためにもう1つPOP Colorを追加します。これは、パーティクルがある高さ以下に落ちる度に、パーティクルが緑色に変わることを意味しています。両方のストリームをMerge DOPに接続して、そこからPOP Solverに接続することができます。
POP Forceノードを追加して、パーティクルを上に押し返せば、重力で下に引っ張られていることがもっと明白になります。
さらに進んで、ingroup = @P.x > 12;
のルールを定義したPOP Streamとパーティクルを紫色にするPOP Colorノードを作成します。これは、パーティクルがX方向で12を越える度に、紫色に変わります。
グループではなく、ストリームを使うメリットの1つは、ネットワークで何が起きているのかを解明するのが非常に簡単であることです。これと同じ事をグループを使って行なうと、すべてが1本のチェーンになってしまいます。
ストリームの動作をよく理解するために、POP Locationからpopstream2
を接続解除して、それをpopstream1
チェーンの下に接続すれば、両方のルールが適用されることを確認することができます。そうすることで、パーティクルがある高さより下に落ちて、 且つ X方向で12を越える度にパーティクルが紫色に変わります。
Note
すべてのジェネレータノードからPOP Solverまでの実線は1本のみ可能です。実線のパスがない場合は、ジェネレータは実行されません。複数の実線パスが存在すれば、複数回実行される場合があります。POP StreamとPOP Replicateのようないくつかのノードは、参照入力を作成することができ、破線として表示されます。この破線は他のストリームのサブセットとして新しいストリームを開始するために使うことができます。
ストリームは、ポイントグループの作成によって実装されています。POPノードのstreamname
という名前のパラメータは、システムに、このノードがstream_chs("streamname")
というグループを作成することを伝えます。通常では、このデフォルトは$OS
になっているので、合理的な名前のストリームになります。ポイントグループが使われているので、パーティクルは2つ以上のストリームに属することが可能です。しかし、POPノードを適用する時、すべてのストリームが一緒に合流します。つまり、パーティクルが2つ以上のストリームに存在していても、1度だけしかPOPノードから影響を受けません。
POPノードにストリームの入力がない、つまり、上流ノードにstreamname
パラメータがないなら、POPノードはすべてのパーティクルに適用されます。そのため、入力のないPOP Forceは、すべてのパーティクルに適用されます。グループオプションを使ってPOP Forceをサブセットに制限することができますが、次に続くノードは、そのグループに制限されず、ストリームがパーティクルの全体のセットになります。
Tip
POP Attractノードは、兄弟チェーン内で他のストリームを参照することができます。