Houdini 20.0 流体

グラスを満たす

On this page

グラスやプール、その他の様々な容器やタンクを満たすのは、流体シミュレーションでよくある場面です。 HoudiniのSOP FLIP流体では、オブジェクトを満たす3つの異なるモードを選択することができ、それぞれ異なる結果が得られます。 オブジェクトを満たすには、ソースジオメトリまたはボリュームからパーティクルを生成して放出する必要があります。 この目的のために、HoudiniにはFLIP Boundary SOPノードが用意されています。 クリック数を抑えたいのであれば、FLIP Source: Instant、FLIP Source: Pressure、FLIP Source: Velocityといったどれかのマクロを使用すると良いでしょう。 すべてのノードに関連するパラメータは Boundary です。 詳細は、後で手順を追ったガイドで説明します。

  1. None の挙動は、HoudiniのDOP FLIP流体ソースと非常によく似ています。

  2. Pressure は、圧力(およびオプションで追加のVelocity)に基づいてパーティクルを放出します。

  3. Velocity は、Velocityのみに基づいてパーティクルを放出します。

例えばFLIP Container SOP内に新しいパーティクルをソーシングするだけの場合は、ほとんど違いが分からないことでしょう。 オブジェクトを満たす時に実際の違いがはっきりします。

FLIPネットワーク

ネットワークセットアップは、どの Boundary メソッドでもまったく同じです。 ここでは、グラスを水で満たしますが、他のオブジェクトにも使用することができます。

  1. obj レベルで、⇥ Tabを押しgeoと入力してGeometry SOPノードを作成します。そのノードをダブルクリックして中に入ります。

  2. FLIP Container SOPを作成します。コンテナの寸法は、上流のオブジェクト(ボックスなど)から定義することができます。または、ノードの Scale 値を使うこともできます。今のところは、デフォルトのままにしておきます。

  3. FLIP Containerの Particle Separation0.015に設定します。このパラメータは、流体および衝突オブジェクトの解像度を定義します。設定が小さいほど、多くのパーティクルが生成され、流体とオブジェクトとの衝突が改善されますが、シミュレーション時間は長くなります。シーンの寸法に応じて Particle Separation を調整する必要があります。

  4. FLIP Collide SOPノードを追加して、その最初の3つの入力をFLIP Containerの呼応する出力に接続します。4番目の入力はグラス用です。

  5. FLIP Boundary SOPを追加します。再度、すべての入力を上流ノードの呼応する出力に接続します。 Boundary タイプを色々と変更していく予定なので、ここではマクロを使用するよりも、汎用的なオペレータを使用する方が都合が良いです。 Boundary はデフォルトで None が選択されています。

  6. 最後に、FLIP Solver SOPノードを追加して接続します。

グラスジオメトリと衝突

このシーンのグラスはAlembicファイルからインポートしていますが、これは必須ではありません。 重要なのは、オブジェクトが壁に挟まれていることと、漏れないように小さすぎないことです。 FLIP流体は大規模なシミュレーション向けに開発されたものなので、グラスは約2メートルという非現実的なスケールになっています。

  1. Alembicファイルをロードするために、Alembic SOPノードを作成します。

  2. File Name に移動して、 Open floating file chooser アイコンをクリックします。グラスを含むファイルを選択します。

  3. Unpack SOPを配置して、その入力をAlembicの出力に接続します。このノードは、Alembicファイルからモデルを抽出します。

  4. このUnpackノードをFLIP Collide SOPの4番目の入力に接続します。

  5. このUnpackノードの Display/Render フラグをオンにします。

  6. ビューポートに移動して、シェーディングモードアイコンを探します。それをクリックして、メニューから Wireframe を選択します。グラスが透明になり、内部の構造を見ることができます。

グラスの寸法は、FLIP流体コンテナのサイズも決定します。

  1. FLIP Containerノードを選択します。

  2. Domain セクションに移動します。リソースを節約したいので、コンテナがグラスとぴったり合うように Size を変更します。ドメインの境界とグラスの間にはいくらか隙間を残してください。このシーンでは、 Scale3,3,3です。

ソースジオメトリ

