Houdini 20.0 Vellum

Vellumアトリビュート

On this page

セットアップアトリビュート

タイプ

名前

説明

vector

materialuv

(Point) Planar PatchまたはPlanar Patch from CurveのSOPで設定します。このアトリビュートは、異方性に対して縦糸/横糸の方向を決定するのに使用します。

float

bendname, stretchname

Vellum ConstraintsScale by Attribute は、デフォルトでこれらのアトリビュートを使ってスケールを調整します。 値の範囲は、0..1にしてください。これは指数マップです。

シミュレーションアトリビュート: ジオメトリ

Note

ジオメトリもパーティクルとして扱われるので、すべてのPOPアトリビュートが適用されます。

ダイナミクス: パラメータ

タイプ

名前

説明

float

dragnormal, dragtangent

(Point) 風の方向が布のフェースを向いている、または、フェース接線方向と平行に流れている時のその風の効果をスケールさせる量。 ヘアーに関しては、normalがヘアーと直交した方向で、tangentがヘアーの方向です。

Note

これは、布特性の本質的な挙動を制御し、その風の強度はairresistで制御します。

float

inertia

(Point) パーティクルの回転ヘアー拘束の抵抗力。これがゼロなら、パーティクルは回転しません。

integer

weld, branchweld, collisionweld

(Point) デフォルトは-1です。

値が1または自身を参照している場合は、接合なしを意味しますが、他のポイントからは、このポイント 接合することができます。 idアトリビュートが存在しなかった場合は、この値はポイント番号を意味します。存在すれば、それはポイントIDです。

@weldは、ユーザー側でアクセス可能なオプションです。 @branchweldは、ヘアーシミュレーションで強制的にポイントを分離させた時にヘアー拘束によって構築されます。 @collisionweldは、単一接合をDetangle(ほどく)アルゴリズムに渡すために必要に応じて生成されます。

float

friction, dynamicfriction

(Point, Detail) 静摩擦(friction)と動摩擦(dynamicfriction)の設定にスケールをかける大きさ。

Note

これらのアトリビュートは乗算によって結合されます。そのため、2つのオブジェクトのfriction0.5なら、そこに適用される摩擦は0.25になります。

float

pressurescale

(Point) ポイント毎のPressure拘束の効果を0から1の範囲でスケールさせる量。

Note

このアトリビュートを使用すれば面白い膨張効果を表現することができますが、例えばピン留めされていない風船のpressurescaleが片側だけほぼゼロになっていた場合だと不均衡なフォースを発生してしまうので注意して使用してください。

ダイナミクス: ステート

タイプ

名前

説明

vector

P, pprevious, plast, v, vprevious, vlast

(Point) 2次処理において、前フレームの位置とVelocity(pprevious, vprevious)、その前のフレーム、2フレーム後(plast, vlast)が必要です。

point, vector

orient, orientprevious, orientlast, w, wprevious, wlast

(Point) ヘアーには、ポイントの向きとその角速度(w)が必要です。前/最後も同じ。

integer

stopped

(Point) これは、標準のPOPアトリビュートですが、Vellumによって使用されて評価されます。自動スリープと自動目覚めは、stoppedアトリビュートを制御します。massをゼロに設定するのではなくて、stoppedを使用することで、開放するピンを制御することができます。

stoppedは、0と1のビットの組み合わせによって、向きと位置の更新を制御します。

  • 0 - パーティクルは自由です。

  • 1 - パーティクルは回転可能ですが、空間内で固定されます。

  • 2 - パーティクルは回転不可能ですが、空間内で自由に移動可能です。

  • 3 - パーティクルは回転も移動もできません。

integer

dead

(Point) これは、標準のPOPアトリビュートですが、Vellumによって使用されて評価されます。 1に設定すると、ポイントとそれに関連する拘束がシミュレーションから除去されます。 このアトリビュートは、POP Kill DOPを使用して簡単に設定することができます。

Collision(干渉)

タイプ

名前

説明

float

pscale

(Point) 各ポイントの半径。三角形に対して、コーナーにはpscaleの球を、エッジにはテーパーの付いたチューブを、中心には傾斜した平面を使って、その三角形を太らせます。

integer

layer

(Point) 干渉の緩い優先度を制御します。大/小だけが問題で、その差の大きさは関係ありません。

integer

disableself, disableexternal

(Point) 0の値は、このポイントが自己干渉や外部干渉を使用することを意味します。

0

このポイントは、自己干渉や外部干渉を使用します。 ( 二重否定に注意してください : disableselfを0(オフ)に設定すると、ポイント衝突が 有効 になります。)

