| On this page |
いくつかのOtis Muscle and Tissueレシピをタブメニューから使用することができます。これらは、シェルフツールのようなもので、学習目的でノードのネットワークを配置して接続し、プロセスを再生できます。 Test Geometry: Otto Muscle and Tissue Simulation レシピでは、OttoのMuscleジオメトリや、別の二足歩行キャラクタに転送したOttoのMuscleを使用して、最小限のセットアップで筋肉や皮下組織のシミュレーションを開始できます。
このレシピは、Ottoの筋肉用にカスタマイズされています。筋肉は、Ottoの筋肉に付属している独自のaxialrampアトリビュートと、同じmuscle_idアトリビュート値を持っていることを前提としています。キャラクタの筋肉がOttoの筋肉から転送されていない場合は、代わりにより汎用的なOtis Muscle and Tissue Simulationレシピを出発点として使用することをお勧めします。
Note
このレシピは、Otis Solver SOP(SOPで動作するFEMのようなMuscle & Tssue Solver)を使用します。Otis SolverはHoudini Coreで使用 できない ため、このレシピもCoreでは使用できません。このレシピを含む.hipファイルはHoudini Coreで開くことができますが、Otis Solverのみ、パラメータがグレーアウトしています。
Note
このレシピでは、キャラクタはオブジェクトレベルではなく、ジオメトリコンテキストに配置するようにしてください。
重要なノード ¶
入力 ¶
INPUT_MUSCLES, INPUT_BONES, REST_JOINTS, ANIM_JOINTS, REST_SKIN
これらは、Test Geometry: Otto SOPからアンパックされ、その後これらのNull入力に渡される、必要なメッシュです。このセットアップは、Test Geometry: Otto Muscle Transferレシピを簡単に入力に接続して、独自の二足歩行キャラクタを使用できるように設計されています。独自の転送したキャラクタと置き換えるには、このサンプルの学習と使用を参照してください。
Muscles ¶
muscle_setup
これは、以下を行なうノードを含むサブネットワークです:
-
Muscleサーフェスジオメトリを四面体メッシュに変換します。
-
Ottoから独自の
axialrampアトリビュートを使用して、繊維方向を作成します。 -
Muscleの物理プロパティと拘束プロパティを構成し、Otto固有の
muscle_idMusclesについては上書きします。 -
Otto固有のカスタムアトリビュートを作成して、筋肉の集合体に単一の緊張ラインを作成します。
詳細は、Muscleのセットアップを参照してください。
muscle_id
このMuscle ID SOPでは、
muscle_idアトリビュートはOttoに付属するpathアトリビュートから初期化されます。必要なのはpathを/で区切ったときの最後から2番目の要素なので、 Extract Element from Path Attribute は有効で、 Element Pos from End は1に設定されています。
musclesolidify4
このMuscle Solidify SOPは、Muscleサーフェスジオメトリを四面体メッシュに変換します。四面体のサイズは、 Remesh Surfaces フォルダの Min Size および Max Size によって決定されます。形状を正確に表現することと、シミュレーション時間の短縮につながる軽量化との間で、良いバランスが確保されるように構成されます。
fibergroom_from_axialramp, fibergroom_override_transVAbs
これらのFiber Groom SOPは、繊維方向アトリビュート
materialWを作成します。1つ目は、Ottoの筋肉に付属しているaxialrampアトリビュートを使用して、背中の筋肉のような複雑な形状でも、正確な繊維方向にします。2つ目は、より単純な繊維方向にした方が良い結果となった特定の1つの筋肉に対して、その繊維方向を上書きします。
musclepropertiesotis1
このMuscle Properties Otis SOPは、キャラクタのMuscleに 物理プロパティ を割り当てます。これにより、
Otis Solverで筋肉がどのようにシミュレーションされるかが決まります。これらの物理プロパティは、筋肉の形状変化に対する受容性や抵抗性、筋肉のどの領域が腱なのか、筋肉の剛性や柔軟性、筋肉が収縮した時の膨らみ具合など、Muscleの挙動を制御します。注意すべきプロパティの上書きの1つが、腹部の臓器に対するものです。筋肉というよりも臓器らしい挙動になるように、 Shape Stiffness 、 Mass Density 、 Fiber Strength がかなり低い値で適用されます。
muscleconstraintpropertiesotis1
このMuscle Constraint Properties Otis SOPは、Muscle Otis拘束の複数のレイヤを駆動するアトリビュートを作成および変更します。上書きは主に、Muscle EndおよびMuscle Glueマスクを微調整するためのものです。
tensionendmask_for_tensionlines
このAttribute Combine SOPは、次のノードで
muscleendmaskが編集される前に、tensionendmaskと呼ばれるmuscleendmaskのコピーを作成します。tensionendmaskアトリビュートは、tension_linesで使用されます。
zero_out_ends_in_glue_region
このAttribute Combine SOPは、
muscleendmaskアトリビュートからmuscletomuscleglueアトリビュートを減算します。一部のOttoの筋肉、特に腹部と斜筋については、筋肉の腱の領域を筋肉の両端にすべきではありません。それらが付着するボーンがなく、代わりにmuscletomuscleglueを使用して隣接する筋肉に付着しているからです。
tension_id
ここでは、Muscle ID SOPを使用して、
tension_linesで使用される、tension_idという名前のIDアトリビュートを作成します。それを既存のmuscle_idアトリビュートから初期化し、すべてのL_rectusAbdominis_* IDの名前をL_rectusAbdominisという単一のIDに変更して、緊張ラインが1本だけ作成されるようにします。このように処理するのは、個別のIDのままにしておくと、その領域には緊張ラインを正確に変形するボーンがないからです。L_oblique_* Muscleでも同様の処理が行なわれます。
Muscleのアクティブ化 ¶
tension_lines
このMuscle Auto Tension Lines SOPは、上で定義されたそれぞれの
tension_id値に、自動的に緊張ラインを作成します。また、muscleendmaskではなく、Otto用に定義されたカスタムアトリビュートtensionendmaskを使用して、緊張ラインの両端の場所を決定します。
activate
この
Muscle Tension Lines Activate SOPのActivationパラメータは、Otto用にカスタマイズされています。このノードでは、静止ポーズでも緊張ラインをアクティブ化できることに注目してください。立っているときでも、一部の筋肉が使用されているからです。
flex
Muscle Flex SOPは、カスタムセットアップがほとんど必要ありません。 Attribute to Match パラメータは
tension_linesノードの Muscle ID Attribute と一致するように、tension_idに設定されます。また Blend パラメータは、シミュレーションの開始時に筋肉が完全に弛緩するようにキーが打たれます。一部の緊張ラインは静止ポーズでアクティブ化されているからです。
詳細は、筋緊張ラインと屈曲を参照してください。
FasciaまたはTissue ¶
fascia_setup, tissue_setup
これら2つのサブネットワークには、Fascia(筋膜)またはTissue(皮下組織)をセットアップおよび構成するためのノードが含まれています。
詳細は、Fascia & Tissueのセットアップを参照してください。
tissuesolidifyotis1
このTissue Solidify Otis SOPは、FasciaとTissueのセットアップのサブネットワークである
fascia_setup, tissue_setupの両方にあります。外部サーフェスメッシュから四面体化したボリュームを生成して、軟組織シミュレーション用の解剖学的なジオメトリを準備します。このとき、必要に応じて、構造コンテキストとして内部のMuscleやボーンのジオメトリを使用します。fascia_setupで、 Method パラメータは Fascia に設定され、tissue_setupでは Fused Tissue and Core に設定されています。またFasciaの解像度がTissueの解像度より低いのは、FasciaはMuscleを所定の位置に保持するためにのみ必要されるのに対し、Tissueは最終的にSkin出力を駆動する必要があるためです。
tissuepropertiesotis1
このTissue Properties Otis SOPは、FasciaとTissueのセットアップのサブネットワークである
fascia_setup, tissue_setupの両方にあります。Tissueのシミュレーションの挙動を制御する物理プロパティと拘束アトリビュートを、アクティブ化して割り当てます。 Tissue Solid Layer タブがFasciaに影響しないのは、Fasciaは Tissue Core Layer のみで構成されているからです。
switch_sim_tissue
このノードで、FasciaとTissueのシミュレーションの使用を切り替えることができます。セットアップを切り替える方法については、このサンプルの学習と使用を参照してください。
Otis構成とソルバ ¶
otisconfiguremuscleandtissue1
このOtis Configure Muscle and Tissue SOPは、シミュレーション前の最後の準備段階です。このノードは最終構成に向けて上流ノードからすべてのジオメトリとアトリビュートを収集し、入力アトリビュートから必要な拘束を作成して、それをすべてOtis Solverに送信します。
詳細は、Otis構成とシミュレーションのワークフローを参照してください。
otissolver1
このOtis Solver SOPは、四面体ソフトボディ拘束に特化したソルバです。この特定のタスクでは、Vellum Solverよりも高速かつ正確です。筋肉と皮下組織のシミュレーションにはこのノードが最適です。なお、このレシピでは、サブステップはファイルのフレームレートに依存しているため、デフォルトのFPS(24)では40サブステップで実行されますが、それより高いFPS、例えば60では16サブステップのみで実行されます。
スキンのポスト処理 ¶
deform_skin
このサブネットワークには、スキンのポスト処理のセットアップが含まれています。皮下組織を筋肉とともにシミュレーションする際に適用します。
詳細は、スキンのポスト処理を参照してください。
Note
このサブネットが適切に機能するように、switch_sim_tissueスイッチが1に設定されていることを確認してください。
cache11
このノードで、ポスト処理が高速化します。Otisシミュレーションをディスクにキャッシュ化した状態で、Displayフラグをこのノードに設定し、フレーム範囲を再生します。これにより、シミュレーションがメモリにキャッシュ化されます。
skindeform1
このSkin Deform SOPは、レンダリング用スキンアニメーションを1番目の入力、シミュレーションされたTissueの外部サーフェスを2番目の入力として受け取って、前者を後者で変形します。頭、手、足といったシミュレーションの影響を受けない領域は、
deform_skinサブネット内部で作成されるskinmaskアトリビュートによって、変形から除外されます。 Skin Sliding のトグルをオンにすると、シミュレーションのような結果を提供するQuasistatic(準静的)Skinスライディングが有効になります。
wrinkledeformer1, switch_add_wrinkles
スイッチが1に設定されているとき、このWrinkle Deformer SOPによってプロシージャルな皺が追加されます。下流の
deltamush_weak Delta Mush SOPで皺をプレビューしましょう。そうしないと、皺がきつくなりすぎてしまいます。カスタムアトリビュートを作成して、異なる領域の皺の見た目を制御できます。
deltamush_weak, deltamush_strong, blend_strong_deltamush
deltamush_weak Delta Mush SOPはキャラクタ全体に適用され、メッシュのあらゆる小規模な変形を修正するのに大変便利です。
blend_strong_deltamush Wrangleは、より強いdeltamush_strongをブレンドして、シミュレーションジオメトリとアニメーションジオメトリ間のトランジション領域(手首、足首、首の上部など)にのみ影響するようにします。
このサンプルの学習と使用 ¶
| To... | Do this |
|---|---|
|
Test Geometry: Otto Muscle Transferレシピを使用し、それをこのネットワークに接続する |
この2つのレシピは、互いに直接連携して動作します。筋肉の転送プロセスを完了させたら、ソースおよびターゲットアセットをこのレシピに直接供給することができます。
|
|
FasciaとTissueのセットアップを切り替える |
|
|
シミュレーションを使って、アニメーションされたスキンを変形する |
|
|
アニメーションをアニメーションキャッシュに置き換える |
|
|
異なる開始フレームを使用する |
|