ソースはオブジェクトを介して表現されます。 オブジェクトの位置は、ソルバにパーティクルを放出する位置を伝えます。 ソースの定義には、閉じたオブジェクトやボリュームのほぼどれも使用することができます。

  1. Sphere SOPを追加して、その出力をFLIP Boundaryノードの4番目の入力に接続します。

  2. 球の Uniform Scale はグラス全体の寸法によって異なります。このセットアップでは0.3の値を使用しますが、球は自由に小さくしたり大きくしたりしてください。

  3. Center.Y 位置を設定します。FLIP Boundaryの Pressure メソッドの場合、ソースオブジェクトは最終的な水位の 下に 配置されていることが必須です。球のY位置を変更して、以下の画像のような結果にしてください。

衝突の微調整

セットアップはシミュレーションを開始できる状態になっていますが、たいていの場合で衝突を調整する必要があります。衝突に影響する要素がいくつかあります。

  • 元の衝突ジオメトリのスケールと品質が最初の要素です。非常に薄いまたは小さいオブジェクトは問題になることが多いです。

  • FLIP Containerの Particle SeparationGrid Scale は、衝突ジオメトリの品質を定義します。値が小さいほど品質が良くなります。このシーンでは、 Grid Scale1.2です。

  • デフォルトでは、FLIP Collideの Volume CollideSurface Collide オプションがオンになっています。このシーンでは Volume Collide のみ使用します。

  • FLIP Solverの Collision タブには追加の設定があります。 Collision Behavior で、 Particles Collision メニューが Particles に設定されています。この場合のように、ボリュームからのみ衝突を計算したい時は、ドロップダウンを Move Outside Collision に設定します。

Note

上記の設定と値は この シーンには最適ですが、シーンによっては別の組み合わせが必要になることもあります。

Boundary: None

Note

シミュレーションを行なう前に、プレイバーの Global Animation End Frame125に設定します。 フル範囲の240フレームはここでは必要ありません。

デフォルトのソーシングメソッドは None です。 プレイバーのアイコンをクリックして、シミュレーションを開始します。 数フレーム後、水位がそれ以上高くならないことを観察できます。 これは、DOP FLIP流体で既にご存知の挙動です。

Boundary: Velocity

FLIP Boundaryノードに移動して、 BoundaryVelocity に変更します。 このモードには、 None とまったく同じパラメータが用意されています。 フレーム1に戻り、シミュレーションを開始します。 前のシミュレーションとは異なり、水位がソースオブジェクトよりも高くなります。 フレーム125を過ぎてもシミュレーションを続けると、水がグラスの縁から溢れます。

Boundary: Pressure

このモードでは、グラスを満たすレベルを決定することができます。 ソルバが流体の静水圧(Hydrostatic Pressure)に反応し、それを新しいパーティクルのソーシングを停止する閾値として使用します。

Note

Hydrostatic Pressure には任意の値を入力することができますが、妥当な結果を得るには0.1から1の範囲の値のみを使用してください。

  1. BoundaryPressure に変更します。

  2. 圧力ベースのソーシングはひどく乱れる可能性があるので、 Hydrostatic Pressure をアニメーションさせるのが良いでしょう。

  3. フレーム1に移動して、 Hydrostatic Pressure0.1と入力します。パラメータ名をAlt + クリックしてアニメーションキーを作成します。

  4. フレーム24に移動して1.0と入力し、もう1つキーを作成します。

  5. Water Level1と入力します。このパラメータは、グラスを満たすターゲットレベルに相当し、青の線で表示されます。

  6. シミュレーションを開始します。

水位が1の高さに到達すると、ソーシングが停止することを確認できますが、これは完全には正しくありません。 グラスを満たす領域は地面に届いておらず、0.15ユニットのオフセットがあります。 Water Origin に移動して0,0.15,0と入力し、ターゲットレベルを更新してから、再度シミュレーションを行ないます。 これで、グラスを満たす高さが実質的に1ユニットになります。

流体

初心者向け

パーティクル流体(SOP)

粘度のある流体(SOP)

最適化(SOP)

FLIP構成ツール(SOP)

パーティクル流体(DOP)

粘度のある流体(DOP)

オーシャン(DOP)

最適化

  • 流体の圧縮

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

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