On this page |
Houdini19.5のPyroソースインスタンス化ワークフローは、多様な可能性を広げるものですが、それに伴い、新しい用語、新しいノード、アトリビュートも取り入れらています。
このワークフローでは、個々のPyroソースを パックソースセット にパッケージ化する必要があります。 このパックソースセットには、ソースボリュームと、そのソースをシミュレーションに適用する方法を記述したマージ操作(またはソースルール)を格納します。 複数のパックソースセットをまとめてマージして、ソース ライブラリ を形成することができます。 そのライブラリがPyro Solverに渡されると、Pyro Solverは インスタンスポイント において目的のソースを適用できるようになります。 インスタンスポイントを生成して制御するには、 Spawn Points(生成ポイント) を使用します。 このSpawn Points(生成ポイント)は、いわばインタンスを発生させるための時間なしレシピであり、Pointアトリビュートを介してタイミングとループを制御します。 Pyroソースをインスタンス化することで、本質的に、ソースライブラリを作成してから手動配置または制御されたランダム化のどちらかの方法でこのライブラリから個々の要素をシミュレーションに取り込む手段が得られことになります。 Pyroソースのインスタンス化は Minimal OpenCL モードでも機能し、そのモードではソーシングの柔軟性が大幅に向上します。
このページでは、ソースインスタンスを使ったシミュレーションが可能な前述のコンポーネントについて説明します。詳細なワークフローの手順については以下を参照してください。
パックソースセット ¶
パックソースセットとは、Pyroシミュレーションにソーシングしたいボリュームと、そのソースをシミュレーションに適用する方法についての指示を一緒に含んだパックされたプリミティブです。
ソースボリュームをPyro Source Pack SOPに送ることで、それらのソースボリュームをパックソースセットにパッケージ化することができます。
ローレベルでは、パックソースセットの基本となるアトリビュートは、名前、フレーム長、そして格納されたボリュームをシミュレーションフィールドにマージする方法を指定したソースルールです。
これらのプロパティはそれぞれname
、frame_length
、source_rules
Primitiveアトリビュートに格納されます。
ライブラリ ¶
パックソースセット郡をまとめてマージして、ソースライブラリを作成することができます。 ソースライブラリは、アセットライブラリに非常に似ており、Pyroソースのインスタンス化によって、ライブラリから個々の要素をシミュレーションに配置することができます。 これをするためには、インスタンスポイントを作成し、そのアトリビュートによってソースを配置する場所と方法を制御します。
Spawn Point(生成ポイント) ¶
Spawn Point(生成ポイント)とは、概念的には、タイミングをより直感的に制御できるようにするインスタンスポイント用のレシピです。 具体的には、ソースを手配するタイミング、ソーシングを停止するタイミング、再生速度、繰り返しの頻度といった基本的なアニメーションデータが、Spawn Point(生成ポイント)に格納されます。 これらのプロパティは、以下をはじめとするPointアトリビュートに格納されます。
name
インスタンス化したいパックソースセットの名前。
P
インスタンスのワールド空間での位置。
orient
インスタンスのワールド空間での向き。
pivot
このインスタンスのローカルピボットポイント。
startframe
この再生フレームにてインスタンスがアクティブになります。
endframe
startframe
より大きい場合、これ以降の再生フレームにてインスタンスは非アクティブになります。
looplength
この値が1
以上の場合、ソースシーケンスはループします。
ループシーケンスは、startframe
から始まるlooplength
フレーム長のループとなります。
startoffset
インスタンスが初めて手配される時(startframe
)、パックソースセットのフレーム範囲内でこのオフセットだけ遅くソーシングを開始します。
offsetlength
パックセットの全フレーム範囲から使用するサブシーケンスの長さ。
例えば、startoffset
が0
、offsetlength
が5
の場合、0-5
のフレームのみがソーシングに使用されます。
offsetlength
が0
未満の場合、パックセットからすべてのフレームが使用されます。
sourcespeed
インスタンスが手配された時のソースの再生速度。
例えば、startoffset
が1
、sourcespeed
が2
の場合、インスタンスが初めて手配された時に1
フレームのパックセットがソーシングされ、以降のフレームでは、3, 5, ...
フレームでソーシングされていきます。この速度にはマイナスの値を指定することができます。
Spawn Point(生成ポイント)は、Pyro Spawn Sourcesノードを使用して作成することができます。
インスタンスポイント ¶
インスタンスポイントとは、適用するパックソースセット、使用するソースのフレーム、およびボリュームをシミュレーションフィールドにマージする場所と方法を指定するポイントです。 Spawn Point(生成ポイント)とは異なり、インスタンスポイントは、アクティブにソーシングしたい場合のためだけに存在します。 また、各インスタンスポイントには、そのためのソーシングルールを格納します。 以下では、ソーシングの挙動に影響を与えるPointアトリビュート、そして、Spawn Point(生成ポイント)からインスタンスポイントを生成した場合のそのPointアトリビュートのコピー元も一緒に載せています。
name
適用したいパックソースセットの名前。これは、Spawn Point(生成ポイント)からコピーされます。
P
ワールド空間でのインスタンスの位置。これは、Spawn Point(生成ポイント)からコピーされます。
orient
ワールド空間でのインスタンスの向き。これは、Spawn Point(生成ポイント)からコピーされます。
pivot
このインスタンスのローカルピボットポイント。Spawn Point(生成ポイント)からコピーされます。
frame_offset
関連するパックソースセットのシーケンスに対するオフセット。
値が0
の場合、パックソースセットの1番目のフレームが使用されます。
これは、現在のフレームとSpawn Point(生成ポイント)のstartframe
、looplength
、startoffset
、およびsourcespeed
アトリビュートを使用して計算されます。
source_rules
この辞書配列アトリビュートには、パックソースセットのボリュームをPyroシミュレーションにマージする方法を制御するソーシングルールが格納されます。 配列内のエントリ毎に個別のルールが格納されます。 これには、Pyro Solver SOPの Source Volumes セクションにある単一のエントリに付属するすべてのデータが含まれています。 特に重要なのが Source Volume と Target Field です。 Source Volume はマージされるパックソースセット内のボリュームを指定するのに対して、 Target Field はソーシング先のDOPフィールドに相当します。
インスタンスのルールは、呼応するパックソースセットからコピーされ、関連する上書きを組み込むよう変更されます。
パックセットを使用してシミュレーションを駆動するには、インスタンスポイントをPyro Solverに接続する必要があります。Pyro Source Instanceノードを使用して、Spawn Point(生成ポイント)からインスタンスポイントを作成することができます。
ルールの上書き ¶
パックセットにはソースルールが含まれていますが、ソーシングに使用される実際のルールはインスタンスポイントから読み取られます。
このため、パックセットの様々なインスタンスは、同じソースボリュームの適用方法にバリエーションを加えることができます。
例えば、あるシミュレーションで、同じソースから高温の煙と低温の煙を作成し、上昇速度に影響を与えたいとしましょう。
これをするには、temperature
フィールドに影響を与えるルールに異なるスケール乗数を設定します。
このようなバリエーションを取り入れるには、Pyro Spawn SourcesとPyro Source Instance SOPの両方に上書きを指定します。 どちらの場合でも、ルールを変更するにはターゲットフィールドを指定し、調整したい数値のルールプロパティを選択します。 すると、そのプロパティのベース値に調整値が乗算されます。 Pyro Spawn Sourcesでは、Spawn Point(生成ポイント)のその調整値を直接設定することができます。 Pyro Source Instanceの入力は多数の繋がっていないSpawn Point(生成ポイント)で構成されているため、調整値を直接制御することはできません。 代わりに、インスタンス単位の調整値として使用可能なPointアトリビュートを登録することができます。 これにより、アトリビュート値をランダム化するだけで(Attribute Adjust Floatなどを使用)、ルールの調整を素早くランダム化することが可能です。
参照フレーム ¶
パックソースセットをライブラリにマージする場合、これらすべてが同じフレームで使用可能であることが非常に重要です。
これを確実にするには、パックソースセットの作成に使用されたすべてのPyro Source Packノードで、 Reference Frame パラメータに同じ値を設定します。
このパラメータはデフォルト値の1
のままで十分です。
この値は、ソースセットがフレーム1
で開始するようタイムシフトされることを示します。
タイムシフトは、Pyroシミュレーションに適用したときのソースのタイミングには影響しません。
ソースのアクティブ化のタイミングは、Spawn Point(生成ポイント)とインスタンスポイントを使用して正確に決めることができます。
Pyro Source InstanceノードとPyro Solverノードでも、 Reference Frame を使用して、ライブラリの参照フレームを一致させる必要があります。
上記で述べたように、これらのパラメータのデフォルト値はすべて同じ1
であるため、設定をこのままにしておくだけで、すべてが正常に動作します。
しかし、タイムラインが1
で開始しない場合、このデフォルト値は適切ではありません。
この場合、パックセットはタイムラインで到達が難しいフレームにタイムシフトされてしまいます。
こうしたケースでは、これらのパラメータに新しいデフォルト値を保存することをお勧めします。
例えば、タイムラインがフレーム1000
で開始する場合、 Reference Frame パラメータのデフォルト値は1000
に設定します。
こうすると、新しく作成されたパックソースセットはプレイバーの最初のフレームに表示されるようなります。
Note
Pyro Solver SOPには、ソース用とコライダー用に2つの Reference Frame パラメータがあります。