Houdini 21.0 Muscles & Tissue

Vellum Muscles & Tissueの概要

On this page

Note

Vellum Muscles & Tissueシステムは、レガシーワークフローを使用します。簡略化されたワークフローとレシピのサンプルについては、Otis Muscles & Tissueシステムを参照してください。

主な概念

Vellum Muscles & Tissue システムを使って作業すると、キャラクタは 3つ の別々のシミュレーションパスを経て、最終的に変形されたレンダリング可能なサーフェスになります。各シミュレーションパスの最後に、ジオメトリキャッシュをディスクに保存した後にそのジオメトリキャッシュを次のパスに組み込むようにすることもできます。シミュレーションパスは、MusclesパスTissueパスSkinパスの3つで構成されています。 Vellum Muscles & Tissue シミュレーション生成工程の最終ステージでは、シミュレーションパスは不要で、むしろジオメトリデフォーマを使用してキャラクタの最終シミュレーションをレンダリング可能な高解像度メッシュに転送する必要があります。

各シミュレーションパスは以下の処理を行ないます:

  • 入力のソリッドソフトボディダイナミクスオブジェクト(四面体で構成されたオブジェクト)を操作し、それらのオブジェクト上で見つかったアトリビュートを解釈して、物理プロパティとVellum拘束を構成します。 Vellum Muscles & Tissue ワークフローの大部分は、最終的にソルバ内で拘束の作成を駆動するアトリビュートの制御だと考えることができます。

  • 前のパスの 出力入力 として使用するので、拘束先であり衝突をさせる静的ジオメトリにはアニメーションが付いています。例えば、最初のシミュレーションパスであるMuscleパスでは、拘束ジオメトリはアニメーションする解剖学的ボーンによって提供されます。このボーンアニメーションは、KineFXアニメーションやAlembicキャッシュなどのたくさんのソースから派生させることができます。ボーンアニメーションがどのように生成されたのかは関係ありません。唯一の必須条件は、アニメーション付きのボーンとともに、静的Tポーズのボーンが用意されていることだけです。すべてのMuscle & Tissueサーフェスは、ボーンの静的Tポーズを基準に作成する必要があります。

これらのパスでキャラクタを動かすと、 Vellum Muscles & Tissue システムに関して主に3つの概念に遭遇することでしょう:

シミュレーションジオメトリ

Muscle & Tissueシステムの入力ジオメトリの使い方

パスの必須条件

Muscleパス

  • Muscle Solidify SOPノードの必須条件:

    • 交差のないマニフォールド(多様体)のポリゴンMuscleサーフェス。

  • Muscle Solver Vellum SOPノードの必須条件:

    • 物理プロパティアトリビュートと拘束アトリビュートで構成されたソリッドMuscle。

    • アニメーションするボーンサーフェスジオメトリ。

Tissueパス

  • Tissue Solidify SOPノードの必須条件:

    • スキンサーフェス。

    • Muscleシミュレーションジオメトリキャッシュ。

    • アニメーションするボーンサーフェスジオメトリ。

    • (任意で)Coreサーフェス。

    • (任意で)Core減衰ポリライン。

  • Tissue Solver Vellum SOPノードの必須条件:

    • 物理プロパティアトリビュートと拘束アトリビュートで構成されたソリッドTissue。

    • 内包するMuscleとボーンのアニメーションを表現したアニメーションサーフェス。

Skinパス

  • Skin Solidify SOPノードの必須条件:

    • スキンサーフェス。

  • Skin Solver Vellum SOPノードの必須条件:

    • 物理プロパティアトリビュートと拘束アトリビュートで構成されたソリッドスキン。

    • 内包するTissueアニメーションを表現したアニメーションサーフェス。

パスレイヤ

各シミュレーションパスがソリッドソフトボディダイナミクスオブジェクト(四面体で構成されたオブジェクト)を操作するものの、結合されたポリゴンサーフェスも役割を果たします。例えば、Vellum Solverでスライディング拘束の効果を出すためには、ポリゴンサーフェスがアタッチメントターゲットとして必要です。この理由は、各ジオメトリレイヤには四面体とポリゴンサーフェス体の 両方 を格納するからです。

