Houdini 20.0 Vellum

放出の方向

On this page

デフォルトでは、Vellum ConstraintsノードとVellum Solverノードには、放出の正確な方向を決定する専用パラメータはありません。 パーティクルは、ソルバに組み込まれている重力と風(アクティブな場合)にのみ追従します。 例えば、パーティクルをソースオブジェクトの法線方向に放出したい、または、流体を上向き60度で流したいとしましょう。 このようなタスクには、作成時にパーティクルの初期方向を設定するカスタム関数が必要です。

パーティクルの軌道を変更したい場合は、POPフォースを追加すると良いでしょう。 Houdiniには事前設定されたPOPノードが用意されていますが、POP VOP DOPを介してカスタムフォースを組み立てることもできます。 最もよく使用するフォースの1つがPOP Drag DOPです。 このフォースは空気摩擦を模倣して、素早く動く流体を減速させながら、パーティクルが離れないようにします。 もう1つの非常に便利なノードはPOP Attract DOPです。 このノードでは、パーティクルをゴール位置の方へ誘導させることができます。 POP VOPフォースの典型的な例は、Curl Noise VOPまたはTurbulent Noise VOPで、パーティクルをランダムに変位させて面白い構造を作成することができます。

初期方向

既に冒頭の方で一般的な2つの問題を挙げましたが、オブジェクトの法線方向にパーティクルを放出したり、放出する特定の角度を指定する方法については明記していませんでした。 どちらの場合も、鍵となるのは速度です。 やりたいのは、パーティクルが特定の方向へ移動するようにパーティクルのVelocityを変更することです。 以下の画像では、基本的なSphere SOPの法線が確認できます。 考え方としては、これらの法線をVelocityに変換することで、法線をパーティクルの“ガイド”として使用します。 法線とVelocityはXYZ成分で構成され、それらの成分が合わさってベクトルになります。 以下の例のセットアップでは、パーティクルを球の表面上にランダムにばら撒いてから、法線方向に加速させます。

基本的な流体のセットアップ

Note

このサンプルシーンはSOPベースです。 DOPネットワークやシェルフツールを用いたい場合は、Vellum Fluidのセットアップページを参照してください。 Vellum Fluidをセットアップする様々な方法について詳しく説明しています。

  1. obj レベルで、⇥ Tabを押してTABメニューを呼び出します。そこからGeometry OBJを作成し、ダブルクリックしてそのノードの中に入ります。

  2. Sphere SOP(Create)を作成します。

  3. Uniform Scale0.5に設定します。

  4. Rows52Columns96に上げて、サーフェスを滑らかにします。

  5. Display Normals アイコンをクリックして、法線を表示します。法線が長すぎる場合は、ビューポート上にマウスカーソルを置いてDを押しますこのホットキーは Display Options を開きます。 Guides タブをクリックし、 Scale Normal0.05に設定します。

  6. Scatter SOPを追加し、その入力をSphere SOPの出力に接続します。

  7. Scatter SOPで、 Force Total Count10000に上げ、十分なパーティクルが得られるようにします。

次に、Vellum Fluidネットワークを作成します。

  1. Vellum Configure Fluid SOPを追加します。

  2. その 1番目 の入力をScatter SOPの出力に接続して、パーティクルを転送します。

  3. Create Points from Volume をオフにして、パーティクルが球の表面を覆うようにします。

  4. Particle Size0.005かそれ以下に設定し、個々の流体パーティクルを表示します。

  5. 2個のNull SOPを追加し、それらをVellum Configure Fluid SOPの 1番目 の出力( Geometry )と 2番目 の出力( Constraints )に接続します。

  6. 1番目の出力のNullをGEO(ジオメトリ)に、2番目の出力のNullをCON(拘束)に変更します。

  7. Vellum Solver SOPを追加します。

  8. Vellum Configure Fluid SOPの3番目の出力をソルバの 3番目 の入力( Collision Geometry )に接続します。

