On this page

Pyroインスタンス化

  • SOPのPyroソースを使用して散乱ポイント上にインスタンスを作成することで、例えば、大規模な爆発、砂嵐、山火事を作成することができます。以前のバージョンのPyroインスタンス化のワークフローとは対照的に、以下のことが可能になりました:

    • 異なるPyroソースを同時に使用することができる。

    • 点火時間を制御することができる。

    • トランスフォームを適用することができる。

  • 新しく追加された Pyro Source Packは、入力ボリュームからパックソースセットを作成します。パックソースセットは、ソースボリュームを含んだパックプリミティブと、これらをPyroシミュレーションに適用する方法に関するルールで構成されています。複数のパックソースセットをまとめてマージしてライブラリを形成することができます。標準的なワークフローでは、Attribute from Piecesノードを使用してランダムに異なるライブラリエレメントを散乱ポイントに割り当てます。例えば、Scatterノードで作成した散乱ポイントやカーブポイント沿いにソースをばら撒くことができます。Attribute from Piecesノードを使った概念的なセットアップに関しては、Pyroインスタンス化のページを参照してください。

  • もう1つの、より柔軟性のあるワークフローでは、Pyro Spawn SourcesPyro Source Instanceを使用して、個々のエレメントをPyroシミュレーションでインスタンス化します。このワークフローならば、速度、方向、ソーシングの時間などの様々なパラメータをランダム化することが可能です。さらに、ルールのオーバーライドを定義してtemperatureなどのアトリビュートをランダム化することもできます。

  • 新しく追加された Pyro Spawn Sources SOPは、パックソースセットを使用して、Pyroシミュレーションのソーシング用のSpawn Points(生成ポイント)を作成します。このSpawn Pointsは、そこに関連付けられているパックソースセットを識別し、ソースを手配するタイミング、ソースを再生する速さ、ソースの再生を繰り返す頻度などのいくつかの基本的なアニメーションデータを格納します。下流のノードでこのSpawn Pointsを修正することで、例えば、orientstartframesourcespeedなどのPointアトリビュート上に格納されているプロパティを調整したりランダム化することができます。

  • 新しく追加された The Pyro Source Instanceは、Pyro Spawn Sourcesで作成されたSpawn Pointsを摂取し、アクティブになったSpawn Pointsに対してインスタンスポイントを作成します。このインスタンスポイントをPyro Solverに接続することで、パックソースセットを使用してシミュレーションを駆動させることができます。また、Pointアトリビュートを上書きするルールを定義すれば、ソースの特定のプロパティ(例えば、temperatureアトリビュート用の乗数)をランダム化することができます。これによって、熱い部分と冷たい部分があるソースが出来上がります。

GPUで高速化されたノイズタイプ

Houdini Pyroシミュレーションは、GPUで高速化されたノイズが搭載されました:

  • 新しく追加された3個のVEX関数からそれを選択することができます: gxnoisecurlgxnoisecurlgxnoise2d

  • Analytic Fast Simplex Noiseノイズタイプは、Analytic Simplex NoiseのOpenCL版です。

  • 以下のノードは、デフォルトで、この新しいAnalytic Fast Simplex Noiseオプションを使用します:

Velocity Voxel Scale

このパラメータは、DOPとSOPのどちらのPyroネットワークでも利用可能で、ボリュームボクセルとVelocityボクセルのサイズを別々に定義してPyroシミュレーションを高速化できるようになりました。

Note

ボリュームボクセルとVelocityボクセルのサイズが異なれば、生成される結果も異なります。

  • DOPセットアップの場合、 Velocity Voxel Scale パラメータはSmoke Object (Sparse)ノードの Properties 下にあります。

  • SOPセットアップの場合、 Velocity Voxel Scale パラメータはPyro Solverノードの Setup ▸ General 下にあります。