以下の Vellum Muscles & Tissue ソリッド化系ノードは、必要なプリミティブタイプを生成します:

Muscle & Tissueシステムのシミュレーションパスレイヤ

Muscleパス

Muscleは、入力のMuscleポリゴンサーフェスを四面体化することで生成され、繋がったピース毎に個々のMuscleが作成されます。Muscleを作成する処理では、繋がったピース毎に異なるIDを含んだmuscle_idアトリビュートが追加されます。重複したMuscleサーフェスが同じmuscle_id値を共有していれば、それらのサーフェスは結合されるものとして四面体化されます。重複したMuscleサーフェスが異なるmuscle_id値を持っていれば、それらのサーフェスは個別に四面体化され、重複したオブジェクトとして残ります。Muscle用ポリゴンサーフェスは、ソリッド化の工程で 作成されません 。代わりに、Muscle用ポリゴンサーフェスは、Vellumスライディング拘束で必要になった場合で のみ Muscle Solver Vellum SOPノード内でその場で作成されます。

Tissueパス

Tissueは、レイヤ化の手法で生成されます。おそらく Vellum Muscles & Tissue システムで最も複雑なオブジェクトであるTissueソリッドは、 2つの層 に分けられています。最も内側の組織層のことを Core と呼び、そのCoreを覆う層のことを単に Tissue と呼びます。ポリゴンサーフェスは、Core四面体とTissue四面体の両方を包んで作成されます。その結果として、Tissueパスは、Tissueサーフェス、Tissueソリッド、Coreサーフェス、Coreソリッドの 4つ の別々のジオメトリで構成されます。

このCoreはTissueをMuscleに取り付ける 仲介 の役割を果たします。つまり、CoreはMuscleとボーンに堅固に取り付け、Tissueのアタッチメントターゲットとして機能します。これは、TissueがCoreを介してMuscleとボーンに取り付けられることを意味します。さらにCoreには、Tissueジオメトリが(負圧を受けることで)Muscleとボーンの方に押されるようにするために、Tissueジオメトリに 内側への引っ張り を課すことによるスケーリングフォースに応答する機能があります。Tissueシミュレーション中のこの収縮/体積減少によって、Tissueは内側に引っ張られて、キャラクタのMuscle定義が作成されます。

Tissueの機能は、Muscleとボーンのアニメーションを包み込み、その中の動きをTissueサーフェスまで現すことです。TissueとCore/Muscle/ボーンへのアタッチメント拘束を変えて、Tissueソリッドの物理的な厚みと材料特性を変えれば、しっかりと馴染んだTissueと緩く垂れたぜい肉をうまく混在させることができます。

Skinパス

SkinパスはTissueパスの後の任意のパスです。SkinパスはTissueパスの後の任意のパスです。このSkin層はTissue層と同様に2つの構造で構築されます: 内側の四面体メッシュ(スキンソリッド)と外側の三角形化されたサーフェス(スキンサーフェス)。スキンの固体成分(スキンソリッド)は、形状の剛性や体積維持といった物理プロパティを伝達させることができるのに対して、ポリゴンサーフェス(スキンサーフェス)は伸縮抵抗に寄与して望ましい皺効果を得ることができます。

この追加の厚みでスキンを構築すると、Buckling(座屈)、Folding(折り畳み)、ダイナミクスエフェクトは、布の層というよりも、脂肪の表皮層のような挙動にすることができます。Skin層は、可変量の滑りありでTissueサーフェスに拘束されます。Skin層とTissue層の間のスライディングアタッチメントを強くしたり弱くすることで、Skin層に皺や折り目を露出させることができます。

アタッチメント(取り付け)

シミュレーション結果を微調整するとなった場合、各シミュレーションパスとそれに関連したアタッチメント拘束との関係を理解していることが大事です。複数のアタッチメント拘束は共存し、同じジオメトリに並行で影響を与えるので、シミュレーションコンテキスト毎にジオメトリに作用する各タイプの拘束について習熟していることが重要です。

Muscle & Tissueシステムのアタッチメント

Muscle拘束