残り2つの入力は必須ですが、ここでは空っぽのままにしていることに注意してください。 後でソルバの中に入って別のノードを使ってこの接続を確立します。 ここでは、すべての法線がマイナスZ方向に向いています。現在表示されているものは、パーティクル法線です。

  1. Vellum Solver SOPをダブルクリックして、中に入ります。

  2. TABメニューから、Vellum Source DOPを追加します。

  3. それをSOURCE Output DOPに接続します。

  4. Vellum Source DOPのパラメータエディタで、 SOP Path パラメータに/obj/geo1/GEOと入力します。

  5. Constraint SOP Path パラメータに/obj/geo1/CONと入力します。ここで、ジオメトリと拘束がソルバに接続されます。このように回り道をする理由は、 Emission Type パラメータにアクセスするためです。

  6. Emission Type ドロップダウンから、 Each Substep を選択します。

  7. geo1 レベルに戻り、Vellum Solver SOPを選択してパラメータエディタを開きます。

  8. Solver タブで、 Substeps5(流体の標準値)に上げます。

  9. Constraint Iterations20に下げ、流体があまり固くならないようにします。

  10. 流体には Smoothing Iterations は必要ないため、0に設定します。

  11. Forces タブを開き、 Gravity0,0,0に変更します。

法線の取り込み

シミュレーションすると、ほんのわずかなパーティクルだけがランダムに動いています。 パーティクルをこの球の法線に追従させるには、ノードがもう2個必要です。

  1. geo1 レベルに戻り、TABメニューを開きます。2個のPoint Wrangle SOPsを追加します。

  2. 1つ目のWrangleをSphereとScatterの間に配置して接続します。

  3. VEXpression フィールドで、@N = @N;と入力します(末尾のセミコロンも含めます)。このVEXpressionは、球の法線を取得し、それを新しい@N変数に格納します。@Nは、ポジションの@Pと同じく標準ジオメトリアトリビュートです。Houdiniは、標準の変数とそのデータタイプを認識します。例えば、法線はベクトルです。ベクトルは、@N.x@N.y@N.zを使用して成分に分けることができます。これが面白いのは、例えば法線のY値のみを使用したい場合です。独自の式または固定値を使ってXとZが置き換えられます。

  4. Vellum Configure Fluid SOPの青色の Display/Render フラグをオンにします。

これで、パーティクルの法線が球の外側を向くようになりました。オブジェクトの法線がパーティクルに転送されています。

法線からVelocityを定義

この手順では、法線を使用してVelocityを定義します。 パーティクル生成時にそのパーティクルの速度がどのくらいなのか分からないので、係数を使用して速度を制御できるようにするのがお勧めです。

  1. 2つ目のPoint WrangleをScatter SOPとVellum Configure Fluid SOPの間に配置して接続します。

  2. VEXpression フィールドで、v@v = set(normalize(@N) * chf("speed_multiplier"));と入力します。念のためにいいますね。セミコロンを忘れないでください!

このエクスプレッションは、Velocityベクトルv@vを取り込みます。 @v@Nのようなもう1つの標準アトリビュートなので、名前を変更してはいけません。 setコマンドは、Velocityベクトルを設定します。 @Nは既にベクトルなので、XYZのベクトル成分を手動で定義する必要はありません。 normalize関数は、法線を0から1の間の値に再計算します。 この工程はもはやスタンダードと言って良いほどで、予想通りの結果が返るようになります。 最後に、speed_multiplierカスタムパラメータを取り込みます。 この値を使用して、パーティクルの初期速度をスケールすることができます。

  1. アイコンをクリックして、カスタムの Speed Multiplier パラメータを表示します。値は0.2と入力します。

  2. Vellum Solver SOPの Display/Render フラグをオンにし、をクリックしてシミュレーションします。

パーティクルが球の法線に追従し、 Speed Multiplier カスタムパラメータを使用してその速度を遅くしたり速くしたりできます。

法線は、付随するポリゴンに対して垂直ですが、さらにVEXpressionを足して法線をランダムにすることができます。 これには無限の可能性があり、様々なVEXpression関数を組み合わせることで面白い結果を得られます。

  • 1つ目のAttribute Wrangle SOPを選択します。 VEXpression フィールドで、@N = curlnoise(@N);の行を追加し、捻れた法線フィールドを作成します。下図に示すように、球状のオブジェクトにはcurlnoise関数がうまく機能するようです。

