2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Vellum Configure Grains [Mardini2024]

Last updated at Posted at 2024-04-29

これはMardini2024のDay12 Vellum Configure Grainsの動画を視聴してまとめたものです。

動画

image.png

公式のサンプルファイル

Day11 Vellum Brush | Day12 Vellum Configure Grains | Day13 RBD Material Fracture

Vellum Configure Grainノードは、Vellumグレインとフルイドのシミュレーションを設定できます。また、剛体シミュレーションにも応用できます。

要約

  • Vellum Configure Grainノードは、Vellumグレインとフルイドのシミュレーションを設定するために使用される
  • ジオメトリからポイントを作成するか、既存のポイントを使用できる
  • パーティクルサイズ、パッキング密度、物理属性を調整できる
  • 摩擦、引力、反発力は、Vellumソルバーノードで設定する必要がある
  • フルイドシミュレーションでは、粘度、表面張力、フェーズを調整できる
  • フェーズを使用して、複数のフルイドを区別できる
  • Vellum Configure Grain Piecesノードを使用して、ジオメトリを剛体シミュレーションに変換できる

サンプルファイル

image.png

GRAINS_BASIC

image.png

FLUID

image.png

COPIES

image.png

Vellum Configure Grain SOPの基本

  • Vellum Configure Grain SOPは、Vellum Grainsのセットアップに使用されるノードです

  • Houdiniのシェルフ(シェルフにGrainのグループがありますが、そっちではなくVellumの方にあります!)からVellum Grainsを選択すると、AutoDopNetworkとGrains Vellumノードが作成されます。実際のシミュレーションはDOP Network内で行われます

    • image.png
    • シェルフ選択後、例えばSphereを選択する
    • image.png
    • AutoDopNetwork内
    • image.png
    • このままでは地面がないので、GroundPlaneを追加します
    • image.png
    • image.png
  • 再生させてみると、崩れていくことが確認できます

    • image.png
    • このシミュレーションはDOPNet内のvellumsolverが制御しています。サブステップがすでに5に設定されていますが、これはグレインやフルイドを扱う際に推奨される値です
    • image.png

ポイントの作成方法

image.png

  • 先程のシェルフのVellum Grains作成時に、AutoDopnetwork以外にも元のSphereジオメトリ直下にVellum Configure Grainsが追加されています。まず注目すべきは、このCreate Points from Volumeです

    • image.png
  • vellumconstraints_grainノード作成時Create Points from Volumeは無効なのがデフォルトの状態です。無効状態の場合ポイントを取り込むことを期待しています。Create Points from Volumeを有効にすると、スフィアがポイントに変換されます

  • image.png

  • ポイントの作成方法は、Regular Grid(規則的なグリッド)またはSphere Packing(球体のパッキング)から選択できます

    • image.png
  • Particle Sizeパラメータは、パーティクルのサイズを制御します。Particle Sizeをデフォルトの0.1から0.05に小さくすると、パーティクル数が増えます。0.03ではさらに増えます

    • image.png
  • Packing Densityパラメータは、パーティクルの過剰パッキングに使用されます。グレインの場合は使用されませんが、流体の場合は増加させる必要があります。グレインでPacking Densityを上げると、最初に実行したときに重なったコライダーができてしまい、爆発してしまいます

    • image.png

