| Since | 21.0 |
Otis Solverは、四面体ソフトボディ拘束に特化したソルバであり、この特定のタスクにおいてはVellum Solverよりも高速かつ高精度です。
これは、Muscle&Tissueのシミュレーションに最適です。
このソルバは、GPU上で動作するよう最適化されており、高いサブステップ数でもパフォーマンス低下はほとんど生じません。
これは、Vellumワークフローの一部を活用しており、シミュレーションモデルはVellum Constraints SOPで作成されます。
ただし、サポートされている拘束タイプは限られており、 Tetrahedral Stretch 、 Pin 、 Stitch などが該当します。
Vellumとは異なり、ソルバの入力は、ジオメトリ用と拘束用の2種類しかありません。 現在のところ、衝突ジオメトリは、ピン留めされたシミュレーションジオメトリでなければなりません。
このソルバは、DOPネットワークで動作する Dynamic モードと、純粋なSOPベース計算で時間依存でない Quasistatic モードで動作します。
Note
このソルバはSOPノードであるものの、Houdini Coreでは 利用不可 です。
とはいえ、このノードを含んだ.hipファイルはHoudini Coreで開くことは可能であり、このノードのパラメータはグレーアウトになります。
Tip
Otis Muscle and Tissue Configure SOPは、すべての拘束を自動で作成し、Otis Solverに接続することができます。
Otis Muscles & Tissueワークフローの詳細は、Muscles & Tissueの紹介を参照してください。
パラメータ ¶
Solver ¶
Time Scale
Otis Solverの実効時間をスケールします。 これを使用することで、バレットタイムのような効果を出すことができて、Houdiniのプレイバーとは異なる時間レートでOtis Solverの物理計算が実行されます。 値を2にすると、物体が2倍速で落下するようになり、0.1にすると、0.1倍速で遅くなります。
Substeps
各フレームをこのサブステップの数で分割します。 高速移動する衝突オブジェクトまたは急なフォースには、サブステップを上げる必要があります。 Otis SolverはOpenCLベースであり、通常ではフレーム間隔でターゲットジオメトリをインポートするだけなので、 Substeps を上げても他のソルバに比べて負荷が小さくなるはずです。
Iterations
各サブステップ内で材料計算がこの回数だけ実行されます。 剛性の高い材料ほど、収束させるのに多くの反復回数が必要になります。
Collisions ¶
Enable Collisions
衝突検出を行なうかどうかを制御します。
Ground Plane
シミュレーションに地面を設定するかどうかを制御します。
Ground Origin
地面の中心位置。
Ground Normal
地面の法線方向。
デフォルト値の<0, 1, 0>は、法線が+Y軸方向を向き、地面がXZ平面となることを意味します。
Collision Frequency
ソルバによる衝突検出の頻度を制御します。
衝突は材料計算では常に考慮されますが、それらの衝突の実際の位置および関与するオブジェクトの更新は、この頻度で行なわれます。
例えば、 Iterations パラメータが20、 Collision Frequency パラメータが0.25に設定されている場合、各サブステップにおいて、20回の材料反復の間に5回の衝突検出処理が挿入されます。
Advanced ¶
Triangle Group
衝突検出に使用されるシミュレーションオブジェクト内の三角形を指定するプリミティブグループ。 このグループは必ず指定してください。
Intersecting Tetrahedra
シミュレーションオブジェクトを構成したポイントと四面体との衝突検出を実行します。 Triangle Group 内の三角形の一部であるポイントのみが衝突判定の対象となります。
Tetrahedron Group
Intersecting Tetrahedra が有効な場合、衝突検出に使用されるシミュレーションオブジェクト内の四面体を指定するプリミティブグループ。
Ignore Collisions with Same Name or Piece
空っぽでない同じnameまたはマイナスでないpieceのPointアトリビュートを持ったポイントとの衝突を無視します。
Collision Stiffness
物体を離すために衝突に適用される剛性。 この値は、一般的には平均的な材料剛性より若干高く設定するべきです。 ただし、 Adaptive Collision Stiffness が有効な場合は、約10分の1に低く設定すると良いでしょう。
Adaptive Collision Stiffness
貫通状態にあるポイントに対して衝突剛性を徐々に増加させて衝突を解消します。 これを有効にして Collision Stiffness を下げると、より滑らかな衝突が得られるようになります。
Forces ¶
Gravity
適用する均一な重力。
Velocity Damping
シミュレーション中のVelocityに直接適用される減衰。 Velocityはこの量で直接スケールされ、急な動きが素早く減衰するようになります。
Static Threshold
静止摩擦を適用する閾値。 接線方向のVelocityと法線方向の力積の比率がこれより小さい場合、その接線方向のVelocityは摩擦によって完全に除去されます。
Dynamic Scale
静止摩擦の閾値が失敗した場合、これは、動摩擦において接線方向のVelocityを減少させる割合を制御します。
Simulation ¶
Reset Simulation
シミュレーションキャッシュをクリアし、シミュレーションを最初から開始します。
Cache Simulation
シミュレーションをメモリ内にキャッシュ化するかどうかを制御します。
Cache Memory (MB)
メモリキャッシュの最大サイズ。
Enable Automatic Resimulation
DOPシミュレーション内のどれかのパラメータが変更された時、または、参照しているどれかの外部ノードが変更された時、 シミュレーションのキャッシュが無効とマークされます。 このパラメータを有効にすると、次回から、再生バーをシミュレーション時間0まで移動させると、キャッシュがクリアされ、最初のシミュレーションタイムステップが再計算されます。 シミュレーション時間0の時にキャッシュが無効だった場合、即座に初期状態が再計算されます。 現行時間が0を越えている場合、直近のタイムステップが再クックされ、その現行時間を越えたキャッシュはクリアされます。 しかし、それ以前のすべてのタイムステップは、無効としてマークされるだけで、そのまま残されます。 このパラメータが無効の場合、キャッシュはまったく同様に無効としてマークされるものの、キャッシュが自動的にクリアされることはありません。 このモードでシミュレーションを再クックするには、このパラメータダイアログまたはビューポートの上部にある Recook Simulation ボタンを使用する必要があります。
Simulation Type
シミュレーションのスタイル。
Quasistatic
入力から Target Geometry と Target Constraints で指定された状態までを解く準静的解法を、指定した Substeps 数だけ実行します。 このシミュレーションタイプでは、 Quasistatic Targets from Packed Primitives が有効な場合に追加モードが存在します。 このモードでは、各パックターゲットジオメトリは、ターゲットジオメトリの個別のポーズまたはフレームとして計算されます。 また、 Predictive Quasistatic を有効にすることで、このモードにおいて Velocity を予測値として使用することもできます。 通常は、ある程度の Velocity Damping も併せて設定します。
この解法モードは、完全にSOPで実装されており、クック後は時間依存でなくなります。
Dynamic
フレーム単位で実行される従来のDOPベースのシミュレーションを実行します。
Start Frame
Dynamic シミュレーションを開始するフレーム。
Intermediate Output
Quasistatic の解法は、複数のポーズを処理しますが、中間状態を可視化することができません。 このオプションは、その中間状態のジオメトリを出力することができます。
None
中間ジオメトリを出力しません。
Each Substep
サブステップ毎に中間ジオメトリを出力します。
Each Target Pose
ポーズ毎に中間ジオメトリを出力します。 このオプションは、 Quasistatic Targets from Packed Primitives が有効な場合に入力ポーズ毎に中間ファイルを出力するので非常に便利です。
Output Base Name
中間ファイルの出力に使用するベース名。
5桁のサブステップ番号またはポーズ番号が.bgeo.scに足されます。
Convergence Scale
ソルバ内で収束を高速化するためのスケール。 この値を大きくすると、より正確な剛性値を得るためにソルバの収束を早くすることができますが、設定値が高すぎると不安定になってしまいます。
Adaptive Stiffness
より柔らかい拘束と競合する堅い拘束タイプに対して剛性を適応的に上げることでソルバの収束を改善します。 現在のところ、これは四面体の体積拘束にのみ適用されます。
Double Precision Solve
材料計算を倍精度で実行します。 このオプションは、高性能なGPU上でも計算が重いですが、極小で堅い四面体を解く際の不安定性を回避することができます。
Target ¶
Target Geometry
シミュレーションメッシュ上のポイントを Pin to Target としてマークして、ターゲットアニメーションに追従させることができます。 デフォルトでは、このターゲットは1番目の入力となります。 しかし、場合によってはターゲットにするアニメーションが別のSOPノードに存在するため、それをここで指定すると良いでしょう。
Target Path
シミュレーションポイントをターゲットアニメーションに設定した際に参照するノードのパス。 これは、シミュレーションポイントと1対1で呼応している必要があります。
Target Constraints
Update Constraints from Target タブの特定のパラメータが有効な場合、ソルバは Target Constraints から拘束アトリビュートを直接更新します。 デフォルトでは、このターゲットは2番目の入力となります。 しかし、場合によってはターゲットにするアニメーションが別のSOPノードに存在するため、それをここで指定すると良いでしょう。
Target Constraints Path
シミュレーション拘束をターゲットアニメーションに設定した際に参照するノードのパス。 これは、シミュレーション拘束プリミティブと1対1で呼応している必要があります。
Import Target Geometry
ターゲットジオメトリの更新頻度。
Each Frame
フレーム間隔でターゲットジオメトリを更新して、サブステップで値を線形補間します。
Each Substep
各サブステップでターゲットジオメトリを更新します。 このオプションは、非線形なアニメーション入力に対して最も正確な入力を用意できるものの、サブステップ数が多い場合には計算負荷が大幅に高くなってしまいます。
Quasistatic Targets from Packed Primitives
有効にすると、 Quasistatic の解法は、各パックプリミティブを個別の入力ポーズとして処理します。 これによって、一連のポーズで定義可能な滑らかな方法で、初期状態からより極端なポーズへの滑らかな遷移が可能となります。 Target Constraint Method が SOP Path に設定されている場合、一連のポーズにおける拘束を変更するために、同じ数のパック拘束ジオメトリを用意することもできます。 例として、筋肉が曲がるとその筋肉は収縮します。
Predictive Quasistatic
Quasistatic Solve 内でVelocityを積分します。 このVelocityはポーズ間の予測値として使用することができ、計算されるジオメトリが入力ポーズをより正確に追跡することができます。
Damp Final Poses
Predictive Quasistatic の解法を実行する時、最終指定フレーム数にわたって Velocity Damping を1まで滑らかにスケールアップします。 これによって、 Quasistatic の解法における慣性運動を除去することができます。 通常では、最終パックプリミティブポーズは、このフレーム数の間も静止状態を維持する必要があります。
Update Constraints from Target ¶
Stiffness and Damping
Target Constraints からのstiffnessおよびdampingratioの値を使用して、シミュレーション拘束を更新します。
Rest Shape
Target Constraints からの減衰値(restlength、restvector、restmatrixのアトリビュートが存在すれば、それらを含みます)を使用して、シミュレーション拘束の静止形状を更新します。
Vellum Rest Blend SOPを使用することで、ターゲット拘束の静止形状アトリビュートを更新することができます。
Fiber Scale
Target Constraints からのfiberscale値を使用して、シミュレーション拘束を更新します。
これによって、筋収縮を模倣することができます。
| See also |