On this page | |
Since | 17.0 |
Vellum Solversは一種のPOP Solverであり、内部三角形、エッジ干渉、明示的な拘束ジオメトリに対応しています。
Geometryデータには、シミュレーションのダイナミクス系アトリビュートをPointアトリビュートとして格納します。 さらには干渉ジオメトリも格納するので、その三角形またはポリラインメッシュを使用して、干渉の検出と解決を行ないます。 しかし、それらのポイントを一緒に維持させる方法は、別のConstraint Geometryデータで決定されます。 Constraint Geometryデータは、そのGeometryデータとポイントが1対1で対応しているようにしてください。 Constraint Geometryデータのポイントは、ソースポイントの特定のプロパティ(例えば、距離や曲げ角度)を維持するルールとして解釈されます。
POP Forcesをソルバ入力に接続することで、そのオブジェクトの挙動を調整することができます。
通常では、Vellum Object DOPを使って空っぽのVellumオブジェクトを作成し、
Vellum Source DOPsを使って、このオブジェクトに1つ以上のジオメトリを追加します。
パラメータ
Common
Enable Collisions
衝突検出を行なうかどうかを制御します。
Self Collisions
自己衝突を検出するかどうかを制御します。
Time Scale
Vellumソルバの実効時間をスケールします。 これを使用することで、バレットタイムのような効果を出すことができて、Houdiniのプレイバーとは異なる時間レートでVellumソルバの物理計算が実行されます。 値を2にすると、布が2倍速で落下するようになり、0.1にすると、0.1倍速で遅くなります。
Velocity Damping
動的なVelocityを強引に減少させる手法。つまり、この量が直接Velocityにスケールされるので、急な移動が迅速に減衰します。
Iterations
Substeps
各フレームをこのサブステップの数で分割します。 高速移動する衝突オブジェクトまたは急なフォースには、サブステップを上げる必要があります。
デフォルトのサブステップだと、非常に挑戦的な設定になっており、もしVellum Solverがあまりにも伸縮が大きいようでしたら、 通常だとサブステップを2とか5に上げると、ちょうど良く始めることができるでしょう。
Constraint Iterations
各サブステップ内で、この回数だけ拘束が実行されます。 硬い拘束を収束させるには、この反復回数を上げる必要があります。 最初に設定する目安はジオメトリの直径です。要するに、一番遠くのポイントまでのエッジの数です。
Smoothing Iterations
Constraint Iterationsは、収束が早いガウス・ザイデル法をデフォルトで使用しています。 しかし、剛性が高すぎたり、不可能な設定が原因で完全に収束しなかった場合、ひどい見た目の三角形でエラーを残してしまいます。 Smoothing Iterationsは、収束が遅いけど、もっと感じの良い方法でエラーを残すヤコビ法を使用しています。 デフォルトの10回は、エラーを滑らかにしますが、全体的な Constraint Iterations の回数が非常に多い場合は、この回数も上げる必要があります。
Collisions
Collision Passes
実行する衝突検出パスの数。この衝突検出パスは、拘束反復と交互に行なわれます。 衝突検出は処理が重いので、この数を最小限に抑えるのが良いです。 しかし、交互に頻繁に処理することによって、小さいColliderが非伸縮拘束に対して無駄に負荷をかけてしまうテントポールのような現象を回避するのに役立ちます。 実際に試してみると、ほとんどの状況において10が適切であることが分かり、品質を上げるならサブステップを上げることで解決されることが多いです。
Post Collision Passes
すべての拘束が実行された後に、最後決戦の衝突検出が行なわれます。 衝突が最も目立つ失敗モードになる場合が多くて、次のフレームでは交差していないジオメトリから開始できるのが理想です。 そのため、最終クリーンアップのパスによって、それらの要件を成し遂げることができます。 私どもは、このパスの数は“積み上げる層の数 + 2”が妥当であると分かりました。 これによって、下側にあるColliderが、その上に積み上げられた層を完全に波立てるようにする伝搬させることができます。
Polish Passes
ある衝突パスにおいて、ある衝突ペアが完全に解決できないことがあります。 この数だけ追加したColliderペアのパスは、その衝突ペアが解決されるまで実行されます。 これらのパスはアクティブなColliderに対してのみ実行されるので(そして、新しい衝突検索が実行されないので)、非常に計算が軽いです。
Layer Shock
layer
整数Pointアトリビュートを使って、異なる層の布に属するポイントを示すことができます。
この番号が大きいほど、上層の布を参照します。
Layer Shockは、衝突を評価する際に、低いレイヤー番号ほど何倍も重くするので、高いレイヤー番号が低いレイヤー番号をよけるようになります。
他のダイナミクスは、このレイヤー番号の影響を受けません。
レイヤー番号の差分は、その2つの布間のレイヤーの数に関係なく修正されます。
この差分によって、一方向のシミュレーション、完全双方向のシミュレーションの制御方法が決まります。
Friction
Static Threshold
完全摩擦が適用される閾値。 接線Velocityと法線インパルスの比率がこの閾値未満の時、接線Velocityが完全に摩擦から除去されます。 これは、重力だけでスライド可能な勾配角度のtan()のようなものです。
Dynamic Scale
Static Thresholdが失敗した場合、これは、動摩擦によって接線Velocityが減少する割合を制御します。
Enable External
外部ジオメトリとの干渉に適用する摩擦効果の度合いに対するスケール係数。
Enable Self
自己ジオメトリとの干渉に適用する摩擦効果の度合いに対するスケール係数。
Static SDF Enable
Volume Colliderの静摩擦に対するスケール係数。摩擦のない地面の作成に役立ちます。
Dynamic SDF Enable
Volume Colliderの動摩擦に対するスケール係数。摩擦のない地面の作成に役立ちます。
Advanced
Integration
Velocityによってポイント位置を前へ前へ積分させていく時、振り子のような弧を描く動きだと、拘束予測がその予測を誤ってその動きが減衰していまいます。 2次プリディクタ(予測器)は、そのような弧を描く動きをもっと補って、システム内のエネルギーをもっと維持させます。
どのような場合でも、干渉が検出されれば、このシステムは、過度の跳ね返りを回避するために、1次プリディクタに戻します。
External Forces
VellumポイントはDOPフォースからフォースを受けます。 これをオフにすると、この効果が除去され、それらのポイントはPOPフォースからのみ影響を受けるようになります。
Default Mass
入力ジオメトリにmass
アトリビュートが存在しなかった場合、この値がそのポイントのデフォルト値として使用されます。
通常では、Vellum Constraints SOPによって既にmassが設定されているはずです。
Default Thickness
入力ジオメトリにpscale
アトリビュートが存在しなかった場合、この値が設定されます。
通常では、Vellum Constraints SOPによって既にこの厚みが設定されているはずです。
Secondary Constraint Pass
Enable Secondary Constraint Pass
このチェックボックスを有効にすると、指定した Constraint Group 内のすべての拘束が別々に計算され、交互に残りの拘束に渡されるようになります。
このオプションの主な用途が2つあります。 1つ目の用途は、他の拘束ほど頻繁に計算する必要のない負荷の高い拘束タイプがいくつか存在するので、このオプションを有効にして Solve Frequency を低く設定することでパフォーマンを上げることができることです。 例えば、絹や綿織物といった曲げ剛性の低い高解像度の布に対するCloth Bend拘束がそうです。 布が伸縮しないように必ずすべてのパスでDistance拘束を計算する必要があります。 しかし、絹や綿織物は曲げ抵抗が非常に弱く皺が寄りやすいので、Bend拘束は負荷が高く、さほど強くする必要がありません。 Bend拘束をセカンダリパスとして計算すれば、パフォーマンスが大幅に向上します。 ただし、この方法は革などの硬い材質には実用的ではありません。
2つ目の用途は、拘束トポロジーの頻繁な変化を引き起こす拘束です。
このような場合では、ソルバに拘束の計算順を変更させてしまうので、残りの拘束でジッターが発生する可能性があります。
例を挙げると、四面体で表現された有機組織があって、そこに滑りを有効にしたStitch拘束が取り付けられているとします。
この滑りが拘束トポロジーの変化を引き起こすと、拘束の計算順が変わるので四面体に若干ジッターが起こり得ます。
Constraint Group を@type=ptprim
に設定し、 Solve Frequency を1に上げることでStitch拘束を別のパスに移動させると、同じ剛性を維持しつつも、
計算順の変更が原因による四面体のジッターは軽減されます。
Constraint Group
交互でセカンダリパスで計算される拘束グループ(s)。
このパラメータは標準のグループ構文に対応しているので、明示的なグループ名とad-hoc(一時的な)グループを含めることができ、
@type==bend
のように1つ以上の拘束タイプを指定することが多いです。
これらのグループに含まれていない拘束は通常通りプリマリパスで計算されます。
Solve Frequency
セカンダリパスを計算する頻度。 1に設定するとプライマリパスと同じ頻度でセカンダリパスが計算されるのに対して、0.25に設定するとプライマリパスの4パスおきに1回計算されます(4分の1の回数)。
Multi-Pass Solve
Enable Multi-Pass
Multi-Passオプションによって、特定の条件が満たされるまでサブステップを繰り返すことができます。 現在の条件は、無効化されたポイントが原因でジオメトリが引っかかり、無効化されていないポイントがストレッチを生成してしまう問題を修復するように設計されています。 コリジョンは常に拘束を未然に防ぐので、その結果として、布やヘアーがストレッチします。 自動的に無効化されたポイントに隣接したポイントは、過度なストレッチが検出されるとそれらのポイント自体が無効化されます。 この解決ステップは、ジオメトリが解放されるまで繰り返されます。
Maximum Passes
サブステップを繰り返す最大回数。 無効化する必要のある新しいポイントがなくなれば、そのプロセスが即座に停止します。
Disable Stretch Ratio
ポイントが無効化の対象となる判断をするための解決ステップの終わりにおけるストレッチ量。 これは、失敗したコリジョンがVellumオブジェクトを引き離している時期を検出するためにあります。 無効化するポイントを増やして失敗させることで、通常ではオブジェクトを解放することができるので、ストレッチを続けるよりも良い結果が得られます。
Collisions
Disable Failed Collisions
ポイントがポストコリジョンパスの後で干渉を解決できなかった場合、そのポイントにdisabledフラグを立てて、そのポイントとそれが属するプリミティブが干渉なしで移動できるように許可します。
Reset Collided Points
disabledフラグのポイントは、絡みついた状況において何も干渉を検出しなくなっていて、且つ、disabledフラグのないポイントと繋がっている場合、そのポイント自体が再度アクティブになります。 disabledフラグのポイントは、あらかじめジオメトリの正しい側に移動させておくことが望ましいです。
Initialize Overlap Distances
overlap_self
とoverlap_external
のアトリビュートを作成し、ソルバの初期セットアップを評価できるように初期化します。
これらのアトリビュートが既に存在していれば、初期化されないことに注意してください。 モデリング操作が原因で設定が変わってしまった場合、それらのアトリビュートを削除しておいた方が良いでしょう。
Update Overlap Distances
overlap_self
とoverlap_external
を更新して、現在の設定を反映します。
これらの値は、この処理によって減少していくだけなので、初期化する時は大きな初期値を設定してください。
Tetrahedral Open Faces
これを設定すると、四面体メッシュの非共有フェースから干渉ジオメトリが生成されるようになります。 場合によっては、三角形シェルと四面体メッシュの両方を使って、この処理を冗長化したいことがあります。
Motion
Max Acceleration
色々な加速度制限オプションを使うことで、シミュレーションが非現実的なフォースの追従にあまりこだわらないようにさせることができます。 加速度制限オプションを使わないと、大きなエネルギースパイクが発生してしまうことがあります。
Fallback to First Order Integration on Collision
ポイントが Max Acceleration を超過すると、鋭くて不連続な干渉の信号が出ていれば、2次予測が誤って、跳ね返りの形式で間違った動きを追加してしまうことが多いです。 この場合では、影響を受けるポイントに対しては、1次の積分に戻されます。
Note
GrainパーティクルとFluidパーティクルは、衝突の場合だけでなく、1次の積分へのフォールバックでも考慮されます。 このコントロールはシミュレーションを落ち着かせてパーティクルが迷子になるのを回避するのに役立つと同時に、 Grainや流体の動きの全体的な跳ね具合を緩めることができます。 Max Acceleration を上げることで、その跳ね具合を戻すことができます。
Limit Acceleration in Velocity Update
パーティクルのVelocityがダイナミクスの何かの結果として変更可能な量を制限します。 これは、なにか瞬間的な動きが大きなフォースとして認識されないのを回避することができるので、 パーティクルが遠くに飛んでいってしまわないようにするのに役立ちます。
Limit Displacement on Collision
衝突を解決する時に、その衝突補正が加速度の量よりも大きくパーティクルを動かしてしまう場合に、その効果を制限します。 モデルの一部が布にひっかかって、ありえないような形で布を引っ張ってしまう時は、潔く失敗するのが望ましいです。
Disable Broken Welds
接合が切断された時、2つの新しいポイントが隣接した状態から動き始めます。
切断を発動させたものが原因でサーフェスが自然な感じに離れない場合、衝突検出を発動してサーフェスを押し離すため、
切断が発生した時に爆発のような動きを招きます。
このオプションは、ポイントの接合を解除した時にそれらのポイントが自己干渉しないようにdisableself
アトリビュートを設定します。
ただし、これによって、層になった布が自己貫通を引き起こしてしまうことに注意してください。
Normalize Stress
時間と共に応力計算を正規化するので、 Substeps パラメータを上げるほど計算結果の精度が良くなります。
Breaking Frequency
接合と拘束が切断ポイントに到達したかどうかをテストする回数。 値が大きいほど、計算精度が良くなりますが、切断された拘束のトポロジーの変化量に応じて計算が遅くなってしまいます。
Never
切断のテストをしません。
Per Frame
サブステップ数に関係なくフレーム毎に1回だけチェックします。
Per Substep
サブステップ毎にチェックします。
Sliding Method
Attach to Geometry または Stitch Points の拘束を滑らせた時に、ターゲットジオメトリ上の次に近い位置を検索する際に使用されるメソッド。 Closest Point は、単に投影した滑り位置からターゲットジオメトリ上の一番近いポイントを選択します。 この手法は高速ですが、ターゲットジオメトリ内の凹部分では不適切に飛んでしまう可能性があります。 Traverse Polygons は、現在のターゲットプリミティブから開始して継続して外側へ走査して周辺のプリミティブ上で一番近いポイントを検索します。 この手法は処理が重いですが、凹状のターゲットジオメトリを上手く制御することができます。 Traverse Triangles (Optimized) は、改良された凹部分の制御において以前のオプションと同様ですが、特別な三角形距離関数を使用しているので何倍も高速化されています。しかし、三角形で構成されたターゲットジオメトリにしか使用することができません。
Tip
四角形で構成されたターゲットジオメトリは、Divide SOPを使って三角形化することができます。
Sleeping
Enable Auto Sleep
十分長い間ほぼ静止状態になっているパーティクルのstopped
アトリビュートを1
に設定して、そのパーティクルをスリープ状態にします。
Pinnedビジュアライゼーションを使用すれば、どのポイントがスリープ状態になっているのか視覚化することができます。
Velocity Threshold
パーティクルがスリープ状態となる条件として必要となるパーティクルの移動速度。
この速度以下で移動している時間はdeactivation_time
アトリビュートに累積されます。
この速度を超えると、deactivation_time
アトリビュートは0にリセットされます。
Sleep Delay
パーティクルがスリープ状態となる条件として必要となる Velocity Threshold 以下でパーティクルが移動している秒数。
再度パーティクルを目覚めさせる方法に関しては、POP Awaken DOPを参照してください。
Grain Collisions
Vellum Grainsは、別々のコリジョンパスを使用して、Grain間の干渉を扱います。
以下のパラメータは、その挙動を制御します。
これらのパラメータは、POP Grainsのパラメータと同様です。
Search Scale
Potential intersection particles are any within this scaled distance
of the average of the two particles pscale
attribute. This
is an overestimate because usually collisions are not updated
during the constraint iterations, so it needs to record not
just the currently colliding particles, but those that may
start to collide due to the earlier iterations.
This also effects the range of the attraction force in clumping.
Max Neighbors
The maximum number of particles that will be considered when searching for potential collisions over the substep. Capping this is useful to avoid excessive computations, if too many particles are created at one spot. This parameter is ignored if OpenCL Neighbor Search is enabled, in which case all neighbors are considered within the radius determined by Search Scale.
Assume Uniform Radius
The pscale
attribute is used to determine the radius of each
particle. If all particles have the same radius, faster acceleration
structures can be used to find neighbors.
Ignore Neighbors in Same Piece
Ignore any neighbors that have the same non-negative value for the piece
point attribute.
This option can be enabled to create separate clusters of grains that only interact
with other clusters, often in conjunction with a Shape Match constraint to give
rigid behavior. The VDB To Spheres SOP can be a good method
for filling objects with overlapping grains.
Enable Constraint Averaging
When multiple particles collide at the same time, this will average out all the constraints. This is effective in ensuring stability, but does not preserver momentum. Thus, when combined with internal forces, such as clumping, bunches of particles may accelerate under their own force.
Repulsion Weight
A weighting for how much the particle collision forces are weighted. A value of zero will disable particle collision.
Scale with the repulsionweight
point attribute.
Repulsion
How strongly particles are kept apart. Higher values result in less bouncy repulsion.
Attraction Weight
A weighting for how much the particles will naturally stick together when close. A value of zero will disable particle clumping.
Scale with the attractionweight
point attribute.
Attraction
How strongly nearby particles stick to each other. Higher values result in a less bouncy adhesion.
Enable Mass Shock
Artificially scales the mass of particles according to their position with respect to gravity. By making particles higher up lighter, stacks of particles will converge faster and be more stable.
Shock Scaling Power
The amount of scaling to perform. Higher numbers increase the contrast between successive particles. A value of 0 will cause no ratio between particles, a value of 1 a 15% ratio between two particles stacked vertically.
Too high a number makes higher particles extremely light and destabilizes the system.
Shock Axis
The up-vector used to define a gradient of particle masses.
Should be in the direction of stacking, so usually is opposite to that of gravity.
Fluids
Vellum流体は、密度拘束を使用して流体を非圧縮性に維持し、さらに、粘度と表面張力を備えます。
phase
アトリビュートが0でないパーティクルが流体と見なされます。
Kernel Radius Scale
The radius of the kernel used for fluid calculations. In general the default value of 4 is recommended, but it can be increased or reduced slightly for different effects. In particular this value can effect the size of the drops created by surface tension, with larger values creating larger drops and fewer individual particles. Note that larger values will result in slower simulation and more memory usage for neighbor lists. Also values much below 3 or above 5 can lead to instability.
Viscosity
The viscosity of the fluid. Low values for viscosity help keep the simulation stable,
while higher values can simulate liquids like honey. A per-particle viscosity
attribute
can be used to multiply this value for variable viscosity. Fluid particles will different
phase
values will be solved independently for viscosity, allowing multi-phase fluid
behavior.
SDF Collision Viscosity
The viscosity of the fluid in contact with an SDF collision. This value is currently only used when Enable Minimal Solver is enabled and the solver has a ground plane or SDF collision object.
Viscosity Solver
The type of viscosity solve to perform. Explicit is fast but can be unstable for high particle counts, high viscosity, or low substeps. Implicit is slower but remains stable even for higher particle counts and viscosity values.
Viscosity Tolerance
The tolerance for the viscosity solve when using the Implicit solve. Lower values are more accurate at the cost of more iterations.
Max Viscosity Iterations
The maximum number of iterations for the Implicit viscosity solve.
Surface Tension
The surface tension of the fluid. Higher values for this setting reduce the curvature of the fluid
and cause it to form blobs. A per-particle surfacetension
attribute
can be used to multiply this value for variable surface tension. Fluid particles will different
phase
values will be solved independently for surface tension, allowing multi-phase fluid
behavior.
Spatial Sort Interval
Vellum fluids and grains perform many calculations involving nearby points. Generally performance is greatly improved by ensuring that points that are near other in 3D space are also near each other in memory. This option enables a spatial sort of the particles at the specified interval of frames.
Note
This sort will change the point numbers of the particles, so it can be useful to add an id
attribute before simulation.
Minimal Solver
Enable Minimal Solver
Vellum Brush SOPで使用されている制限付きバージョンのソルバを有効化します。
現在のところ、これは制限事項があるのでブラシでのみ使用されている内部機能です。
布や他のソフトボディを非常に高速に静的ジオメトリと相互作用させることができます。
しかし、これはアニメーションするコリジョンまたは何かのアニメーション入力には動作しません。
このオプションはエンドユーザーには推奨していません。
OpenCL
Kernel Options
カーネルに対して必要なコンパイルフラグを指定します。
Note
Apple OSX OpenCLコンパイラは、カーネルオプション間にはスペースを1個だけにする必要があります!
Finish Kernels
Finish Kernelsが無効な時、次のソルバに進む前にOpenCLカーネルが完了するのを待たなくなります。 これによって、ソルバの結果が実際に必要となるまで、バックグラウンドでOpenCLカーネルを走らせることができます。 デバッグまたはタイミングを単純化したいのであれば、正しい箇所でエラーが検出できるようにカーネルが終了するのを待った方が便利です。
Recompile Kernels
ディスクからカーネルを読み込む時、計算毎にそのカーネルを再生成されないようにそのカーネルをキャッシュ化します。 これを有効にすると、強制的にそのカーネルを再ロードして再コンパイルします。 これは、変更されたコードを#includeファイルが参照していたり、そのカーネルファイルを外部テキストエディタで変更した場合に役立ちます。
これは、プロトタイプが完了した時には必ず無効にしてください。
OpenCL Graph Coloring
グラフカラーを実行した時、高速な並列のOpenCLアルゴリズムが使用されます。 残念なことに、これは四面体メッシュに対する他の計算と比べて10倍以上のメモリを必要とします。 そのため、その計算を収めるほどのメモリのないシステムでは、そのカラーパスは成功しません。 これを無効にすることで、すべてのグラフカラーを強制的に遅い逐次手法で処理させて、実際の計算にかかるRAMを抑えることができます。
OpenCL Neighbor Search
OpenCLを使用してGrainsとFluidsの近傍検索を実行します。これは、CPUよりも高速ですが少しGPUメモリを多く消費します。
Examples
VellumSmokeSheet Example for Vellum Solver dynamics node
このサンプルでは、VellumシミュレーションとSmokeシミュレーションを組み合わせて、風に揺れるシーツを作成する方法を説明しています。
See also |