Houdini 20.0 Vellum

Vellum Fluidのセットアップ

On this page

Vellum Fluidソルバは、パーティクルベースの流体シミュレーションフレームワークです。 Vellum Fluidは、HoudiniのVellumダイナミクスシステムに完全に統合されています。 つまり、流体パーティクルは、粒、布、ソフトボディと相互に作用させることができます。 ヘアーと流体の相互作用は現在対応していません。 水に流される砂、雨粒に反応する布など、マルチマテリアル(複数の材質)シミュレーションを行なうことができます。 FLIP Fluidと異なり、Vellum Fluidはグリッドやドメインによる制限はありません。 パーティクルは自由に移動することができ、拘束によって繋げられています。

Density(密度)Viscosity(粘度)Surface Tension(表面張力) などの物理特性を使用して、水、油、ハチミツなど、様々なタイプのマテリアルをシミュレーションすることができます。 Surface Tension(表面張力) は、収縮したり、水滴や巻きひげを形成する流体の性質を制御します。

Vellum Fluidをセットアップするには、3つの方法があります。

  1. シェルフツールを使用して

  2. DOPネットワーク内で手動で

  3. SOPネットワーク内で手動で

それぞれの方法にメリット、デメリット、注意点があります。 結局のところ、どの方法を取るかは主に好みや経験の問題です。 特に初心者に最適なのは、Houdiniのシェルフツールです。 すべての関連ノードを使用してネットワーク全体を作成し、シミュレーションパラメータの調整をすぐに開始できるからです。 他の方法では、ノードとシーンエレメントを正確に接続するため、ある程度の作業量が必要になります。 ただし、個々のパーツがどのように連携するのかについて深く理解できるというメリットもあります。

シーンのセットアップ

以下の章では、これら3つの方法を用いた基本的なVellum Fluidシミュレーションの作成について説明します。 シーンでは球体を使用してVellum Fluidをソーシングし、水滴を作成します。 次にその水滴が引力に引き寄せられ、グラスに衝突します。どの方法でも同じ結果が生成されるようにします。

初めに、球体とグラスオブジェクトを含むシーンファイルをダウンロードして開きます。

Vellum Fluid Setup Geo

このファイル内のオブジェクトは、Vellum流体のセットアップのワーククローを学習するのに必要です。

球体はsource_geoノード内、グラスはglass_geoノード内にあります。 どちらのコンテナもジオメトリオブジェクトです。 このセットアップは現実世界の環境を想定していないことに注意してください。 デモ用のため、シーンのスケールが非常に大きくなっています。ファイルを開くと、これが表示されるはずです。

シェルフツールとDOPワークフロー

Note

すべての説明、名前、設定は、上の'シーンのセットアップ'で開いたサンプルファイルに基づいています。

Houdiniのシェルフツールに込められた意図は、事前設定されたセットアップへの素早いアクセスを提供することです。 様々な種類のネットワークや、DOPとSOPネットワーク間の接続またはデータ交換について、考える必要がありません。 ただし、シェルフツールを使っても、シミュレーションの設定やソルバ設定の調整などは行なう必要があります。 これらのツールから得られるのは、作業の開始点となる基本的なセットアップです。

このシェルフメソッドは既にDOPバージョンです。 ネットワークを手動で調べて再作成するためのテンプレートとして、シェルフセットアップを使用することができます。

まずは、ソースジオメトリとVellum Solver DOPから始めます。

  1. source_geoジオメトリノードを選択します。この中にあるSphere SOPをパーティクルのソースオブジェクトとして機能させます。

  2. Vellum シェルフを開き、 Vellum Grainsをクリックします。少しすると、新しく作成されたAutoDopNetwork DOP Networkノードの中に自動的に入ります。球体が表示されなくなっていますが、代わりにパーティクルが表示されています。 ネットワークエディタ内でLキーを押してクリーンなノードレイアウトにします。

  3. vellumsolver1ノードを選択してパラメータエディタを表示します。

  4. 流体では Substeps パラメータのデフォルト値は5です。10を設定すると精度が向上します。

  5. 流体では Constraint Iterations パラメータの値は20で十分です。

  6. Smoothing Iterations パラメータはここでは不要なので0に設定します。