Physical Attributesと乗数(マルチプライヤ)

  • Physical Attributesを見ると、Phase(フェーズ)、Viscosity(粘度)、Surface Tension(表面張力)などがグレーアウトしているのがわかります。これについては後ほど説明します。そのほかにFriction(摩擦)、Dynamic Friction(動摩擦)、Attraction Weight(吸引力)、Repulsion Weight(反発力)があります

    • image.png
  • ここで、ポイントを引き付け合ってまとまるようにしたいとします。そのためにはAttraction Weightを使用します。これを100のような極端に高い値に設定してみましょう。その状態でアニメーションさせてみると、パーティクルが全て引き付け合います!‥と思いきやまったく効果がありません

  • image.png

  • よく見てみると、これらのオプションは乗数になっています。Vellum SolverのAttraction Weightパラメータに対するマルチプライヤーとして機能すると書かれています。では、これを1に戻して無効にし、Vellum Solverに移動します

    • image.png
  • Vellum Solverの Advanced タブに移動し、Grain Collisionsの下にAttraction Weightがあります。これを0.3のような値に設定して再生すると、粒子が引き寄せられているのがわかります

    • image.png
    • image.png
  • Vellum Configure GrainsのAttraction Weight Multiplierを使えば、Attraction Weightを変更できます。これを2に上げると、さらに高い値になります。0.3の2倍なので、0.6になります。Repulsion Weight、Friction、Dynamic Frictionも同じです。先ほど100の値を入れても効果がなかったのは 0 x 100 = 0 だったためです

    • Vellum Configure GrainsのAttraction Weight Multiplier:2 Vellum Solver Attraction Weight:0.3 の場合の動作
    • image.png
    • Vellum Configure GrainsのAttraction Weight Multiplier:4 Vellum Solver Attraction Weight:0.3 の場合の動作
    • image.png

SOPレベルでのグレインのセットアップ

  • では、Phase、Viscosity、Surface Tensionはどうでしょうか。これらはVellum Fluidsのためのものです。先ほど作成したノードを削除して新しく作っていきす

    • これを消す 
    • image.png
  • フルイドを見る前に、SOPレベルで通常のグレインSOPを構築する方法を見てみましょう。新規のジオメトリ作成

    • image.png
  • Sphereを追加し、Vellum Configure Grainsを使用します…しかし、接続しても何も起きません。なぜならCreate Points from Volumeを使用する必要があるからです

    • image.png
  • もう一つの方法は、Grain Sourceを使うことです。このノードはVellum Constraintsにインフォームを送るので、一緒に使うと便利です。

    • image.png
    • image.png
  • Point Separationを0.05程度に減らしても、パーティクルの実際のスケールは変わりません。これは、Particle Sizeを手動で設定しているからです。これを無効にすれば、Grain Sourceから取得されます。ここで値を下げると、それに合わせて変化します。

    • image.png
    • image.png
  • あとはVellum Solverに入れるだけです。この3つを取り、GroundPlaneをY=-1に追加し、サブステップを5に上げ、少しAttraction Weightを追加すれば、グレインができあがります

    • image.png
    • image.png
    • image.png

流体のセットアップ

image.png

image.png

  • 次はVellum Fluidで試してみましょう。このノードを取得する方法は、Vellum Configure Grainsの代わりにVellum Configure Fluidを使うことです

    • image.png
  • Vellum Configure Fluidを配置すると、実際にはVellum Configure Grainsノードになっています。TypeがGrainからFluidに変更されただけです

    • image.png
    • これにより、粘度、表面張力、摩擦などの他の物理属性にアクセスできます。配置すると、Packing Densityが1より大きい値に増加するのがわかります
    • image.png
  • Sphereを作成し、Vellum Fluidに接続し、コライダーを接続します

    • image.png

フェーズ

パーティクルのGroupがFluid AとFluid Bに分割されています。図で選択されているのがfluid_A
image.png

Fluid Aは白で、質量が低くなっています。これにより、白いパーティクルが上に来ます。他のパーティクルの半分の質量しかありません。また、粘度が少し高いので、速度を共有します。表面張力もあります。フェーズを1に設定しています。フェーズは、これらが2つの異なるフルイドであることをソルバに伝える方法です。2つの異なるフェーズ値があれば、2つの異なるフルイドです。フェーズの実際の値はあまり重要ではなく異なっていれば十分です。同じフェーズ値を持っていれば、互いにブレンドします。フェーズ1とフェーズ2があれば、より2つの独立したフルイドとして扱われます。
Vellum Solverで再生すると、白いパーティクルが上に上がり、青いパーティクルが下に沈んでいくのがわかります。白いパーティクルは粘度が高いので、泡のように動きます。これは非常に安価にフルイドを作る方法です。

