Houdini 19.5 Vellum

放出メソッド

On this page

デフォルトでは、Vellum SolverはVellumオブジェクトとVellum拘束を開始フレームでのみソーシングします。 蛇口から水を放出してグラスを満たしたいとしましょう。 この場合、特定のフレームで止めることが可能な途切れないパーティクルの流れが必要になります。 他には、位置などのアトリビュートを使って放出を発動させるメソッドもあります。 さらには、散乱したポイントなど、別のソースからパーティクルを作成したいことでしょう。 以下の章では、様々な放出とソーシングのワークフローを説明します。

Note

ここで説明している方法は、Vellum Gainsでも有効です。

Emission Typeパラメータ

放出メソッドは、Vellum Source DOPノードを介して制御します。 Vellum Source DOPの場所は、シミュレーションネットワークの作成方法(DOP/シェルフツールまたはSOP)で異なります。 Emission Type パラメータには4つのオプションが用意されています。

  1. Only Once 。パーティクルは1フレームだけで生成され、その後ソースオブジェクトから放出されます。

  2. Each Frame 。フレーム範囲全体で、新しいパーティクルが連続して生成されます。このタイプではサブステップが考慮されないため、途切れが発生してしまう可能性があります(特に、パーティクルの速度が速い場合がそうです)。

  3. Each Substep 。ソーシングはVellum Solverの Substeps の数によって決まり、フレーム範囲全体で実行されます。Vellum Fluidsには10、Vellum Grainsには5が最も使われる値です。サブステップ数を増やすほど、より多くのパーティクルが放出され、より自然な感じの放出になります。このタイプでは、シミュレーション時間とRAM使用量が増えてしまうことに注意してください。20以上の非常に高いサブステップは、Vellum Fluids/Vellum Grainsがもっと堅くなるので避けましょう。ソルバの Constraint Iterations は流体の堅さに影響し、サブステップ毎に適用されます。

  4. Instance on PointsEach Frame と同様に、DOPがアクティブである限りフレーム毎にジオメトリが追加されます。ただし、orientNといったアトリビュート付きのポイントジオメトリが作成されます。ジオメトリとアトリビュートはインスタンス化に使用し、Copy to Points SOPの動作と合わせることができます。

DOPネットワークのEmission Type

Vellum Grainsシェルフツールでセットアップを作成した場合など、 DOPベース のネットワークは、AutoDopNetworkノードをダブルクリックして開きます。そこで、Vellum Source DOPを選択します。パラメータエディタで、 Emission Type を探します。

SOPネットワークのEmission Type

SOPベース のネットワークでは、Vellum Source DOPはロックがかかったVellum Solver SOP内部の深いところにあります。 Vellum Source DOPに直接アクセスできるようにするには、いくつかの手順が必要です。

  1. Vellum Solver SOPの最初の2つの入力が別のノードに接続されている場合は、それらの接続を解除します。ネットワークエディタで、Yキーを押したままにします。するとカーソルがハサミに変わり、接続を解除することができます。

  2. Vellum Configure Grain SOPの3番目の出力はVellum Solver SOPの3番目の入力に接続されたままにします。

  3. ⇥ Tabを押してTABメニューを呼び出し、nullと入力します。2個のNull SOPを作成します。

  4. 1つのNullの名前をGEOに変更し、それをVellum Configure Grain SOP1番目 の出力( Geometry )に接続します。

  5. もう1つのNullの名前をCONに変更し、それをVellum Configure Grain SOP2番目 の出力( Constraints )に接続します。

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

  7. Vellum Source DOPを追加し、それをSOURCE Output DOPの入力に接続します。

  8. Vellum Source DOPのパラメータエディタで、 Source ▸ SOP Path に移動し、アイコンをクリックしてノード選択ダイアログを開きます。そのノード選択ダイアログで、GEOを探して Accept をクリックします。

  9. Source ▸ Constraint SOP Path でも同じことを実行しますが、今回はCONノードを選択します。

  10. これで、Vellum Source DOPによって Emission Type パラメータに直接アクセスできるようになりました。

geo1 レベルに戻ると、Vellum Solver SOPの最初の2つの入力は必須であるにも関わらず空っぽまでも大丈夫なのがわかります。 この場合にVellum Configure Grain SOPの1番目の出力をVellum Solver SOPの1番目に接続してしまうと、ソースが 2つ 追加されてしまうので、パーティクル数が2倍になります。 正確な数のパーティクルを作成するには、ソルバの入力を接続する方法とVellum Source DOPを追加する方法のどちらか1つを使用してください。

基本的なセットアップは以下のようになります。

エクスプレッションを使用して放出を制御する

どのEmission Typeもフレーム1から始まります。 Only Once は即座に停止し、他のタイプはシミュレーションの最終フレームで停止します。 アニメーションキーまたはエクスプレッションを使用してVellum Source DOPの Activation パラメータをアニメーションさせることで、ソーシングを制御することができます。 ここでのエクスプレッションは、 Activation をオン(1)または(0)オフにするスイッチのように機能させます。 HScriptエクスプレッションを使用したパラメータは緑、Pythonを使用したパラメータは紫で表示されます。 以下に、いくつかの一般的なソーシングタスクと、それに対応するエクスプレッションを載せています。

