Houdini 20.0 流体

Narrow Band(狭帯域)

On this page

Narrow Band(狭帯域)を使ったFLIPシミュレーションの初期化

標準のFLIP流体シミュレーションは、パーティクルで完全に満たされた液体ボリュームから開始します。 FLIP Solver のNarrow Bandを有効にしてシミュレーションを開始させると、それらのパーティクルのみが除去されます。 大規模シミュレーションでは、それらのパーティクルが大量のメモリを占有してしまって、強制終了せざるを得なくなってしまいます。 そのことから、FLIPシミュレーションをNarrow Band(狭帯域)として直接初期化した方が良いでしょう。

以下のサンプルは、流体シミュレーションの開始時にNarrow Bandで初期化された流体を生成する方法について説明しています。

  1. ビューポート内でTabメニューを使ってRubber Toyを作成します。このオブジェクトを使って、Narrow Bandシミュレーションを作成します。

  2. Particle Fluids シェルフツールのFLIP Fluid from Objectをクリックして、FLIP流体に変換するオブジェクトとしてRubber Toyを選択して、FLIPシミュレーションを作成します。

  3. testgeometry_rubbertoy_object1ノードに入って、VDB from Polygons SOPを作成し、 Voxel Size に、そのFLIPシミュレーションに合ったサイズを設定します。例えば、FLIP ObjectのParticle SeparationパラメータとGrid Scaleパラメータを乗算したエクスプレッションを設定します。

  4. VDB from Polygonsの入力を Rubber Toy の出力に接続します。

  5. VDB from Polygonsの後にNull SOPノードを追加して、名前を SURFACE にします。

  6. そのNullの後にVDB Reshape SDF SOPを追加して、 OperationErode に設定し、 OffsetFLIP SolverのNarrow Bandタブの Bandwidth パラメータに合わせます。

  7. VDB Combine SOPを追加し、その1番目の入力に SURFACE Nullの出力を、2番目の入力にVDB Reshapeの出力を接続します。これは、パーティクルのばら撒き先となるNarrow Bandボリュームを生成します。

  8. VDB Combineノードの OperationSDF Difference に設定します。

  9. そのNarrow Band内にパーティクルをばら撒くために、FLIP Source SOPを作成し、その入力をVDB Combineノードの出力に接続します。

  10. Voxel SizeVDB from PolygonsノードのVoxel Sizeに合わせ、 Particle SeparationFLIP ObjectのParticle Separationに合わせ、 OversamplingFLIP SolverのSurface Oversamplingに合わせます。

  11. FLIP Source SOPの後にNull SOPを追加して、名前を PARTICLES にします。

  12. FLIP ObjectInput TypeNarrow BandSOP PathPARTICLES ノードパス、 Surface VolumeSURFACE ノードパスに設定します。

  13. FLIP SolverEnable Particle Narrow Band を有効にします。

Note

カスタムの初期Velocityフィールドが必要であれば、FLIP Object DOPVelocity Volume パラメータにVelocityボリュームパスを追加することで、それをFLIPシミュレーションに接続することができます。 上記で生成したパーティクルは、それと同じVelocityフィールドで初期化されます。

パーティクルアトリビュートとボリュームフィールドのペアリング

パーティクルアトリビュートを使って、viscositydensitytemperaturecolorなどの可変液体パラメータを設定することはできません。 その理由は、液体ボリュームからNarrow Bandよりも深くにあるパーティクルはシミュレーションステップ毎に除去されるからです。 代わりに、 Attribute/Field Pair オプションを使って、パーティクルアトリビュートデータをボリュームフィールドにバインドすることができます。

以下のサンプルは、色の付いた液体を空っぽのコンテナに注ぐシミュレーションを作成する方法について説明しています。 そのコンテナに沈んでNarrow Bandを過ぎたパーティクルはシミュレーションから除去されますが、そのカラーはボリュームフィールドで維持されます。 そのcolorアトリビュートは、このボリュームフィールドを介してシミュレーションによって移流します。

  1. Particle Fluids シェルフのFLIP Tankツールをクリックして、色の付いた液体を注ぐFLIPタンクを作成します。

  2. オブジェクトレベルからfliptank_initialノードに入って、initial_particlesノードとOUT_INITIAL_PARTICLESノードの間にAttribute Createノードを作成します。

  3. NameCdTypeVectorに設定します。

  4. AutoDopNetwork に入って、FLIP ObjectFLIP Solverの間にVector Field DOPを追加して、 Data NameCdに設定します。

  5. Enable Solver DOPを作成して、その出力をFLIP Solverの(3番目の) Volume Velocity 入力に接続します。

  6. 最初にシミュレーションされるフレームの初めにカスタムフィールドを初期化するために、Enable Solverノードの Enable Solvers パラメータに$FF==2エクスプレッションを追加します。これはデフォルトで2番目のフレームになっています。

  7. Gas Match Field DOPを作成して、その出力を Enable Solver の入力に接続します。

  8. FieldCdReference FieldsurfaceRankVectorに設定します。

  9. オブジェクトレベルに戻り、 Create シェルフのSphereツールをクリックします。その球をタンクの水位よりも上側に移動し、目的のサイズにスケールします。

  10. Particle Fluids シェルフのEmit Particle Fluidツールをクリックして、流体の放出元となるオブジェクトとして球を選択し、流体の放出先となるFLIPパーティクルを選択します。

  11. オブジェクトレベルに戻り、そのSphereオブジェクトに入って、FLIP SourceノードとNullノードの間にAttribute Create SOPノードを配置します。

  12. NameCdTypeVectorValue1,0,0,0に設定します。

  13. AutoDopNetwork内のFLIP Solverに進んで、 Enable Particle Narrow Band が有効になっていることを確認します。

  14. Attribute-Field Pairs パラメータの隣にある+をクリックして、 AttributeField の両方にCdを設定します。

Note

シミュレーション中にカラーフィールドを保存するために、fliptank_fluidオブジェクト内のDOP I/Oノード(import_fliptank)でCdFields に追加します。

流体

初心者向け

パーティクル流体(SOP)

粘度のある流体(SOP)

最適化(SOP)

FLIP構成ツール(SOP)

パーティクル流体(DOP)

粘度のある流体(DOP)

オーシャン(DOP)

最適化

  • 流体の圧縮

  • 流体シミュレーションの分散

    Distributeシェルフツールは、HQueueを使用して複数マシンのファーム上で並列処理ができるように、オブジェクトのシミュレーションネットワークをセットアップします。