SOPベースのFLIP流体

  • SOPベースのFLIP流体は、SOPネットワークとDOPネットワーク間でデータを交換することなく、素早くセットアップを行なうことができます。また、SOPベースのFLIP流体では、新しい境界条件が導入され、パーティクルをソーシングしたり削除するための手法が簡素化されました。

  • 境界条件の制御が新しくなりました。境界条件は、流体がシミュレーションドメインの境界に相互作用する場合に関係します。境界条件の解を求める理由は、海岸線が存在しない場合に、ある時点においてシミュレーションを終了させる必要があるからです。開いた境界条件では、波は跳ね返らずに領域外へ通過することができます。また、開いた境界条件は、流入する水やオーシャンスペクトルのような外部ソースなどの入力情報にも適用されます。この新しいSOPベースのFLIP流体は、Pressure/Velocity境界条件の解を求めることができます。Pressureベースのシミュレーションは、乱れが大きく、飛沫も多い傾向があります。

  • 新しく追加された FLIP Containerノードは、FLIPシミュレーションドメインを作成します。このドメインの境界で、境界条件が計算されます。このドメインの内側に当たったパーティクルは削除されると同時に、新規パーティクルが外側からソーシングされます。このFLIP Containerノードには、流体の物理特性(密度、表面張力、粘度など)のパラメータが用意されています。また、このコンテナ内で追加でagevorticityなどのアトリビュートを有効にすることもできます。さらには、このコンネタ内でカスタムアトリビュートを追加することもできます。DOPベースのFLIP流体とは対照的に、SOPベースのFLIPドメインの形状はボックスである必要はなく、球や円柱にすることもできます。変形またはアニメーションする形状さえも可能です。

  • 新しく追加された FLIP SourceノードとFLIP Sinkノードでは、パーティクルを作成したり削除することができます。FLIP SourceノードとFLIP SinkノードのどちらにもPressure駆動モードとVelocity駆動モードが用意されています。どちらのノードも静的、アニメーション、変形させることが可能で、オブジェクトとボリュームを使用することができます。FLIP Sourceノードには、パーティクルを作成するための色々なモードが用意されています。 None モードと Velocity モードは、ソースオブジェクトの法線方向を向いた初期速度でパーティクルを作成します。Velocityを追加することで、そのパーティクルを特定の初期方向にすることができます。 Pressure は、ソースオブジェクトの法線方向を向いた特定の圧力でパーティクルを放出します。コンテナを充填したくないのであれば、 Uniform Pressure を選択するのが良いです。このパラメータは、水位に依存せず、パーティクルはソースオブジェクトの法線方向に向けて作成されます。Pressureベースのソーシングは、Velocityを追加することで、パーティクルに初期方向を与えることができます。

  • 色々なFLIP Sourceモードは、オブジェクトの充填とソーシングの制御に役立ちます。これらのモードの違いは、コンテナを充填する時に、より明確になります。グラスを水で充填したい場合を想像してください。正しい挙動を得るために、ソースオブジェクトをグラスの底付近に配置する必要があります。

    • FLIP Source:Instantノード(Boundaryパラメータが None )の場合、ソルバはHoudiniのDOPベースのFLIP流体と非常に近い動作をします。水位がソースオブジェクトに到達すると、ソーシングが停止します。

    • FLIP Source:Velocityノード(Boundaryパラメータが Velocity )の場合、水はソースオブジェクトから溢れ出し、それでもパーティクルを生成し続けます。また、水はグラスの縁を越えて流れが止まりません。

    • FLIP Source:Pressureノード(Boundaryパラメータが Pressure )の場合、調整した Uniform Pressure または Water Level に水が到達すると、ソーシングが停止します。

  • 新しく追加された事前に構成済みのFLIP Source/Sinkノードのおかげで、Instant/Pressure/Velocityセットアップにすぐにアクセスできるようになりました。

  • 新しく追加された FLIP Collideノードは、流体とオブジェクト間の相互作用とコリジョンを制御します。FLIP Collideノードは、ボリュームだけでなく、静的オブジェクト、アニメーションオブジェクト、変形オブジェクトにも対応しています。コリジョンオブジェクトの解像度は、FLIP Containerノードの Particle Separation パラメータで制御し、オブジェクト毎に個別に調整することはできません。

    • コリジョンオブジェクトには、2Dジオメトリ、閉じた3Dジオメトリ、開いた3Dジオメトリを使用することができます。この用途のために、このノードには Surface Collide モードと Volume Collide モードが用意されています。正しい結果を得るには、さらにFLIP Solverノードの Collision サブペインに進んで、 Particle Collision から適切なモードを選択する必要があります。

    • 水面を相互作用させるには、コリジョンオブジェクトは閉じていて、 Volume Collision (FLIP Collide)と Move Outside Collision (FLIP Solver)が有効になっている必要があります。

  • 新しく追加された FLIP Solverは、サブステップ、境界の挙動(Pressure駆動またはVelocity駆動)、狭帯域、空気の非圧縮性などのすべてのシミュレーション関連の設定を定義する中心部です。また、このソルバには、オーシャンスペクトルやさらには他のSOPベースのFLIP流体シミュレーションなどの外部のPressure/Velocityソース用の4番目の入力が用意されています。

  • HoudiniのSOPベースのFLIP流体で事前に構成済みの流体セットアップがいくつか用意されています。それらのサンプルでは、temperatureviscosityなどの色々なアトリビュートの扱い方、海辺の波や誘導的なオーシャンなどのセットアップの方法がわかります。ネットワークエディタ内で⇥ Tabを押すことで、それらのツールが見つかります。

    1. FLIP Configure FLIP!では、可変粘度と、Rubber ToyのUVをパーティクルにマッピングしたカスタムカラーフィールドを使ってRubber Toyを溶かす方法がわかります。

    2. FLIP Configure Lavaは、カスタムの可変温度のサンプルです。この可変温度の値は、ソルバ内のGas Temperature Updateノードに渡されています。そこ、temperatureviscosityにマッピングされています。

    3. FLIP Configure Tankは、水位線が定義された基本的なコンテナのセットアップを追加します。これは、流体を船や他の移動オブジェクトと相互作用させる方法を学ぶのに良いセットアップです。

    4. FLIP Configure Beach Tankは、海岸線の波を砕く典型的なセットアップです。この波はオーシャンスペルトルで生成されています。このシーンでは、飛沫と乱流を良くするためにPressure駆動の境界を使用しています。

    5. FLIP Configure Ocean Layerは、Guided Ocean Layerシェルフツールを真似ています。流体周辺のマスクは、水レイヤーの深さを調整しています。薄いレイヤーの場合、流体は大元のオーシャンスペルトに近くマッチします。make_maskノードの Band パラメータは、そのマスクの0(表面境界)から1までの遷移を制御します。adjust_domainノードの Depth パラメータは、マスクに基づいてFLIPシミュレーションと海洋シミュレーションをどれだけ上手くマッチさせるのかを制御します。

    6. FLIP Configure Wave Tankでは、FLIP Solverの4番目の入力にオーシャンスペルトルを接続して、うねって砕ける海の波を作成する方法がわかります。

  • 狭帯域のアトリビュートとフィールドのペアの制御が改良されました。FLIP Containerでアトリビュートとフィールドのペアを指定すると、それらのペアはネットワークチェーンで適切に維持されるようになりました。また、これは、パーティクルアトリビュートが滲むことも意味します。つまり、明確に色を維持することはできませんが、アトリビュートは背景グリッド上に存在している必要があるので、狭帯域が有効になるとすぐに背景グリッドにブレンドされます。

What’s new in Houdini 19.5