image.png

ここで使用されているのは、粘度、表面張力、フェーズの3つの値です。粘度は、パーティクルが近くのパーティクルと速度をどの程度共有するかと考えることができます。表面張力は、フルイドがどの程度まとまろうとするかです

Fluid A(白)泡のような動作
v@Cd = set(1,1,1);//白
@mass *= 0.5;//水の半分の重さ、軽いので上に来る
@viscosity = 2;//粘度が高い
@surfacetension = 1;//表面張力が高い
@phase = 1;//フェーズ1
Fluid B(水色)水のような動作
v@Cd = set(0.4,0.7,1);//水色
@mass *= 1;//重さ1
@viscosity = 0.7;//粘度が泡より低い
@surfacetension = 0.2;//表面張力が低い
@phase = 2;//フェーズ2

まとめ

  • Vellum Configure Grain SOPは、TypeをFluidに設定することで、流体のセットアップにも使用できます
  • Viscosity、Surface Tension、Phaseなどのパラメータを使用して、流体の動作を制御できます
  • Phaseパラメータを使用して、異なる流体グループを定義できます。同じPhase値を持つパーティクルは混ざり合い、異なる値を持つパーティクルは別々の流体として扱われます

Vellum Configure Grain Pieces SOPの使用

image.png

image.png

ラバートイを用意し、グリッドをたくさん作り、ランダム化されたOrientアトリビュートを各ポイントに追加し、それらをポイントにコピーしています。
image.png

その際、Pack and Instanceを必ず行います。各ジオメトリを1つのジオメトリとして扱いたいからです。
image.png

Vellum Configure Grain Piecesを使用すると、Vellum Grainsと Shape Matchを使用されます。これを最初の入力に接続すると、計算に少し時間がかかりますが、グレインを使ってジオメトリの推定をしているのがわかります。
image.png
image.png
image.png

Sphere Packingは、ジオメトリの形状を可能な限り正確に推定するために、たくさんの球をジオメトリにパックしようとしています。
image.png

Particle Sizeを0.07程度に減らすことで精度が上がります。ただし、デフォルトではMax Spheresが100上限の設定制限があるため無効にしておきます。

この仕組みは、実際に各ピースの接続性を取得し、ピースアトリビュートを追加します。ジオメトリスプレッドシートに行くと、このピースアトリビュートを見ることができます。ピース0からピース599まであります。各ポイントは異なるピースに属することになります。

image.png

次に接続されているVellum Shape Matchは、同じピース番号を共有するポイントを接続します。これらのコンストレイントのすべてが、これらのポイントを一緒に保つようにしていることがわかります。アニメーション時に1つのピースとして動作します。

image.png

つまり、Vellum Solverを使えば、簡単に剛体のような振る舞いを再現できます。
しかし、ここまではただのグレインのポイントで、ジオメトリには反映できていません。ここで使うのがTransform Vellum Piecesです。
image.png

このノードは、最初の入力としてVellumジオメトリを取り、2番目の入力としてVellumコンストレイントを取り、最後の入力としてピース、つまり最初のジオメトリを取ります。そして、このVellumシミュレーションに基づいてそれらのピースのジオメトリを変形します。
これは剛体シミュレーションを行う方法です

まとめ

  • Vellum Configure Grain Pieces SOPは、複雑なジオメトリを剛体としてシミュレートするために使用されます
  • このノードは、入力ジオメトリを分析し、グレインを使用してジオメトリの形状を推定します
  • Particle SizeとMax Spheresパラメータを調整して、推定の精度を制御できます
  • Vellum Shape Match SOPを使用して、同じピース番号を持つポイントを接続し、ジオメトリが1つのまとまりとして動作するようにします
  • Transform Vellum Pieces SOPを使用して、Vellumシミュレーションに基づいてピースジオメトリを変形させ、剛体シミュレーションを実現します
2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?