On this page |
Houdiniの新しいPyroインスタンス化システムを使用すると、様々なPyroソースのインスタンス化、そのアトリビュートの変更とランダム化、トランスフォームの適用、および点火時間のカスタマイズが可能になります。
簡単に言うと、Pyro Source Packノードを使用して複数のPyroソースをパック化し、それらのソースをライブラリにマージします。 このライブラリの個々の要素は、Scatterノードなどのポイントソースを介して、または、カーブポイントに沿ってばら撒かれます。 Attribute from Piecesを使用すれば、様々なライブラリ要素を、そのばら撒いたポイントにランダムに割り当てることも可能です。
Tip
Pyroソースのインスタンス化の説明については、Pyroインスタンス化の定義を参照してください。
Pyro Source Pack SOPは、入力ボリュームからパックソースセットを作成します。
ただし、パックソースセットはソースボリュームを含んだパックプリミティブと、これらをPyroシミュレーションに適用する方法に関するルールで構成されています。
以下の例では、density
ボリュームとtemperature
ボリューム、そして次に示したルールを含んだパックソースセットを作成します。
-
ソースの
density
ボリュームをdensity
Pyroフィールドに追加し、 -
temperature
Pyroフィールドをターゲットのtemperature
ボリュームに引き寄せる。
パックソースセットライブラリ ¶
Note
以下は概念的な例であることに注意してください。 実際の場面では、Pyro Source Packノードの Frame Range パラメータも指定する必要があります。
-
obj レベルで、Geometryノードを作成し、その中に入ります。
-
ネットワークエディタ内で⇥ Tabを押し、 Pyro Configure Billowy Smoke ツールを呼び出します。これにより、煙をシミュレーションする短いノードチェーンが作成されます。
-
volumerasterizeattributes
ノードを見つけます。ソースボリュームはこのノードの出力であり、density
、temperature
、v
のVDBで構成されています。 -
Pyro Source Packノードを配置し、その入力を
volumerasterizeattributes
の出力に接続します。この新しいノードがパックソースセットを作成します。 -
この新しいノードの Name パラメータを
torus_smoke
に設定します。このノードの出力は、torus_smoke
という名前のパックソースセットです。
Note
Pyro Source Packソースを見ると、density
、temperature
、v
のフィールドのルールに加えて、デフォルトのburn
フィールドを確認することができます。
ここではburn
ルールは不要なので、実際の場面では削除する必要がありますが、この簡略化された例では問題になりません。
次の手順では、このチェーンの最初の5個のノードからさらに2つのソースを作成します。
-
Torusから始まり先ほど新しく追加したPyro Source Packノードまでのノードチェーンをコピーします。⌃ Ctrl + Cを押してこれらのノードをコピーし、⌃ Ctrl + Vを押して同じネットワーク内にペーストします。
-
新しくペーストしたノードチェーンの
smoke_base1
ノードを選択し削除します。代わりにSphereを配置します。 -
新しくペーストしたノードチェーンの終端にあるPyro Source Packノードを選択し、 Name パラメータを
sphere_smoke
に変更します。 -
次に、Boxを使用して、上の手順1から3を繰り返します。このパックソースセットの名前は
box_smoke
にします。 -
Mergeを配置し、3個のPyro Source Packノードをそれに接続します。このノードの名前を
LIBRARY
に変更します。
ばら撒きとランダムなインスタンス化 ¶
-
そのScatterノードで、 Force Total Count を
18
に設定します。 -
下流に新しいAttribute from Piecesノードを追加します。
-
Mergeノード(
LIBRARY
)をそのノードの2番目の入力に接続します。 -
Mode を Random に設定します。
-
Copy Attributes で、
source_rules
を追加します。これで、ばら撒かれたポイントは、ソースのインスタンス化に必要な基本の必須アトリビュートを持つようになります。 -
Time Shiftノードを追加し、その入力をAttribute from Piecesオペレータの出力に接続します。
-
Frame パラメータを⌃ Ctrl + ⇧ Shift + クリックし、エクスプレッションを削除して、値を
1
に設定します。これにより、すべてのフレームで同じインスタンスポイントのセットが使用されるようになります。このノードがないと、ライブラリが空っぽになった時(つまり、現在のフレームがパックソースセットのフレーム範囲を超えた時)、インスタンスポイントが無効になってしまいます。
インスタンス化されたパックソースセットを使用したシミュレーション ¶
-
Pyro Solver (
pyrosolver_billowy_smoke
)を見つけます。ソルバの1番目の入力をTime Shiftノードの出力に接続します。 -
ソルバの Sourcing タブに移動し、 Source Type を Packed Sets に変更します。
-
最後に、ソルバがパックソースセットのライブラリを参照するようにします。このためには、 Source Library を
../LIBRARY
(前に作成したMergeノード)に設定します。 -
プレイバーのを押して、シミュレーションを実行します。