1 (または0以外の値)

このポイントに対して衝突が無効になります。

エッジまたは三角形のポイントで1つでもポイントが無効(0でない)になっていれば、そのエッジ/三角形全体が完全に無効になります。

自動有効化/無効化は、この値にビット演算のテクニックを使っています:

  • Houdiniがポイントを自動無効化する時:

    • disableself0だった場合、Houdiniはそれを2に変更します(衝突を無効にします)。

    • disableself1だった場合、Houdiniはそれを3に変更します(そのまま無効)。

    • disableself2だった場合、変更されません。

    (技術的な話をすると、Houdiniは、この値に2を“or(論理和)”しています。)

  • Houdiniがポイントを自動有効化する時:

    • disableself0または1だった場合、変更されません。

    • disableself2だった場合、Houdiniはそれを0に変更します(衝突を有効にします)。

    • disableself3だった場合、Houdiniはそれを1に変更します(そのまま有効)。

    (技術的な話をすると、Houdiniは、2桁目のビットを0にしています。)

このテクニックは、 自動検出とは関係なく ポイントを無効にしたい時はその値を1に設定するべきであることを意味しています。 しかし、何かを再有効化して、それがまだもつれているのかどうか確信がないのであれば、0ではなく2に設定することで、これはクリーンが検出されるまでは、衝突の有効化を遅延させることができます。

float

overlap_self, overlap_external

(Point) デフォルト値は10000です。

オリジナルのpscaleが重なった量を格納します。つまり、0はpscaleが完全に使用されていることを意味します。 これは、干渉に対して実質的に影響のあるpscaleoverlap_fooだけ小さくしてポイントが重なり始めないようにすることによって、最初のフレームにおける爆発を回避します。 厚みを可視化すると、この方法で修正されたポイントは緑ではなくシアンで描画されます。 ポイントが引き離されると、露出した空間を表示するためにこの厚みが小さくなります。 そのため、非常に大きなpscaleは、ポイントが大きくなってDistance拘束とぶつかった時に不安定になります。

string

collisionignore

(Point) デフォルト値は“”です。

干渉させないオブジェクトとコリジョングループのパターンを格納します。 つまり、デフォルトの空っぽの文字列は、すべての干渉を有効にします。 すべての干渉を無効にするには、*文字列を使用してください。 これは、一般的なHoudiniマッチングルールに対応しているので、foo*はオブジェクト名がfooから始まらないオブジェクトと干渉します。 現在のところ、* ^fooなどの排他パラメータは対応していません。

現在計算中のVellumオブジェクトは常にselfという名前のオブジェクト名を使用します。 Vellum Solver SOPは、追加した地面に対してgroundplane、3番目の入力のコリジョンに対してexternalというデフォルトのオブジェクト名を持ちます。 3番目の入力がパックプリミティブで、そのプリミティブにobjname Primitiveアトリビュートがある場合、そのアトリビュートを使ってオブジェクト名が暗黙的に指定されます。

これは、オブジェクト名とコリジョングループの両方に対して合致します。 コリジョングループは、collisiongroup文字列Pointアトリビュートを使って指定します。 指定したオブジェクト/コリジョングループのペアに合致させるには、スラッシュを使用します。 例えば、external/barは、外部オブジェクトのコリジョングループのbarにのみ合致します。

string

collisiongroup

(Point) デフォルト値は“”です。

このポイントが属するコリジョングループを指定します。 これがcollisionignoreに合致した場合、そのコリジョングループはコリジョン検出に関与しなくなります。

デフォルトの空っぽの文字列は、*パターンにのみ合致します。

Targeting(ターゲット)

タイプ

名前

説明

string, integer

target_path, target_pt, pintoanimation, gluetoanimation

(Point) Vellum SourceTarget パラメータを設定した時のピンに対するターゲットパスとポイント番号。 pintoanimationが1なら、ピン留めしたポイントの位置は、ターゲットパスジオメトリ上の指定したターゲットポイントに合致するように更新されます。 gluetoanimationが1なら、位置と向きの両方が更新されます。

float

targetweight

(Point) 0から1のウェイト値を使って、ピン留めポイントの強度に影響を与えます。

Breaking(切り離し)

タイプ

名前

説明

float, string

breakthreshold, breaktype

(Point) 接合と分岐接合を引き離すための閾値で、breaktypeに対して適用します。このbreaktypeは次のどれかを指定することができます: stretchstress, bendstress, stretchdistance, stretchratio, bendanglebreakthresholdが0未満なら、切り離しは起こりません。