シェルフツールによって、 obj レベルにAutoDopNetworkgrains_vellumジオメトリノードが作成されました。 後者のノードについては後ほど説明します。次に、流体プロパティを調整します。

  1. obj レベルで、source_geoをクリックしてノードの中に入ります。

  2. GEOノードの青い Display/Render フラグをオンにしてパーティクルを表示します。

  3. grain_constraintsノードを選択します。このノードはVellum Configure Grain SOPで、現在はGrain(粒)のソースとして設定されています。

  4. Type ドロップダウンメニューを Fluid に変更します。

  5. Particle Size パラメータでパーティクルのサイズを変えることでパーティクルの数を変更することができます。このシーンには0.01の値を使用します。

  6. Packing Density パラメータを1.5に変更すると、ソースオブジェクトのパーティクル表現が向上します。

  7. Physical Attributes セクションを開きます。

  8. Mass ドロップダウンメニューを Calculate Uniform に設定します。この操作によって、 Density パラメータのロックが解除されます。デフォルト値の1000は水を定義するので、このままにします。

グラスが衝突オブジェクトとして機能し、パーティクルと相互作用するようにします。この接続を確立するには、別のシェルフツールを使用します。

  1. obj レベルに戻り、glass_geoノードを選択します。

  2. Collisions シェルフを開き、 Static Objectをクリックします。

  3. 再度AutoDopNetworkの中に入り、ネットワークエディタ内でLを押してノードを整理します。ネットワーク内には、glass_geoを衝突オブジェクトとして取り込む新しいブランチが追加されています。

シーンをシミュレーションする準備が整いましたが、すべてのネットワークをさらに調査するとノードについてより深く知ることができます。 結果をキャッシュ化したい場合は、 obj レベルに戻り、grains_vellumの中に入ります。vellum_ioノードには、シミュレーションをディスクに保存する2つのオプションが用意されています。

  • Save to Disk を選択すると、進捗バーが開き、シミュレーション中はHoudiniのUIがロックされます。

  • Save to Disk in Background を選択すると、プロジェクトを保存するかどうか尋ねられます。シミュレーション中、UIの応答性は維持されます。

  • シミュレーションを保存しない場合は、ボタンを押します。

SOPワークフロー

SOPベースのセットアップでは、1つのGeometryオブジェクトノード内でネットワーク全体を作成することができます。 ネットワークを分けてデータを交換する必要はありません。 しかし、複雑なネットワークでは、複数に分け、シーンの様々なパーツを異なるGeometryオブジェクトノードに保存することも理にかなっています。 新しいシーンを作成し、そのファイルと基本セットアップを再読み込みします。 ソースオブジェクトから始め、流体パーティクルを作成します。

  1. obj レベルで、source_geoをダブルクリックしてノードの中に入ります。

  2. ⇥ Tabを押してTABメニューを開き、config fluidと入力します。唯一の結果であるVellum Configure Fluidを選択します。このノードはVellum Configure Grain SOPですが、 Type ドロップダウンメニューは既に Fluid に設定されています。

  3. Particle Size パラメータを0.01に設定し、より多くのパーティクルが得られるようにします。

  4. Packing Density1.5にすると、ソースオブジェクトのパーティクル表現が向上します。

  5. sphere1ノードの出力をvellumfluid11番目 の入力に接続します。

  6. vellumfluid1ノードの青い Display/Render フラグをオンにしてパーティクルを表示します。

次の手順では、Vellum Solver SOPでシミュレーション設定を決定します。

  1. ⇥ Tabを押してsolverと入力します。リストからVellum Solverを選択します。

  2. ソルバの Substeps パラメータを10に設定します。これはVellum Fluidの推奨値です。

  3. Constraint Iterations パラメータを20に下げ、パーティクル拘束をやや緩やかにします。

  4. Smoothing Iterations パラメータは流体には不要なので0に設定します。

たいていの場合では次の手順としては、vellumfluid1の3つの出力をvellumsolver1のそれに呼応する入力に接続します。 今回のセットアップでは、それとは異なる手順を実行します。

  1. ⇥ Tabを押します。nullと入力し、2個のNull SOPノードを作成します。

  2. 1つのNullの名前をGEO、もう1つの名前をCONに変更します。

  3. GEOノードの入力を、vellumfluid11番目 の出力( Geometry 出力)に接続します。

  4. CONノードの入力を、vellumfluid12番目 の出力( Constraints 出力)に接続します。

  5. vellumfluid1の3番目の出力を、vellumsolver1の3番目の入力に接続します。