To...Do this

ソーシングを特定のフレームに制限する

  • パーティクルをフレーム10のみでソーシングするには、$FF==10と入力します。

  • このエクスプレッションを使用すると、 Emission TypeEach FrameEach Substep に設定されている場合でも、指定したフレームのみでソーシングが行なわれます。

ソーシングを特定のフレームで開始する

  • ソーシングをフレーム25で開始し、最終フレームで停止するには、$FF>24と入力します。

  • このエクスプレッションは、 Emission TypeOnly Once に設定して使用することも可能ですが、その場合は連続的な放出にはなりません。

ソーシングを特定のフレームで停止する

  • ソーシングをフレーム1で開始し、フレーム25で停止するには、$FF<26と入力します。

  • このエクスプレッションは、 Emission TypeOnly Once に設定して使用することも可能ですが、その場合は連続的な放出にはなりません。

ソーシングを特定のフレーム範囲に制限する

  • ソーシングをフレーム10から20の間の範囲に制限するには、if($FF>9 && $FF<21,1,0)と入力します。

  • 括弧内の最後2つの数字(10)は、 Activation パラメータのオンとオフの状態を示します。

Pythonを使用してソーシングを複数のフレーム範囲に制限する

HScriptの代わりに、Pythonでパラメータエクスプレッションを記述することもできます。 ここでは、ソーシングはフレーム1020の間 および フレーム3035の間に制限します。

  1. Activationクリックし、 Expression ▸ Change Language to Python を選択します。

  2. Activationクリックし、 Expression ▸ Edit Expression を選択してスクリプトエディタを開きます。

  3. スクリプトエディタに以下のコードを入力します。

activate = 0

if (frame() > 4 and frame() < 11):
    activate = 1

elif (frame() > 20 and frame() < 25):
    activate = 1

return activate

Houdiniの Activation パラメータの内部名はactivateです。 パラメータのツールチップにはこの内部名が表示されます。 パラメータのデフォルト値はここでは0になっており、ソーシングが非アクティブであることを示しています。 現行フレームが指定された範囲の間にある場合のみ、activate1に設定されています。 最後に、returnステートメントを使用してパラメータに値を記述します。 $FなどのHScript変数はPythonでは対応していないので、frame()などの適切な関数で置き換える必要があります。

相対参照を使用してソーシングを発動する

参照を使用してソーシングを開始させることができます(アニメーションするオブジェクトが特定の位置に到達した時)。 ボックスをX軸に沿ってアニメーションさせるとしましょう。 ボックスがX = 2に到達すると、 Activation1に設定されるようにします。

  • if(ch("../../box1/box1/tx")>=2,1,0)と入力します。

  • box1へのパスは、シーン内の実際のパスに設定する必要があります。txCenter.X を表わします。

アニメーションキーを使用してソーシング範囲を定義する

Activation をアニメーションさせる方法もあります。

  1. Vellum Source DOPを選択し、 Emission Type パラメータを Each Frame または Each Substep に設定します。

  2. Activation パラメータにターゲット値を入力します。放出は0で非アクティブ、1でアクティブになります。

  3. タイムラインスライダを目的のフレームまでドラッグし、パラメータをAlt + クリックでキーフレームを作成します。

  4. 必要に応じて、別のフレームでも手順3を繰り返します。

ポイントソースの放出

パーティクルはボリュームから生成することができますが、他のポイントソースからでも作成することができます。 ポイントソースは、例えば散乱ポイントがそうですが、他にもカーブ上のポイントもそうです。 ポイントソースとマスク/画像を併用することで、パーティクルがソーシングされる場所とされない場所を正確に定義することができます。 以下のセットアップでは、Grid SOPにペイントしたマスクや散乱させたポイントを組み合わせて、独自のパーティクルエミッターを作成しています。ネットワーク全体のスクリーンショットを参照してください。

  1. obj レベルで、⇥ Tabを押してTABメニューを呼び出します。geoと入力して、Geometry SOPノードを作成します。

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

  3. Grid SOPを追加し、 Size5 x 5に設定します。

  4. Center.Y2Rotate.X30に変更します。

  5. RowsColumns200に上げます。滑らかなマスクを描画するには、このようにする必要があります。

マスクは、グリッド上に直接ペイントすることができます。

  1. Attribute Paint SOPを追加し、その入力をGridの出力に接続します。

  2. そのAttribute Paint SOPを選択し、 Display/Render フラグをオンにします。既に描画モードになっているはずです。グリッドは紫で、3Dブラシが表示されているのがわかります。

  3. そのブラシをスケールするには、を使用します。

  4. Attribute Paint SOPのパラメータエディタで、 Soft Edge パラメータを1に設定します。

  5. マスクを好きなように描画します。

