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