シェルフツールとDOPワークフローの章を完了した方は、Vellum Source DOPを見かけたと思います。 そこでは、Vellum Source DOPがパーティクル、拘束、ソルバ間の接続を確立していました。 一方、ここでは、Vellum Source DOPによって、 Emission Type パラメータに素早くアクセスできるようにします。 このパラメータを使用することで、パーティクルのソーシングを1回のみ、フレーム毎、サブステップ毎のどちらで実行するのかを選択することができます。 vellumfluid1ノードとvellumsolver1ノードの間を直接接続した場合、ソルバのロックを解除してそのネットワークの奥深くに入らないと、 Emission Type にアクセスすることができません。

Note

Emission Type パラメータおよびソーシングをオン/オフにする方法の詳細については、放出メソッドを参照してください。

  1. vellumsolver1をダブルクリックしてノードの中に入ります。

  2. ⇥ Tabを押し、Vellum Source DOPを追加します。

  3. vellumsource1ノードの出力をSOURCEの入力に接続します。

  4. そのソースノードを選択してパラメータエディタを開きます。

  5. Source ▸ SOP Path パラメータに/obj/source_geo/GEOと入力します。

  6. Source ▸ Constraint SOP Path パラメータに/obj/source_geo/CONと入力します。

  7. obj レベルに戻ります。

Note

vellumsolver1ノードの最初の2つの入力は必須ですが、このようなセットアップでも機能します。 必要な情報はソルバ内部のSOURCEから取得されます。 Vellum Source DOPは、パーティクルをフレーム毎またはサブステップ毎に放出したいなど、 Emission Type パラメータにアクセスしたい場合にのみ必要です。 連続的な放出のないシーンでは、Vellum Configure Grain SOPとVellum Solver SOPを直接接続して構いません。

次に、パーティクルの衝突オブジェクトとしてグラスを接続します。 シェルフツールワークフローではStatic Solverを使用しました。 ここでは、直接接続という手っ取り早い方法を用います。

  1. ⇥ Tabを押し、Merge SOPノードとObject Merge SOPノードを追加します。

  2. merge1を、vellumfluid1の3番目の出力とvellumsolver1の3番目の入力の間に配置します。

  3. object_merge1ノードの出力をmerge1に接続します。

  4. object_merge1を選択し、 Object 1 パラメータを探します。そこで、/obj/glass_geo/GEOと入力し、グラスのジオメトリをglass_geoからインポートします。接続がアクティブになると、グラスが青いワイヤフレーム表現で表示されます。

Note

より経験豊富なユーザは、Vellum Source DOPの SOP PathConstraint SOP Path パラメータにopinputpathエクスプレッションを使用できるのではと思うかもしれません。 その方法も可能ですが、パーティクルジオメトリがソルバ入力とVellum Source DOPを通して2回接続されるため、パーティクル数が変わってしまいます。

衝突オブジェクト

衝突オブジェクトは、Vellum Solver SOPの3番目の入力( Collision Geometry )に直接接続することができます。 Vellum Fluidは、ジオメトリを使った手法を採用しているため、オブジェクトはポリゴンでなければなりません。 必要に応じて、Convert SOPを追加して Convert ToPolygon に設定します。

また、衝突ジオメトリをVellum Configure Grain SOPの3番目の入力( Collisions )に接続することもできます。 一度接続すると、ビューポート内にそのオブジェクトが青いワイヤーフレーム表現で表示されます。 このワイヤーフレームを非表示にしたい場合は、Vellum Solver SOPのパラメータエディタで Visualize ▸ Show Collision をオフにします。

衝突ジオメトリを接続するもう1つの方法は、シェルフツールを使用することです。 この方法は、DOPセットアップでのみ使用可能で、ツールを実行する前にVellum Fluidネットワークが存在していなくてはなりません。 使用したいオブジェクトを選択します。 次に、 Collisions シェルフに移動し、前述したように Static Objectをクリックします。

SOPキャッシュ

シェルフツールのネットワークでは、Vellum I/O SOPを使用してシミュレーション結果をディスクにキャッシュ化する準備が整っています。 手動で作成したネットワークでは、このノードを追加する必要があります。 シミュレーションを保存しない場合は、ボタンを押します。

  1. Vellum I/O SOPを追加し、その入力をvellumsolver1の出力に接続します。

  2. Save to Disk (ロックされたUI)または Save to Disk in Background (応答性のあるUI)を押して、シミュレーションデータをキャッシュ化します。

Vellum

ソフトボディ

流体

拘束

コリジョン

その他

上級