Muscle拘束は、 Muscle Properties SOPノードと Muscle Constraint Properties Vellum SOPノードを使用して構成します。これらのノードは、入力としてソリッドMuscleジオメトリを受け取り、アトリビュートを追加/修正してから、そのデータを下流に渡します。

次に、 Muscle Vellum Solver SOPノードがそれらのアトリビュート値を以下の方法で物理プロパティまたはアタッチメント拘束のどちらかに適用します:

  • Muscle Endsとして指定された領域内にMuscleを堅固にボーンに取り付けます。

  • Muscle to Boneアタッチメントを持つように指定された領域内にバネのように滑るアタッチメントを使ってMuscleをボーンに取り付けます。

  • Muscle to Muscleアタッチメントを介して、バネのようなアタッチメントを使ってMuscleを他のMuscleに取り付けます。

  • Muscle Glueアタッチメントを持つように指定された領域内に堅固に滑らないアタッチメントを使ってMuscleを他のMuscleに取り付けます。

どの場合でも、 firm(堅固) アタッチメントとは、非常に強い剛性を持ち、静止位置から離そうとする力に抵抗することを意味します。他のアタッチメントは、剛性と減衰率の特性の影響を受けるので、応答性と弾力性のある挙動に影響を与えることができます。

Tissue拘束

Tissue拘束は、 Tissue Properties SOPノードを使用して構成します。このノードは、入力としてTissueジオメトリを受け取り、アトリビュートを追加/修正してから、そのデータを下流に渡します。次に、 Tissue Vellum Solver SOPノードがそれらのアトリビュート値を使用して必要な拘束を生成します。

Tissueは以下の方法で拘束されます:

  • すべてのCoreポイントは、Muscleとボーンの入力ジオメトリに堅固に取り付けられます。

  • Tissue層の内側サーフェス(Tissueソリッド)は、Core層の外側サーフェス(Coreサーフェス)に取り付けられます。

  • Tissue層の外側サーフェス(Tissueサーフェス)は、Muscleとボーンの入力ジオメトリにスライディングアタッチメントを使って取り付けられます。

  • 外側サーフェス(Tissueサーフェス)が遠くに滑って行かないようにする距離制限アタッチメントも存在します。

どの場合でも、 firm(堅固) アタッチメントとは、非常に強い剛性を持ち、静止位置から離そうとする力に抵抗することを意味します。他のアタッチメントは、剛性と減衰率の特性の影響を受けるので、応答性と弾力性のある挙動に影響を与えることができます。

Skin拘束

Skin拘束は、 Skin Properties SOPノードを使用して構成します。このノードは、入力としてスキンジオメトリを受け取り、アトリビュートを追加/修正してから、そのデータを下流に渡します。次に、 Skin Vellum Solver SOPノードがそれらのアトリビュート値を使用して必要な拘束を生成します。

Skinは以下の方法で拘束されます:

  • すべての内側スキン(Skinソリッド)のポイントは、入力のTissueジオメトリ(Tissueサーフェス)上に取り付けられて滑ります。

  • 外側スキン(Skinサーフェス)のポイントは、そのTissueジオメトリ(Tissueサーフェス)に対して別のスライディングアタッチメントを持ちます。

  • Skinサーフェスが遠くに滑って行かないようにする距離制限アタッチメントも存在します。

これら2つの異なるアタッチメント拘束は、Skinパスに対して個別にそれらの拘束を調整できるようにするために存在します。(Skinソリッドに対して)ソリッドポイントアタッチメントを使用することで、スキンとその大元のTissue間の接続を接着させたり緩めることができます。十分に緩ませると、そのスキンをまるでTissueを緩く覆い被せたジャケットのように見せることができます。(Skinサーフェスに対して)外側サーフェスアタッチメントを使用すると、外側ポリゴンをTissueに対してもっと密着させたり、隙間に深く押し付けることもできます。

フォース

筋繊維スケールフォース & 筋緊張

