On this page |
Vellum Fluidソルバは、パーティクルベースの流体シミュレーションフレームワークです。 Vellum Fluidは、HoudiniのVellumダイナミクスシステムに完全に統合されています。 つまり、流体パーティクルは、粒、布、ソフトボディと相互に作用させることができます。 ヘアーと流体の相互作用は現在対応していません。 水に流される砂、雨粒に反応する布など、マルチマテリアル(複数の材質)シミュレーションを行なうことができます。 FLIP Fluidと異なり、Vellum Fluidはグリッドやドメインによる制限はありません。 パーティクルは自由に移動することができ、拘束によって繋げられています。
Density(密度) 、 Viscosity(粘度) 、 Surface Tension(表面張力) などの物理特性を使用して、水、油、ハチミツなど、様々なタイプのマテリアルをシミュレーションすることができます。 Surface Tension(表面張力) は、収縮したり、水滴や巻きひげを形成する流体の性質を制御します。
Vellum Fluidをセットアップするには、3つの方法があります。
-
シェルフツールを使用して
-
DOPネットワーク内で手動で
-
SOPネットワーク内で手動で
それぞれの方法にメリット、デメリット、注意点があります。 結局のところ、どの方法を取るかは主に好みや経験の問題です。 特に初心者に最適なのは、Houdiniのシェルフツールです。 すべての関連ノードを使用してネットワーク全体を作成し、シミュレーションパラメータの調整をすぐに開始できるからです。 他の方法では、ノードとシーンエレメントを正確に接続するため、ある程度の作業量が必要になります。 ただし、個々のパーツがどのように連携するのかについて深く理解できるというメリットもあります。
シーンのセットアップ ¶
以下の章では、これら3つの方法を用いた基本的なVellum Fluidシミュレーションの作成について説明します。 シーンでは球体を使用してVellum Fluidをソーシングし、水滴を作成します。 次にその水滴が引力に引き寄せられ、グラスに衝突します。どの方法でも同じ結果が生成されるようにします。
初めに、球体とグラスオブジェクトを含むシーンファイルをダウンロードして開きます。
このファイル内のオブジェクトは、Vellum流体のセットアップのワーククローを学習するのに必要です。
球体はsource_geo
ノード内、グラスはglass_geo
ノード内にあります。
どちらのコンテナもジオメトリオブジェクトです。
このセットアップは現実世界の環境を想定していないことに注意してください。
デモ用のため、シーンのスケールが非常に大きくなっています。ファイルを開くと、これが表示されるはずです。
シェルフツールとDOPワークフロー ¶
Note
すべての説明、名前、設定は、上の'シーンのセットアップ'で開いたサンプルファイルに基づいています。
Houdiniのシェルフツールに込められた意図は、事前設定されたセットアップへの素早いアクセスを提供することです。 様々な種類のネットワークや、DOPとSOPネットワーク間の接続またはデータ交換について、考える必要がありません。 ただし、シェルフツールを使っても、シミュレーションの設定やソルバ設定の調整などは行なう必要があります。 これらのツールから得られるのは、作業の開始点となる基本的なセットアップです。
このシェルフメソッドは既にDOPバージョンです。 ネットワークを手動で調べて再作成するためのテンプレートとして、シェルフセットアップを使用することができます。
まずは、ソースジオメトリとVellum Solver DOPから始めます。
-
source_geo
ジオメトリノードを選択します。この中にあるSphere SOPをパーティクルのソースオブジェクトとして機能させます。 -
Vellum シェルフを開き、 Vellum Grainsをクリックします。少しすると、新しく作成された
AutoDopNetwork
DOP Networkノードの中に自動的に入ります。球体が表示されなくなっていますが、代わりにパーティクルが表示されています。 ネットワークエディタ内でLキーを押してクリーンなノードレイアウトにします。 -
vellumsolver1
ノードを選択してパラメータエディタを表示します。 -
流体では Substeps パラメータのデフォルト値は
5
です。10
を設定すると精度が向上します。 -
流体では Constraint Iterations パラメータの値は
20
で十分です。 -
Smoothing Iterations パラメータはここでは不要なので
0
に設定します。
シェルフツールによって、 obj レベルにAutoDopNetwork
とgrains_vellum
ジオメトリノードが作成されました。
後者のノードについては後ほど説明します。次に、流体プロパティを調整します。
-
obj レベルで、
source_geo
をクリックしてノードの中に入ります。 -
GEO
ノードの青い Display/Render フラグをオンにしてパーティクルを表示します。 -
grain_constraints
ノードを選択します。このノードはVellum Configure Grain SOPで、現在はGrain(粒)のソースとして設定されています。 -
Type ドロップダウンメニューを Fluid に変更します。
-
Particle Size パラメータでパーティクルのサイズを変えることでパーティクルの数を変更することができます。このシーンには
0.01
の値を使用します。 -
Packing Density パラメータを
1.5
に変更すると、ソースオブジェクトのパーティクル表現が向上します。 -
Physical Attributes セクションを開きます。
-
Mass ドロップダウンメニューを Calculate Uniform に設定します。この操作によって、 Density パラメータのロックが解除されます。デフォルト値の
1000
は水を定義するので、このままにします。
グラスが衝突オブジェクトとして機能し、パーティクルと相互作用するようにします。この接続を確立するには、別のシェルフツールを使用します。
-
obj レベルに戻り、
glass_geo
ノードを選択します。 -
Collisions シェルフを開き、 Static Objectをクリックします。
-
再度
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オブジェクトノードに保存することも理にかなっています。 新しいシーンを作成し、そのファイルと基本セットアップを再読み込みします。 ソースオブジェクトから始め、流体パーティクルを作成します。
-
obj レベルで、
source_geo
をダブルクリックしてノードの中に入ります。 -
⇥ Tabを押してTABメニューを開き、
config fluid
と入力します。唯一の結果であるVellum Configure Fluid
を選択します。このノードはVellum Configure Grain SOPですが、 Type ドロップダウンメニューは既に Fluid に設定されています。 -
Particle Size パラメータを
0.01
に設定し、より多くのパーティクルが得られるようにします。 -
Packing Density を
1.5
にすると、ソースオブジェクトのパーティクル表現が向上します。 -
sphere1
ノードの出力をvellumfluid1
の 1番目 の入力に接続します。 -
vellumfluid1
ノードの青い Display/Render フラグをオンにしてパーティクルを表示します。
次の手順では、Vellum Solver SOPでシミュレーション設定を決定します。
-
⇥ Tabを押して
solver
と入力します。リストからVellum Solver
を選択します。 -
ソルバの Substeps パラメータを
10
に設定します。これはVellum Fluidの推奨値です。 -
Constraint Iterations パラメータを
20
に下げ、パーティクル拘束をやや緩やかにします。 -
Smoothing Iterations パラメータは流体には不要なので
0
に設定します。
たいていの場合では次の手順としては、vellumfluid1
の3つの出力をvellumsolver1
のそれに呼応する入力に接続します。
今回のセットアップでは、それとは異なる手順を実行します。
-
⇥ Tabを押します。
null
と入力し、2個のNull SOPノードを作成します。 -
1つのNullの名前を
GEO
、もう1つの名前をCON
に変更します。 -
GEO
ノードの入力を、vellumfluid1
の 1番目 の出力( Geometry 出力)に接続します。 -
CON
ノードの入力を、vellumfluid1
の 2番目 の出力( Constraints 出力)に接続します。 -
vellumfluid1
の3番目の出力を、vellumsolver1
の3番目の入力に接続します。
シェルフツールとDOPワークフローの章を完了した方は、Vellum Source DOPを見かけたと思います。
そこでは、Vellum Source DOPがパーティクル、拘束、ソルバ間の接続を確立していました。
一方、ここでは、Vellum Source DOPによって、 Emission Type パラメータに素早くアクセスできるようにします。
このパラメータを使用することで、パーティクルのソーシングを1回のみ、フレーム毎、サブステップ毎のどちらで実行するのかを選択することができます。
vellumfluid1
ノードとvellumsolver1
ノードの間を直接接続した場合、ソルバのロックを解除してそのネットワークの奥深くに入らないと、 Emission Type にアクセスすることができません。
Note
Emission Type パラメータおよびソーシングをオン/オフにする方法の詳細については、放出メソッドを参照してください。
-
vellumsolver1
をダブルクリックしてノードの中に入ります。 -
⇥ Tabを押し、Vellum Source DOPを追加します。
-
vellumsource1
ノードの出力をSOURCE
の入力に接続します。 -
そのソースノードを選択してパラメータエディタを開きます。
-
Source ▸ SOP Path パラメータに
/obj/source_geo/GEO
と入力します。 -
Source ▸ Constraint SOP Path パラメータに
/obj/source_geo/CON
と入力します。 -
obj レベルに戻ります。
Note
vellumsolver1
ノードの最初の2つの入力は必須ですが、このようなセットアップでも機能します。
必要な情報はソルバ内部のSOURCE
から取得されます。
Vellum Source DOPは、パーティクルをフレーム毎またはサブステップ毎に放出したいなど、 Emission Type パラメータにアクセスしたい場合にのみ必要です。
連続的な放出のないシーンでは、Vellum Configure Grain SOPとVellum Solver SOPを直接接続して構いません。
次に、パーティクルの衝突オブジェクトとしてグラスを接続します。 シェルフツールワークフローではStatic Solverを使用しました。 ここでは、直接接続という手っ取り早い方法を用います。
-
⇥ Tabを押し、Merge SOPノードとObject Merge SOPノードを追加します。
-
merge1
を、vellumfluid1
の3番目の出力とvellumsolver1
の3番目の入力の間に配置します。 -
object_merge1
ノードの出力をmerge1
に接続します。 -
object_merge1
を選択し、 Object 1 パラメータを探します。そこで、/obj/glass_geo/GEO
と入力し、グラスのジオメトリをglass_geo
からインポートします。接続がアクティブになると、グラスが青いワイヤフレーム表現で表示されます。
Note
より経験豊富なユーザは、Vellum Source DOPの SOP Path と Constraint SOP Path パラメータにopinputpath
エクスプレッションを使用できるのではと思うかもしれません。
その方法も可能ですが、パーティクルジオメトリがソルバ入力とVellum Source DOPを通して2回接続されるため、パーティクル数が変わってしまいます。
衝突オブジェクト ¶
衝突オブジェクトは、Vellum Solver SOPの3番目の入力( Collision Geometry )に直接接続することができます。 Vellum Fluidは、ジオメトリを使った手法を採用しているため、オブジェクトはポリゴンでなければなりません。 必要に応じて、Convert SOPを追加して Convert To を Polygon に設定します。
また、衝突ジオメトリをVellum Configure Grain SOPの3番目の入力( Collisions )に接続することもできます。 一度接続すると、ビューポート内にそのオブジェクトが青いワイヤーフレーム表現で表示されます。 このワイヤーフレームを非表示にしたい場合は、Vellum Solver SOPのパラメータエディタで Visualize ▸ Show Collision をオフにします。
衝突ジオメトリを接続するもう1つの方法は、シェルフツールを使用することです。 この方法は、DOPセットアップでのみ使用可能で、ツールを実行する前にVellum Fluidネットワークが存在していなくてはなりません。 使用したいオブジェクトを選択します。 次に、 Collisions シェルフに移動し、前述したように Static Objectをクリックします。
SOPキャッシュ ¶
シェルフツールのネットワークでは、Vellum I/O SOPを使用してシミュレーション結果をディスクにキャッシュ化する準備が整っています。 手動で作成したネットワークでは、このノードを追加する必要があります。 シミュレーションを保存しない場合は、ボタンを押します。
-
Vellum I/O SOPを追加し、その入力を
vellumsolver1
の出力に接続します。 -
Save to Disk (ロックされたUI)または Save to Disk in Background (応答性のあるUI)を押して、シミュレーションデータをキャッシュ化します。