Houdini 17.0 ダイナミクス

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になります。

ダイナミクス: ステート

タイプ

名前

説明

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 - パーティクルは回転も移動もできません。

Collision(干渉)

タイプ

名前

説明

float

pscale

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

integer

layer

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

integer

disableself, disableexternal

(Point) 0の値は、このポイントが自己干渉と外部干渉を使用することを意味します。エッジまたは三角形のポイントで1つでもポイントが無効になっていれば、それ全体が無効になります。

自動無効化は、この値に2を"or(論理和)"します。つまり、0は2に、1は3になります。 同様に、自動有効化は2を引くので、2は0に、3は1になります。 自動検出とは関係なく何かを無効にするには、ユーザー側で1に設定してください。 しかし、何かを再有効化して、それがまだもつれているのかどうか確信がないのであれば、0ではなく2に設定することで、これはクリーンが検出されるまでは、その有効化を遅延します。

float

overlap_self, overlap_external

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

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

Targeting(ターゲット)

タイプ

名前

説明

string, integer

target_path, target_pt, pintoanimation, gluetoanimation

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

Breaking(切り離し)

タイプ

名前

説明

integer, 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拘束のターゲットポジションの保存にも使用します。

float

stiffness

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

string

type

(Prim) 拘束のタイプ。

distance, stitch, branchstitch

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

bend

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

trianglebend

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

angle

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

tetvolume

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

pressure

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

attach, pin

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

pinorient

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

bendtwist

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

stretchshear

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

ダイナミクス: 状態

float

stress

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

切断

integer, 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

非DOPシミュレーション

次のステップ