On this page | |
Since | 19.0 |
Muscle Solver Vellumは、Vellum Solverパラメータと専用のMuscleシミュレーションコントロールを組み合わせたものです。 これらのパラメータを理解することが、目的のMuscleの挙動を得る上で重要です。
このノードは、以下を実行します:
-
Muscle Properties SOPノードで作成された物理特性の設定を、
Muscle Solidify SOPノードで生成されたジオメトリに適用します。
-
Muscle Constraints Properties Vellum SOPノードによって定義された一連の拘束を、
Muscle Solidify SOPノードによって生成されたジオメトリ上に作成します。
-
繊維(
Muscle Properties SOP)、収縮(
Muscle Flex SOP)、緊張ライン(
Muscle Tension Lines SOP)の設定を使用して、筋肉をアニメーションさせます。
-
組み込まれている
Vellum Solverを使用して、Muscleシミュレーションを計算します。
積分の方法 ¶
筋肉をシミュレーションする時、ソルバには、そのシミュレーション中にポイントをVelocityで積分するための方法が2つ用意されています。
First Order(1次積分) ¶
First Orderは、曲線運動が正しく予測されず、拘束投影によって減衰されてしまう時に役立ちます。 シミュレーション中に衝突するポイントは、自動的に1次積分に切り替わります。 これによって、衝突中の挙動がより予測可能になります。
Second Order(2次積分) ¶
Second Orderは、曲線運動を補填し、筋肉のより多くの運動エネルギーを維持するのに役立ちます。 これは、特に振り子のような運動を伴う状況において、よりリアルな筋肉の動きをシミュレーションするのに役立ちます。 ソルバがシミュレーション中に衝突を検知すると、自動的にFirst Order予測に切り替わります。
Note
たいていのシミュレーションでは、精度設定は32ビットのままで問題ありません。 キャラクタが原点から約1000メートル以上離れた場所に配置されている場合にのみ、64ビット精度に上げる必要があります。
パラメータ ¶
Simulation ¶
Reset Simulation
Muscleシミュレーションのキャッシュ全体をメモリからクリアします。
Start Frame
Muscleシミュレーションを開始するHoudiniプレイバー上のフレームを設定します。
このStart Frame
パラメータは、Muscleシミュレーションの開始フレームを決定します。
プロダクションのワークフローでは、グローバル変数を使用することで、パイプライン全体で一貫したショット管理が可能になります。
$FSTART
変数は、フレーム範囲の開始フレームを参照するのに対して、$RFSTART
変数はソルバ固有の開始フレームを参照します。
シミュレーションをセットアップする際は、開始フレームをアニメーションよりも前に設定することでプリロールを追加することを検討してください。
例えば、ショットがフレーム1001から始まる場合、ソルバをフレーム990から開始するように設定することで、適切な初期化が可能になります。
Tip
Global Animation設定のRestrict Playback Range
オプションを使用することで、$RFSTART
と$FSTART
を個別に設定することができます。
これにより、シミュレーションのタイミングを特定のワークフロー要件に適応させることができます。
その後は、$FSTART
をアニメーションの開始に合わせたまま、ビューポート内でプリロールを再生することができます。
Integration
First Order
(振り子のような)弧を描く動きでは、拘束予測がその予測を誤り、動きが減衰することがあります。そのような場合に、どのようにVelocityによってポイント位置を前へ前へと積分させていくかを決定します。
Second Order
1次予測を使ってポイントを積分します。1次予測は、過度の跳ね返りを回避します。ソルバがシミュレーション中に衝突を検出した場合、1次予測に戻されます。
Precision
Muscle Solver Vellum SOP ノードにアトリビュートを格納するのに使用される精度およびメモリ量を変更します。
Unchanged
入力によって決定されたストレージタイプを使用します。
32-bit
筋肉アトリビュートのストレージタイプを、32ビット整数(4バイト)ストレージに設定します。
64-bit
筋肉アトリビュートのストレージタイプを、64ビット整数(8バイト)ストレージに設定します。
Subsample Bone Animation
有効にすると、入力ボーンは、計算中に補間される連続したフレーム内の位置(例えば、フレーム5.0、5.1、5.2などでのボーン位置)を持つことができます。 無効にすると、ボーンの動きは整数フレーム位置でしか評価されません。
-
ボーンアニメーションをファイルキャッシュから読み込む場合、ディスクからは離散したキャッシュジオメトリしか読み込まれません。このオプションは、ソルバが線形補間を使用してその離散したキャッシュジオメトリ間を補間するようにします。
このパラメータの挙動は入力フォーマットに依存します
-
Alembicファイル: 自動的にサブフレームを読み込みます。
-
外部のタイムブレンド: 追加でサブサンプリングを制御します。
Vellum Time Scale
Vellum Solverの実効時間のスケール乗数を指定します。この値を使用すると、バレットタイムのようなエフェクトを作成できます。 Vellum Solverの物理計算が、Houdiniのプレイバーとは異なる時間軸で実行されます。値を2に設定すると、筋肉が2倍速で落下し、0.1に設定すると、0.1倍速で落下するようになります。
このパラメータのデフォルトは1.0で、シミュレーションの挙動に影響します。 1.0以下の値を設定するとスローモーション効果が得られ、1.0以上の値を設定すると高速移動が強調されます。 500あたりの非常に高い値は、通常、2次的な動きが不要な機械学習やスキニング適用のために使用します。
Note
Vellum Time Scaleを上げると、筋肉がよりボーンアニメーションに追従するようになりますが、代わりに Velocity Damping パラメータを調整することを推奨します。 この手法によって、筋肉の挙動を自然な感じに維持しつつ、より物理的に正しい結果が得られます。
Vellum Substeps
ここで指定したサブステップの数で、シミュレーションの各フレームを分割します。 高速移動での衝突や急激なフォースに対しては、サブステップを上げる必要があります。 例えば、サブステップを2に設定すると、ソルバは、各フレームの開始と中間で拘束と物理特性を計算するようになります。 Muscle-to-Bone付着拘束または不均一変形で問題が発生した場合は、 Constraint Iterations を調整するよりも、このサブステップ数を上げることを推奨します。
Tip
筋肉の伸縮が非常に大きい場合は、サブステップを上げて試すことをお勧めします。
Vellum Collision Passes
シミュレーションで、ここで指定した回数だけ衝突が実行されます。 衝突は、拘束のイテレーションと交互に行なわれます。衝突は処理が重いので、大きい数を設定しないようにすることをお勧めします。
Collision Passes を10に設定すれば、ほとんどのケースでうまくいきますが、それよりも substeps の使用をお勧めします。 品質を上げるには、Substepsを使う方が効果的です。
Constraint Iterations
各サブステップ内で、ここで指定した回数だけ拘束が実行されます。 剛性の高い拘束を収束させるには、この反復回数を上げる必要があります。
Constraint Iterationsは、収束が早いガウス・ザイデル法を使用します。 しかし、剛性が高すぎたり、不可能な構成が原因で完全に収束しなかった場合、目立つエラーとして崩れた三角形のようなものが残ってしまいます。
Smoothing Iterations
各サブステップ内で、ここで指定した回数だけスムージングが実行されます。
Smoothing Iterationsは、収束は遅いものの、残ったエラーが穏やかに広がるヤコビ法を使用しています。 Smoothing Iterations のデフォルトの10回でもエラーは滑らかになりますが、 Constraint Iterations の値が非常に大きい場合は、回数をさらに増やす必要があります。
Post Collision Passes
ここで指定した回数だけ、最終ラウンドの衝突検出が実行されます。
Polish Passes
オンの時、追加で実行するコライダーペアパスの数を指定します。 衝突パスでは、完全に解決できない衝突ペアが存在する可能性があります。 これらの未解決の衝突ペアがすべて解決されるまで、これらのパスは実行されます。 これらのパスはアクティブなコライダーでのみ実行され、新しい衝突検索は実行されないため、この処理は非常に軽いです。
以下のパラメータは、様々な筋肉拘束を有効および無効にすることができます。 これらのパラメータは、Muscleシミュレーションの挙動のトラブルシューティングを行なう際にも役立ちます。
以下のアトリビュートは、拘束を構築する際に静止位置として使用するアトリビュートをソルバに伝えます。
通常では、tpose
アトリビュートはシミュレーションジオメトリと2番目の入力ジオメトリの両方に存在します。
Muscle T-Pose Attribute
静止位置または Tポーズ として使用するアトリビュートを指定します。 このアトリビュートはシミュレーションジオメトリ(Input 1)で見つけることができます。
Bone T-Pose Attribute
静止位置または Tポーズ として使用するアトリビュートを指定します。 このアトリビュートは2番目の入力ジオメトリ(Input 2)で見つけることができます。
以下のパラメータでは、収縮、隆起、形状変化といった筋肉のアクションをアニメーション(トリガー)するアトリビュートを指定します。
筋肉が収縮すると、3つのことが起こります:
1. 収縮(Contraction)_ によって、筋肉が繊維の方向に沿って引っ張られ、筋肉自体が圧迫されます。
2. 筋肉は(四面体で構成された)ソリッドのため、体積を維持しようと、側面に沿って 隆起(Bulge) します。
3. 弛緩している筋肉にはないディテールを収縮している筋肉に追加したい場合は、収縮時の筋肉に使用したい 形状(Shape) のターゲットを明確にします。例えば、収縮した筋肉に溝や窪みを出したい場合などです。
色々なアトリビュートを使用して筋肉のアクションを駆動したい場合は、これらのパラメータを使用して、新しいアトリビュートを指定します。 例えば、 Bulge のアトリビュートを置き換えると、Muscles Solverがその新しいアトリビュートを探して、筋肉の隆起のアクションをアニメーションさせます。 これらのアトリビュートを変更することで、形状、隆起反応(体積の増加)、繊維の収縮に個別に影響を与えることができます。
Contraction
筋肉の 収縮 を駆動するアトリビュートを指定します。デフォルトでは、このアトリビュートはmuscletension
です。
Muscle Flex SOPノードを使用することで、時間の経過と共に
Muscle Tension Lineで駆動される
muscletension
値をオーバーライドすることができます。
このパラメータは、繊維強度設定に接続し、繊維方向ベクトルに沿った筋肉の変形を決めます。
収縮の挙動は、自動緊張ライン計算とMuscle Flex SOPによる手動アニメーションの両方に反応します。
Bulge
筋肉の 隆起 を駆動するアトリビュートを指定します。デフォルトでは、このアトリビュートはmuscletension
です。
独自 の Bulge アトリビュートを指定した場合、
Muscle Flex SOPノードを使用することで、その指定したアトリビュートをアニメーションさせて、時間の経過と共に筋肉の
fibervolumescale
(0 = Fiber Volume Scale なし、1 = Fiber Volume Scaleパラメータの現行値の100%)値を駆動させることができます。
Shape
筋肉の 形状 のターゲットを駆動するアトリビュートを指定します。デフォルトでは、このアトリビュートはmuscletension
です。
独自 の Shape アトリビュートを指定した場合、
Muscle Flex SOPノードを使用することで、その指定したアトリビュートをアニメーションさせて、時間の経過と共に筋肉の
targetshape
(0 = 100%のtpose
、1 = 100%のtargetshape
)値を駆動させることができます。
Gravity
筋肉に適用する均一な重力を指定します。
Drag
ポイントが風のフォースに抵抗する度合いを指定します。
Velocity Damping
動くボーン(Input 2のアニメーションされたボーンサーフェス)の速度が、筋肉に 影響を与える かどうかを決定します。減衰は引き算処理です。 Velocity Damping 値が高い場合、筋肉が取得する速度は 減り 、値が低い場合は転送される速度(エネルギー)の量が 増え ます。
Note
筋肉の速度は、
Muscle Constraint Properties Vellum SOPノードにあるMuscles to Bone拘束のVelocity Blendパラメータで制御されます。
シミュレーションキャッシュには、進捗バーを通じてキャッシュの使用状況を表示する視覚的なインジケータが備わっています。
このインジケータを監視することで、シミュレーションがメモリ内にどれだけ残っているのか確認することができます。
Cache Memory
パラメータは、フレーム範囲要件と利用可能なシステムリソースに基づいて調整することができます。
シミュレーションが長くなる場合、キャッシュサイズとシステムパフォーマンスのバランスを取る必要があります。
Cache Simulation
オンの時、筋肉のシミュレーションはメモリにキャッシュされます。
Allow Caching To Disk
オンの時、スキンのシミュレーションはディスクにキャッシュされます。
Cache Memory (MB)
メモリキャッシュの最大サイズを設定します。
Collisions ¶
以下のパラメータは、衝突がソルバによってどのように処理されるのかを決定します。 ソルバは、筋肉とボーンサーフェスの起こり得る交差をすべて評価するので、衝突処理はシミュレーションにおいて負荷のかかる部分となってしまいます。 衝突パフォーマンスを最適化するには、入力のボーンジオメトリのポイント数が最小限になるように努めてください。 ソルバには、最終的な衝突解決のためのPolish(洗練)パスが用意されています。 このPolishパスは、起こり得る衝突ペアすべてをチェックするのではなくて、検出された交点のみを処理することで、より効率的に動作します。
Self Collisions
オンの時、筋肉ジオメトリの自己衝突が有効になります。自己衝突では、筋肉は貫通せず、筋肉そのものの上に折り畳まれます。例えば、舌を丸めるような感じです。
Muscle to Muscle Collisions
オンの時、筋肉ソリッド間の衝突が有効になります。
Ignore Collisions with Muscle Interior Points
有効にすると、外側ポイントのみが衝突を検出します。 無効にすると、すべての筋肉ポイントが衝突を検出します。 これを有効にすべき例を挙げると、FrankenMuscleが意図的にボーンを包みこんでいる時がそうです。
Bone Collisions
オンの時、筋肉ソリッドとボーンサーフェス間の衝突が有効になります。
Bone Collision Radius
この値は、筋肉ジオメトリの各ポイントで、筋肉が衝突するボーンの周囲に存在するバブル領域(フォースフィールドなど)が、どのワールド空間単位の距離で存在するかを指定します。
Tip
適切にサーフェスを分けつつ、Bone Collision Radius
パラメータをできるだけ小さく維持してください。
この半径を大きくしても、必ずしも拘束が改善されるわけでなく、計算時間が長くなります。
Note
筋肉ごと の衝突半径は、
Muscle Constraint Properties Vellum SOPノードのCollision Scaleパラメータで制御されます。
Enable Ground Plane
オンの時、衝突地面を作成します。これは、大きく柔らかい尾を床に打ち付けるクリーチャを作成する時に便利です。 平らな面では不十分な場合は、External Colliderパラメータを使って筋肉の外部コライダーオブジェクトを用います。
Ground Position
衝突地面のXYZワールドポジションを指定して、オフセットできます。
Enable Multi-Pass
オンの時、特定の条件が満たされるまで、サブステップを繰り返すことができます。 現在の条件は、無効化されたポイントが原因でジオメトリが引っかかり、無効化されてないポイントがストレッチを生成することで生じる問題を修正するように設計されています。 衝突は常に拘束を未然に防ぐので、結果としてスキンがストレッチします。 自動的に無効化されたポイントに隣接したポイントも、過度なストレッチが検出されると、同じように無効化されます。 この解決ステップは、ジオメトリが解放されるまで繰り返されます。
Maximum Passes
ここで指定した回数を最大として、サブステップを繰り返します。無効化する必要のあるポイントがなくなると、プロセスは即座に停止します。
Disable Stretch Ratio
ポイントが無効化の対象であるかを判断をするために使用する、解決ステップの終わりにおけるストレッチの量。 これは、失敗した衝突が筋肉を引き離している時に、それを検出するためのものです。 無効化するポイントを増やすことに失敗すると、通常は筋肉が解放され、ストレッチを続けるよりも良い結果が得られます。
以下のパラメータは、外部コライダーとの衝突が、ソルバによってどのように処理されるかを決定します。
Guides ¶
以下のパラメータは、 Muscles Solver Vellum SOP ビューポートステートで、選択した筋肉の物理特性、フォース、拘束を可視化します。 このガイドによって、セットアップ時およびトラブルシューティング時に拘束リレーションシップと物理特性に関する視覚的なフィードバックが得られますが、パフォーマンスに影響します。 シミュレーション計算中は、最適な計算速度を確保するために、これらのガイドはオフにすべきです。 特定の拘束の挙動を分析したり、変形の問題を解決する場合にのみ、ガイドをオンにしてください。
Warning
ガイドをオンにすると、処理が非常に重くなります。 例えば、 Attachment Constraints の可視化によって、ソルバのスピードが大幅に下がります。 ガイドの使用は控えめにしましょう。
Muscle Coloring
ビューポートステートで可視化する筋肉の物理特性、フォース、拘束を決定します。
Off
ビューポートステートで何も可視化されません。
Muscle Ends
筋肉のEnd Regionsの領域を、カラフルなヒートマップとして可視化します。
Muscle to Bone
Muscle to Bone拘束によって拘束された筋肉の領域を、カラフルなヒートマップとして可視化します。
Muscle Tension
個々の筋肉によって使用される筋肉の緊張の量を、ボーンアニメーション中フレーム単位で可視化します。
Tendon Mask
筋肉のTendon Mask Radiusの領域を、赤の筋肉の上に白の領域として可視化します。
Fiber Direction
オンの時、繊維の方向のベクトル線がビューポートステート内の筋肉に表示されます。
Display Bones
オンの時、アニメーションされたボーンサーフェスが、ビューポートステート内でガイドジオメトリとして表示されます。
Bone Color
アニメーションされたボーンサーフェスのガイドジオメトリが、ビューポートステートに表示されるときの色を設定します。
オンの時、有効化されたAttachment拘束がビューポートステート内で可視化されます。
Point Radius
Muscle Ends や Collision Radius などに使用される、ポイントベースの可視化した球のサイズを制御します。
Muscle To Muscle
オンの時、Muscle to Muscle拘束の取り付けを筋肉間の接続線として可視化します。
Muscle To Muscle Color
Muscle to Muscle拘束の接続線の色を指定します。
Muscle Ends
オンの時、Muscle Ends拘束が影響を与える筋肉のサーフェス上のポイントを、小さい球として可視化します。
Muscle Ends Color
Muscle Ends拘束のポイントの球の色を指定します。
Muscle to Bone
オンの時、Muscle to Bone拘束の取り付けを筋肉とボーン間の接続線として可視化します。
Muscle To Bone Color
Muscle to Bone拘束の接続線の色を指定します。
Muscle Glue
オンの時、Muscle Glue拘束の取り付けを筋肉間の接続線として可視化します。
Muscle Glue Color
Muscle Glue拘束の接続線の色を指定します。
Collision Geometry
外部コライダーをビューポートで可視化します。
Collision Geometry Color
外部コライダーの可視化の色を指定します。
Collision Radius
筋肉の周囲の衝突半径の領域を、筋肉サーフェス上のポイントの周囲に一連の球として可視化します。
Disabled Collisions
すべての無効化された外部コライダーを可視化します。
入力 ¶
Input 1
筋肉。筋肉のmuscles_ids
、プロパティ、拘束、繊維ベクトル、autoflex_ids
、muscletension
を含む四面体メッシュ。
Input 2
ボーン。アニメーションされたポリゴンボーンサーフェス。
Input 3
アクティベーションアトリビュート参照。オプションの収縮参照プリミティブ。
例えば、このソルバのネットワークに
Muscle Flex SOPノードをコピーし、
muscletension
を使用する代わりに、そのノードを使用して形状や隆起アトリビュートをアニメーションできます。
出力 ¶
Output 1
解決された筋肉。Muscleシミュレーションのポイントトランスフォームデータ。
See also |