Pressure(圧力)

タイプ

名前

説明

vector, integer

pressuregradient, volumepts, volume

(Point) ポイントがPressure拘束の一部の時、これらのアトリビュートには、その拘束評価時に計算された値が格納されます。 pressuregradientは、体積の増加量が最大になる方向に沿って外側を向いたベクトルで、通常ではポイント法線に非常に近いです。 volumepts配列には、各ポイントに対してボリュームアトリビュートを計算するのに必要なポイントが格納されます。これらのポイントは、Pressure拘束のrestlengthと比較するために追加されます。

内部作業変数

フレーム毎にアトリビュートを削除/追加するのは処理が重いので、いくつかの内部アトリビュートを外に出しました。

タイプ

名前

説明

float

dP, dPw

(Point) 拘束ディスプレイスメント/ウェイト。最後に反復させたほうがよいので、もう古いです。

string

patchname

(Point) シミュレーション内でそれぞれ生成されたパッチを更新/置換できるように、それらを識別します。

シミュレーションアトリビュート: 拘束

たくさんのタイプの拘束があるので、それらの変数の意味は、その拘束タイプに依存することが多いです。 通常では、これらの変数はプリミティブ上に存在します。

ダイナミクス: パラメータ

タイプ

名前

説明

float

dampingratio

(Prim) 0..1の減衰比率。

Note

0.1より大きければ、ほぼ拘束が収束しなくなります。システムからエネルギーを吸うのに役立ちます。

float

restlength, restlengthorig

(Prim) 拘束の初期“距離”。この単位は可変です。Distance拘束は距離を使用し、Bend拘束は単位が度の角度を使用し、Volume拘束とPressure拘束は体積を使用します。

実際のダイナミクスは、restlengthのみを使用します。 restlengthorigは、余計な数学を使わずにスケールエフェクトをアニメーションできるように便宜的に用意したものです。

point

restvector

(Prim) Orientation拘束は、静止状態の向きを必要とするので、ここではクォータニオンを保存します。このベクトルは、Pin拘束のターゲットポジションの保存にも使用します。

vector

rest

(Point) 静止空間でのオリジナルのポイント位置。これはshapematch拘束で使用されます。

float

stiffness

(Prim) 0..1e10。拘束を強制させる強度。数値が高いほど、指定した反復回数の範囲内に収まらないので、ある程度の反復レベルに収まるように数値を下げて拘束を強くしてください。

float

compressionstiffness

(Prim) 0..1e10。拘束を圧縮する時にそこに加える強度。指定した反復回数内で強い値を得られないこともありますが、その反面、弱い値は特定の反復レベルでそれ以上強度が上がらなくなります。

float

stiffnessdropoff stiffnessscaled stiffnessdropoffmin

(Prim) 静止状態から、拘束の剛性が0に減少する位置または0から完全剛性に増加する位置までのドロップオフ方向の距離。 マイナス値は、減少するドロップオフを意味し、剛性が完全強度から始まって、静止状態からDropoffの距離の位置で0まで減少します。 プラスの値は、増加するドロップオフを意味し、剛性が0から始まって、静止状態からDropoffの距離の位置で完全剛性まで増加します。 Stretch拘束に関しては、この値の単位は長さです。Bend拘束に関しては、この値の単位は度です。 stiffnessdropoffが有効な時、拘束計算で使用される実質的な剛性値はstiffnessscaledに格納されます。 stiffnessdropoffminアトリビュートが存在し、且つ、0より大きい場合、減衰による最終的な剛性値を計算する時にその値が最小剛性値として使用されます。

string

type

(Prim) 拘束のタイプ。

distance, stitch, branchstitch

restlengthだけ離れるようにポイントを拘束します。 distanceは、三角形のエッジまたはヘアーのような本来の距離拘束に使用します。 stitchdistanceのエイリアスです。これはdistanceと同じ挙動をしますが、意味的にはシミュレーションに追加する非トポロジーな弾性に使用します。 branchstitchは、自動的な分岐の接合に使用します。

ptprim

ポイントとプリミティブ上の位置の間の拘束は、通常ではVellum Constraints SOPの Use Closest Location on Primitive オプションを使って作成します。 その場合、restvectorには、そのプリミティブ上の位置のUV座標が格納されます。 このプリミティブは線分、三角形、四角形のどれかに該当します。つまり、この拘束にはそれぞれ3,4,5個のポイントが含まれることになります。

bend

4点拘束。これらのポイントは、エッジを共有した2つの三角形の4ポイントを意味します。その共有エッジに沿った角度を維持するように拘束が適用されます。