カスタムの放出方向

法線のメソッドは、グリッドのような2Dエミッターにも使用することができます。 この方法では、グリッドを回転させるだけでパーティクルを特定の方向に放つことができます。 滑らかなパーティクルのストリームにするには、Vellum Solver SOPの中に入り、vellumsource1ノードの Emission TypeEach Substep に変更します。 放出の方向を反対にするには、v@normals = -@N;でオブジェクトの法線をマイナスにします。 下図のグリッドの Rotate 値は、45,0,30です。

もう1つの方法は、カスタムの初期Velocityを定義することです。 ここでは法線は不要なので、2個のWrangleをまだ削除していなければ、削除しても構いません。

  1. 新しいPoint Wrangle SOPを追加して、Scatter SOPとVellum Configure Fluid SOPの間に配置します。

  2. パーティクルソースとしてGrid SOPがある場合、それを小さいSphere SOPで置き換えます。

  3. Velocityはベクトルであり、XYZ成分で構成されています。完全なベクトルにするには、3つの値を定義する必要があります。 VEXpression フィールドで、まずv@v = set();と入力します。このエクスプレッションは、Houdiniに初期Velocityを設定するよう指示するものです。実際のXYZ値は、括弧内に記述します。

  4. 任意の有効な関数を使用できます。関数は、静的、時間依存、またはその両方のメソッドの組み合わせです。完全なVelocityベクトルは、v@v = chf("speed_multiplier")*set(sin(@Frame/4),0,cos(@Frame/4));のようなエクスプレションになります。

フォースを適用する

最初に決めるべきことは、DOPネットワークとSOPネットワークのどちらを使用するかです。 どちらのネットワークタイプでもPOPフォースでパーティクルを駆動させることができますが、それらのフォースを追加する場所が異なります。

  • Vellum Solver SOPの Force タブに、 GravityWind パラメータがあります。SOPネットワークで、Vellum Solver SOPをダブルクリックして中に入ります。このノード内にはFORCEという名前のOutput DOPがあります。ここに、新しいフォースを接続します。

  • Vellum Solver DOPには Force タブがなく、標準の重力でさえ個別に下流ノードを通して導入する必要があります。これは、DOPネットワークのすべてのフォースに当てはまります。

この例では、螺旋に追従させる方法を説明します。 Vellumでフォースを使用するためのサンプルネットワークと考えてください。シーンはSOPセットアップを使用します。 Vellum Grain shelf toolなどを使用して作成されるDOPネットワークでは、ソルバの前か後のAutoDopNetwork DOP内にフォースを追加します。

パーティクルの経路

変形させた螺旋から流体の経路を作成します。

  1. obj レベルで、⇥ Tabを押してTABメニューを呼び出し、Geometry OBJを作成します。そのノードをダブルクリックして中に入ります。

  2. Helix SOPを作成します。

  3. Height5に変更します。

  4. Turns1.8です。これは、カーブの Height に対する Turns の数です。

  5. Radius セクションで、 Start Radius0.25にして螺旋を細くします。

  6. Construction に移動して、 Start Angle120度に上げて螺旋の開始点をずらします。

  7. Divisions per Turn100にして、カーブを滑らかにします。

もっと乱れるように螺旋を変形させます。

  1. Attribute Noise SOPを追加し、その入力を上流のSpiralノードに接続します。

  2. General セクションの Attribute Names で、Cdを削除して(positionを意味する)Pを入力します。

  3. Noise Value セクションの Amplitude0.3に変更し、螺旋を滑らかにして、極端な変位がないようにします。

  4. Noise PatternElement Size0.7に下げると、構造がもっと細かくなります。

螺旋がシーンの原点から開始するようにトランスフォームさせます。

  1. Transform SOPを追加します。その入力をAttribute Noise SOPの出力に接続します。

  2. Translate-0.1,0.02,0に設定します。

  3. Rotate0,45,-90度に設定して螺旋を傾け、X軸と揃えます。

Vellum Fluidネットワーク

Note