マスクした領域にパーティクルを作成します。

  1. Scatter SOPを追加し、上流のAttribute Paint SOPに接続します。

  2. Force Total Count パラメータを8000に設定します。

  3. Density Attribute チェックボックスをオンにして、デフォルトのdensityエントリをmaskに置換します。散乱させたポイントが、マスクした領域にのみ表示されます。

流体のセットアップ

この例では、SOPベースの流体セットアップを作成します。 DOPネットワークとSOPネットワークの違いについては、Vellum Fluidのセットアップページを参照してください。

  1. Vellum Configure Fluid SOPを追加します。このノードの説明から分かるとおり、これは実際にはVellum Configure Grain SOPです。その1番目の入力をScatter SOPの出力に接続します。

  2. Create Points from Volume チェックボックスをオフにします。

  3. Particle Size パラメータには、パーティクルを十分に分割できるくらいの小さい値を選択します。この例では0.035を使用します。

Note

次の手順では、パーティクルのジオメトリと拘束をVellum Solver SOPに接続する必要があります。 SOPネットワークでVellum Source DOPにアクセスするには、特定のセットアップが必要です。 このVellum Source DOPには Emission Type パラメータが用意されており、パーティクルのソーシングを1回のみ、フレーム毎、サブステップ毎のいずれで行なうかを選択することができます。 セットアップのガイドは、上記の’SOPネットワークのEmission Type'の章を参照してください。

  1. Vellum Source DOPを選択したままにしておきます。

  2. Emission TypeEach Frame に設定します。

  3. Ground Position をオンにして、無限平面の衝突オブジェクトを作成します。

  4. geo1 レベルに戻ります。

シーンをシミュレーションする準備が整いました。均一なルックを避けるために、以下の手順を実行します。

  1. Attribute Noise SOPを追加して、Vellum Configure Fluid SOPとGEO Null SOPの間に配置します。

  2. Attribute Names で、位置(position)を表わすPを追加します。Cdカラー(color)を表わし、パーティクルを様々な色にしたい場合はそのままにしておいて構いません。アトリビュートはスペースで区切る必要があります。

  3. Amplitude パラメータに1.5と入力し、より大きく変位させます。

  4. Animation セクションを展開し、 Animate Noise チェックボックスをオンにします。

  5. ボタンを押してシミュレーションを開始します。

シミュレーションは以下の動画のようになります。

ポリゴン選択からの放出

マスクをペイントする代わりに、パーティクルソーシングをオブジェクト全体でなく、選択したポリゴンに限定することもできます。 これを行なうには、Group Expression SOPなどを使用して、放出に使用するポリゴンをグループ化する必要があります。 このノードは、パーティクルソースとして使用したいポリゴンオブジェクトの直後に配置しなくてはなりません。 以前のセットアップ(上記のネットワークのスクリーンショットを参照)にいくつか変更を加えたものを使用すると良いでしょう。

  1. Grid SOPを、Rubber Toy SOPなど他のオブジェクトに置換します。

  2. Attribute Paint SOPとAttribute Noise SOPを削除します。

  3. scatter1を選択し、 Density Attribute チェックボックスをオフにします(ここではもう必要ないため)。

次は、パーティクル選択を作成するためのノードと設定です。

  1. TABメニューからGroup Expression SOPを追加し、Rubber Toy SOPとScatter SOPの間に配置します。

  2. Group Type ドロップダウンメニューが Primitives に設定されていることを確認します。

  3. Group Name パラメータにemissionなどの名前を入力します。

  4. VEXpression パラメータで、fit01(@elemnum % 10 * @N.y,0,1)などのエクスプレッションを入力します。このエクスプレッションは、法線のYコンポーネントに基づいてポリゴンを選択します。係数の10を変更すると、選択されるポリゴンを増減させることができます。この係数は、整数でなければなりません。もちろん、ポリゴンを手動で選択したり、他のメソッドを使用することも可能です。

  5. Scatter SOPで、 Group パラメータにemissionと入力します。

Note

ソルバを選択したり、シミュレーションを開始した時に、パーティクルが消失することがあります。 この場合はvellumfluid1に移動し、パーティクルが再び現れるまで、 Particle Size を下げます。

How to

To...Do this

パーティクルが途切れないようにする

  • Emission TypeEach Frame から Each Substep に変更します。

または、Drag(抵抗)フォースを追加して、パーティクルの速度を落とすこともできます。 その場合、DOPネットワークとSOPネットワークでは方法が異なります。

  • DOPベース のネットワークでは、Vellum Source DOPとVellum Solverの間にPOP Drag DOPを追加します。POP Drag DOPの Air Resistance パラメータの値を調整します。

  • SOPベース のネットワークでは、ノードの中に入り、POP Drag DOPを追加します。そのノードの出力をFORCEノードの入力に接続します。その後、POP Drag DOPの Air Resistance パラメータを調整します。

放出パターンを不規則にする

  • Vellum Configure Grain SOPの Seed パラメータに$Tエクスプレッションを使用することで、新たに生成されるパーティクルをタイムステップ毎に変位させることができます。この$T変数は現行時間を意味し、Houdiniによって更新されます。

Vellum

ソフトボディ

流体

拘束

コリジョン

上級