trianglebend

3点拘束。この拘束は、三角形の中点と重心間の距離を維持します。これによって、ラインの屈曲が維持されます。

angle

3点拘束。中点で測定されたニ面角を維持します。これは、紐の拘束タイプで使用します。

tetvolume

4点拘束。4点で表現された四面体の体積を維持します。

pressure

多点拘束。すべてのポイントがメッシュの表面を表現します。そのメッシュから体積を計算して、それをポイントに格納してから、その体積が維持されるようにすべてのポイントを膨張または収縮させます。

attach, pin

特定のワールド空間位置にポイントをピン留めします。 attachは、サブステップ毎にターゲットアトリビュートからターゲット位置を更新します。 それに対してpinは、matchanimationアトリビュートに応じて更新されます。

attachnormal

__Tangent Stiffness_ が有効な時にAttach to Geometry拘束用に生成される追加拘束。 この拘束は、拘束されるポイントがrestdirアトリビュートで指定されたターゲットオブジェクト法線に整列するように維持します。

pinorient

静止向きに合うようにポイントの向きをピン留めします。

bendtwist

2点拘束。エッジ上のポイントの向きが同じになるように拘束するため、ヘアーに沿った捻じれの効果が生成されます。

stretchshear

2点拘束。エッジに対して距離拘束と曲げ拘束を組み合わせたものです。これは、ヘアーで使用します。

tetfiber

ポイントのmaterialWアトリビュートで指定されたローカル空間方向に沿って四面体を圧縮することができる四面体拘束。

triarap

三角形のRest形状との歪を最小限に抑えるその三角形に対するAs-Rigid-As-Possibleストレッチ拘束。 この歪はrestvectorに格納されます。

tetarap*

四面体のRest形状との歪を最小限に抑えるその四面体に対するAs-Rigid-As-Possibleストレッチ拘束。 この歪はrestmatrixに格納されます。 この拘束タイプには、線形と非線形のどちらにするのか、体積を維持するかどうかといったバリエーションがあります。

shapematch

拘束されるポイントの(拘束ジオメトリのrestPointアトリビュートに格納されている)元の形状の維持を試みる拘束。

ダイナミクス: 状態

タイプ

名前

説明

float

stress

拘束で適用される圧力の強さ。

滑り

タイプ

名前

説明

float, string, string, string

slidingrate, target_group, slidingattrib, attribpromote

(Prim) target_group内のtarget_pathで指定されたプリミティブに沿ってターゲット位置を滑らせる速さ。この速さをスケールするように設定したPointアトリビュートが存在すれば、そのアトリビュートの名前をslidingattribに格納します。その速さをスケールするアトリビュート値をプロモートさせる方法をattribpromoteに格納します。

切断

タイプ

名前

説明

float, string

breakthreshold, breaktype

(Prim) 拘束を切断する閾値。breaktypeには次のどれかを指定することができます: stretchstress, bendstress, stretchdistance, stretchratio, bendanglebreakthresholdが0未満であれば、切断は起きません。

可塑性

タイプ

名前

説明

float

plasticthreshold, plasticrate, plastichardening, plasticflow

拘束に可塑性を適用する閾値。これは、plasticrateで指定したレートで現行状態に合うように拘束のrestlengthを修正します。 plastichardening > 1の場合、その拘束の剛性は同じレートでも大きくスケールされます。 plastichardening < 1の場合、小さくスケールされます。 拘束で起こす塑性流動の量は、plasticflowで指定します。 plasticrateを0に設定することで、簡単にその拘束の可塑性を無効にすることができます。 ストレッチ拘束に対してplasticthresholdにマイナス値を指定すると、それが現在のrestlengthに対する比率として扱われます。 例えば-0.1を指定すると、現行長がrestlengthより10%以上変形した時に可塑性が起こることを意味します。

ターゲット

タイプ

名前

説明

integer

matchanimation

(Prim) ピン拘束に対してこれを1に設定すると、ソルバは、拘束するポイントからtarget_pathtarget_ptを検索するようになり、そのピン拘束がターゲットアニメーションに追従できるように、restvectorを、指定したポイント位置に更新します。

内部作業変数

タイプ

名前

説明

vector

L

(Prim) 拘束によって実行される作業量。これは、剛性値または圧縮剛性の軸によって変化します。一般的には、拘束が実行する作業量を判断するときは代わりにstressアトリビュートを使用してください。

integer

pts

(Prim) この拘束から影響を受けるポイントの配列。

Vellum

ソフトボディ

流体

拘束

コリジョン

その他

上級