Vellum Fluidネットワークについては何度か説明しています(上記の基本的な流体のセットアップの章など)。このシーンでは、ワークフローの説明は簡略化し、最も重要な手順について説明します。

  1. Sphere SOP(どのタイプでも可)を作成し、 Uniform Scale0.2に設定します。螺旋の開始点がその球内に入っていることを確認します。

  2. Vellum Configure Fluid SOPを追加し、 1番目 の入力をSphere SOPの出力に接続します。

  3. Particle Size0.007に設定し、十分なパーティクルが得られるようにします。

  4. Physical Attributes セクションを展開し、 Surface Tension をオンにして25と入力します。

  5. 2個のNull SOPを追加して、それらの名前をGEOCONに変更します。

  6. GEOをVellum Configure Fluid SOPの 1番目 の出力に、CON2番目 の出力に接続します。

次の手順では、ソルバを設定します。

  1. Vellum Solver SOPを配置します。その 3番目 の入力を、Vellum Configure Fluid SOPの 3番目 の出力に接続します。

  2. Solver ▸ Time Scale0.25に変更し、シミュレーションの速度を4分の1にします。

  3. 後の3つのパラメータ( SubstepsConstraint IterationsSmoothing Iterations )には、それぞれ流体向けの標準値である5200を設定します。

  4. Forces タブを開き、 Gravity0,0,0に設定します。

  5. Vellum Solver SOPをダブルクリックして中に入ります。

  6. Vellum Source DOPを追加し、それをSOURCEノードに接続します。

  7. SOP Path パラメータに/obj/geo1/GEOと入力します。

  8. Constraint SOP Path パラメータに/obj/geo1/CONと入力します。これで、パーティクルと拘束がソルバに接続されました。

  9. Emission Type ドロップダウンメニューから、 Each Substep を選択します。

  10. Activation パラメータに$FF<50というエクスプレッションを入力します。現行フレームがフレーム50手前までパーティクルがソーシングされます。フレーム50以降ではソースは非アクティブになります。

フォース

パーティクルが螺旋に追従し巻き付くようにします。 滴も必要ですが、流体の主体には十分な乱流を加えて良い感じのルックを作成します。まずはカーブフォースから始めます。

  1. Vellum Solver SOPの内部で、POP Curve Force DOPを追加し、それをFORCEノードに接続します。

  2. SOP Path で、/obj/geo1/transform1と入力します。これは螺旋ネットワークの最後のノードです。

  3. Max Influence Radius0.4です。値を変更すると、赤いチューブが細くなるのが確認できます。チューブは、パーティクルがカーブフォースの影響を受ける領域をマークします。

  4. Follow Scale4です。これは、パーティクルをカーブ沿いに移動させるフォースです。

  5. Suction Scale12にして、カーブの方に流体を引き寄せます。

  6. Orbit Scale3にして、カーブを軸とする周回フォースを生成します。

これらのフォースのバランスをとるのがなかなか難しいことがあります。 1つのフォースを上げたら、効果が過大にならないよう、通常は、別のパラメータを下げる必要があります。 パーティクルが速すぎる場合は、パラメータを下げてみましょう。

  1. POP Drag DOPを追加し、カーブフォースとFORCEの間に配置します。

  2. Air Resistance はパーティクルを減速させます。ここでは0.62と入力します。

シミュレーションすると、流体は螺旋に追従しますが、乱流がほとんどないため、すべてが滑らかに見えます。もっとランダムにするために以下の処理を加えます。

  1. POP Force DOPを追加し、カーブフォースとDrag(抵抗)フォースの間に配置します。

  2. Noise ▸ Amplitude で、17と入力します。ノイズフィールドにより流体が引き裂かれ、滴が生成されます。

この最終シミュレーションを開始して、流体がカーブに巻き付くのを確認します。 細い領域と太い領域があり、パーティクルは螺旋のターン時に減速し、滴が見えます。 およそ120フレーム後に、最初のパーティクルが螺旋から離れ始めます。シミュレーションを150フレームに制限しても構いません。

Vellum

ソフトボディ

流体

拘束

コリジョン

その他

上級