Muscleは、ローカル軸に沿って剛性フォースに反応して、筋肉の収縮に似た効果を生成します。私どもは、この振る舞いのことを Fiber Scaling(筋繊維スケーリング) と呼んでいます。デフォルトでMuscleには比較的強い体積維持剛性が割り当てられているので、筋繊維スケーリングがローカル軸に沿って適用されると、それらの軸と垂直な方向で体積維持による 膨張 が起こります。

筋繊維スケーリングの振る舞いに寄与する主なアトリビュートは以下の通りです:

  • muscletensionは、筋繊維スケーリングをMuscleに適用します。それによってMuscleが活発になり、 Muscle Flex SOPノードによってMuscleを アニメーション させることができます。

  • fiberstiffnessは、筋繊維スケールフォースや筋繊維スケーリングの 強度 を制御します。これは Muscle Properties SOPFiber Strengthパラメータを使って調整することができます。

  • materialWベクトルアトリビュートは、ローカル軸の向きを制御し、 Fiber Groom SOPノードを使用することで、その向きをインタラクティブに変更することができます。

  • fibervolumescaleは、筋繊維スケーリングの影響を受けた時の体積維持応答を大げさにします。これは Muscle Properties SOPFiber Volume Scaleパラメータを使って調整することができます。

Muscle flex & 筋肉の体積維持
Muscle四面体の繊維方向ベクトル
Muscle四面体の筋緊張、筋繊維スケールフォース、体積スケールフォース

筋繊維スケーリングはMuscleの領域別に可変します。 Muscle Properties SOPノードでtendon(腱)領域として指定された領域では Fiber Strength が弱くなり、Muscleの belly(腹) 領域は筋繊維スケールフォースから完全に影響を受けます。

Important Note

結局の所、筋繊維スケーリングの振る舞いの剛性と応答性は、 Muscle Properties SOP上の すべて の繊維系パラメータの組み合わせで制御されます。

体積のスケールまたは収縮

Tissue Properties SOPノードと Skin Properties SOPノードには、TissueとSkinの shrinkage(収縮) を制御するパラメータがあります。静止位置(tposeアトリビュート)では、Tissue、Core、Skinは、それぞれのジオメトリ内の各プリミティブに静止体積と静止形状を記録します。シミュレーションの間に、その静止構成を初期状態を基準に変更することができます。

静止形状と静止体積に対して スケール値 を使用することで、この静止構成を調整し、TissueとSkinが内部のMuscleオブジェクトとボーンオブジェクトの方へより密接に引っ張られる収縮包装の効果を生成することができます。Core、Tissueソリッド、Tissueサーフェス、Skinソリッド、Skinサーフェスの静止スケール間で相互作用のバランスを取ることで、 Vellum Muscles & Tissue シミュレーションで様々な異なるTissueの見た目を表現することができます。例えば、サーフェス三角形を拡大しつつTissue四面体を収縮させると、Tissueの表面に座屈を発生させることができます。

スライディング

アタッチメントスライディング 拘束を適用した場合、はるかに信頼性の高いシミュレーションを実現することができます。スライディング拘束を使用すると、サーフェスオブジェクトとMuscleオブジェクトを、初期状態を基準にアタッチメントのポイントを自由に滑らせつつ、内部ジオメトリに付着したままにすることができます。逆に言うと、滑りを強くすることで、あらゆる方向にだらける筋肉や、粘性のある流体のようにボーンからにじみ出る組織といった効果を生み出すこともできます。

Tissue Properties SOPノード上や Skin Properties SOPノード上にある Slide Rate パラメータと Slide Distance パラメータを使用して、TissueとSkinの外側サーフェス(TissueサーフェスとSkinサーフェス)の滑りを制御することができます。 Slide Rate パラメータは、ソルバの計算中のタイムステップ毎に再投影されるターゲット位置の寄与可能な変化量に影響を与えます。 Slide Rate パラメータの値を1.0に設定することで、ターゲットアタッチ位置の再投影がすべてのタイムステップで完全に更新させることができ、値を小数点値に設定すると、その割合でしか位置ベクトルが更新されなくなります。Vellumスライディング拘束に関する詳細は、スライディング拘束を参照してください。

ノード

Muscles & Tissue

基本

Musclesの扱い方

Musclesレシピ

レガシーMuscles(Vellum Solver)