Houdini 20.0 Pyro

基本のPyroインスタンス化

On this page

Houdiniの新しいPyroインスタンス化システムを使用すると、様々なPyroソースのインスタンス化、そのアトリビュートの変更とランダム化、トランスフォームの適用、および点火時間のカスタマイズが可能になります。

簡単に言うと、Pyro Source Packノードを使用して複数のPyroソースをパック化し、それらのソースをライブラリにマージします。 このライブラリの個々の要素は、Scatterノードなどのポイントソースを介して、または、カーブポイントに沿ってばら撒かれます。 Attribute from Piecesを使用すれば、様々なライブラリ要素を、そのばら撒いたポイントにランダムに割り当てることも可能です。

Tip

Pyroソースのインスタンス化の説明については、Pyroインスタンス化の定義を参照してください。

Pyro Source Pack SOPは、入力ボリュームからパックソースセットを作成します。 ただし、パックソースセットはソースボリュームを含んだパックプリミティブと、これらをPyroシミュレーションに適用する方法に関するルールで構成されています。 以下の例では、densityボリュームとtemperatureボリューム、そして次に示したルールを含んだパックソースセットを作成します。

パックソースセットライブラリ

Note

以下は概念的な例であることに注意してください。 実際の場面では、Pyro Source Packノードの Frame Range パラメータも指定する必要があります。

  1. obj レベルで、Geometryノードを作成し、その中に入ります。

  2. ネットワークエディタ内で⇥ Tabを押し、 Pyro Configure Billowy Smoke ツールを呼び出します。これにより、煙をシミュレーションする短いノードチェーンが作成されます。

  3. volumerasterizeattributesノードを見つけます。ソースボリュームはこのノードの出力であり、densitytemperaturevのVDBで構成されています。

  4. Pyro Source Packノードを配置し、その入力をvolumerasterizeattributesの出力に接続します。この新しいノードがパックソースセットを作成します。

  5. この新しいノードの Name パラメータをtorus_smokeに設定します。このノードの出力は、torus_smokeという名前のパックソースセットです。

Note

Pyro Source Packソースを見ると、densitytemperaturevのフィールドのルールに加えて、デフォルトのburnフィールドを確認することができます。 ここではburnルールは不要なので、実際の場面では削除する必要がありますが、この簡略化された例では問題になりません。

次の手順では、このチェーンの最初の5個のノードからさらに2つのソースを作成します。

  1. Torusから始まり先ほど新しく追加したPyro Source Packノードまでのノードチェーンをコピーします。⌃ Ctrl + Cを押してこれらのノードをコピーし、⌃ Ctrl + Vを押して同じネットワーク内にペーストします。

  2. 新しくペーストしたノードチェーンのsmoke_base1ノードを選択し削除します。代わりにSphereを配置します。

  3. 新しくペーストしたノードチェーンの終端にあるPyro Source Packノードを選択し、 Name パラメータをsphere_smokeに変更します。

  4. 次に、Boxを使用して、上の手順1から3を繰り返します。このパックソースセットの名前はbox_smokeにします。

  5. Mergeを配置し、3個のPyro Source Packノードをそれに接続します。このノードの名前をLIBRARYに変更します。

ばら撒きとランダムなインスタンス化

  1. 新しいGridを作成します。そのサイズを25x25に変更して、新しいScatterに接続します。

  2. そのScatterノードで、 Force Total Count18に設定します。

  3. 下流に新しいAttribute from Piecesノードを追加します。

  4. Mergeノード(LIBRARY)をそのノードの2番目の入力に接続します。

  5. ModeRandom に設定します。

  6. Copy Attributes で、source_rulesを追加します。これで、ばら撒かれたポイントは、ソースのインスタンス化に必要な基本の必須アトリビュートを持つようになります。

  7. Time Shiftノードを追加し、その入力をAttribute from Piecesオペレータの出力に接続します。

  8. Frame パラメータを⌃ Ctrl + ⇧ Shift + クリックし、エクスプレッションを削除して、値を1に設定します。これにより、すべてのフレームで同じインスタンスポイントのセットが使用されるようになります。このノードがないと、ライブラリが空っぽになった時(つまり、現在のフレームがパックソースセットのフレーム範囲を超えた時)、インスタンスポイントが無効になってしまいます。

インスタンス化されたパックソースセットを使用したシミュレーション

  1. Pyro Solver (pyrosolver_billowy_smoke)を見つけます。ソルバの1番目の入力をTime Shiftノードの出力に接続します。

  2. ソルバの Sourcing タブに移動し、 Source TypePacked Sets に変更します。

  3. 最後に、ソルバがパックソースセットのライブラリを参照するようにします。このためには、 Source Library../LIBRARY(前に作成したMergeノード)に設定します。

  4. プレイバーのを押して、シミュレーションを実行します。

Pyro

Sparse(疎)Pyro

Pyroインスタンス

レガシーPyro