Houdini 21.0 Muscles & Tissue

Muscle用ジオメトリの準備

On this page

概要

上手くMuscleシミュレーションを行なうには、適切なジオメトリの準備が重要になります。 このページでは、シミュレーションの前にMuscleジオメトリとボーンジオメトリを準備する方法について説明します。 正しいジオメトリフォーマットと適切な命名規則を使用し、セットアップを検証することで、よくあるシミュレーションの問題を回避することができます。 これらの手順のほとんどは必須ではありませんが、より良い結果を得るために推奨されています。

ジオメトリ要件

ジオメトリの準備には、Muscleジオメトリとボーンジオメトリの両方が含まれます。

Muscleジオメトリとボーンジオメトリを準備するにあたり、注意点がいくつかあります:

  • すべてのMuscleサーフェスは、交差のないマニフォールド(多様体)のポリゴンジオメトリである必要があります。

  • 入力ジオメトリのプリミティブタイプはパックプリミティブではなく、ポリゴンフェースである必要があります。パックプリミティブの場合は必ずアンパックし、必要に応じてPolygon Soup PrimitivesからPolygonsに変換してください。

  • 適切な物理シミュレーションにするには、モデルは現実世界のスケールである必要があります。

    • ジオメトリがHoudiniのメートル単位系に準拠していることを確認します。

    • センチメートルからメートルへスケールをかけるには:均一スケールを0.01に設定した Transform SOPを使用します。エクスポート前に、スケールを100に設定した別のTransform SOPを使用して、元のサイズに戻すことを忘れないでください。

Muscleジオメトリのみ

  • 各Muscleコンポーネントには、識別できるように一意のmuscle_idアトリビュート値が必要です。

ボーンジオメトリのみ

ボーンサーフェスはMuscleアタッチメントの土台となり、シミュレーションの動きを駆動させるため、特別な準備が必要です:

  • Otisシミュレーションでは、ボーンサーフェスは 三角形化されていなければなりません 。 静止ボーンに対してRemesh SOPを使用してから、Surface Deform SOPを使用してその静止ボーンをアニメーションボーンで変形させます。 ボーンキャプチャアトリビュートがあれば、代わりにBone Deform SOPを使用することができます。

  • 小さい隙間や穴を可能な限り除去します。

  • 静止位置を参照するために、有効なtposeアトリビュートが必要です。

  • bone_idなどの識別用の文字列アトリビュートは、Muscle to Bone拘束を指定するのに役立ちます。

Muscle IDとTポーズセットアップ

TポーズとMuscle IDは、HoudiniのMuscleシミュレーションシステムの基本を形成します。 Tポーズは、すべての拘束関係とアタッチメントポイントが確立される静止位置です。 muscle_idアトリビュートを使用すると、Muscleのプロパティ、拘束関係、対称的な挙動を個別に制御することができます。 これによって、各Muscleの物理的特性や相互作用をより正確にカスタマイズできるようになります。 適切なMuscle IDを設定することで、プロパティと拘束がグローバルに適用されるのではなく、特定のMuscleに正しく割り当てられるようになります。 これらのセットアップは両方ともシミュレーションの前に行なわれます。Muscle SolverはTポーズを使用して拘束を設定しますが、その際にアニメーションを一時的に削除し、ニュートラルな状態に戻します。

このセットアップは重要です。適切なTポーズとMuscle IDがないと、以下の問題が発生するからです:

  • Muscleアタッチメントの参照位置が安定せず、ターゲットプロパティの割り当てが困難になります。

  • Muscle Ends拘束を正確に確立するのが困難になります。

  • 拘束が不安定になり、Muscleの挙動が不正確になります。また個々のMuscleプロパティを効果的に制御できなくなります。

Muscle ID

muscle_idアトリビュートは、個々のMuscleを識別します。 各Muscleとボーンピースには、固有な識別用のアトリビュートが必要です。

このアトリビュートは2通りの方法で作成できます:

1. 既存の名前から

  1. Muscle ID SOPを使用します。

  2. Initialize from Input Attribute を有効にします。

  3. Input Attribute Name に既存のアトリビュート名を指定します。

  4. アトリビュートをそのまま使用するために、 Extract Element from Path Attribute を無効にします。

  5. パス形式のアトリビュート(ジオメトリの階層構造がアトリビュート値に含まれていて、/で区切られているもの)を使用している場合は、必ず Extract Element from Path Attribute を有効にしてください。 次に Element Pos from End を指定することで、最後のチャンク(0)、最後から2番目(1)などを取得することができます。

2. Muscle ID SOPを使用して手動で名前を付ける

  1. ビューポートステートに入り、個別にMuscleを選択します。

  2. 命名規則に従って適切な接頭辞を割り当てます:

    • 左側のMucleにはL_接頭辞

    • 右側のMucleにはR_接頭辞

    • 中央のMucleにはC_接頭辞

Bone IDアトリビュート

Muscleと同様、ボーンにも識別用のアトリビュートが必要です。 現時点では、ボーンに既定のアトリビュート名はありません。 Otisレシピは、簡略化のためにボーンにもmuscle_idを使用します。 ボーンのIDアトリビュートを作成するには:

  1. 既存の名前がある場合は、 Muscle ID SOPInitialize from Input Attribute を使用して、その既存の名前をコピーします。

  2. そうでない場合、 Muscle ID SOPを使用して、新しいボーンIDを作成します。

    • 名前は分かりやすく、Muscleの命名規則と一貫性のあるものにしてください。

MuscleのTポーズセットアップ

Muscle Solidify SOPは、MuscleジオメトリのTポーズを自動で作成することができます。 処理中に、Tポーズアトリビュートを生成し、モデルの姿勢を静止位置として格納します。 このノードはこの静止位置アトリビュートをtposeと名付け、すべてのMuscleの拘束計算と変形において、適切な静止位置が使用されるようにします。

ボーンのTポーズセットアップ

Muscleとは異なり、ボーンのTポーズは手動でセットアップする必要があります。 これを行なうには、ボーンジオメトリに対して Set T-Pose SOPを作成します。 このノードは、Muscleシステムが拘束の計算に使用する重要な静止位置情報を作成および格納します。 Tポーズアトリビュートは、ネットワークの早い段階で指定して、すべての下流ノードがこの参照位置にアクセスできるようにする必要があります。 Tポーズ値は、後続のすべてのMuscleアタッチメントと変形に影響するため、キャラクタの意図した静止位置を正確に表現していることを確認してください。 tposeアトリビュートの値を確認するには、アニメーションされたボーンジオメトリに Extract T-Pose SOPを一時的に配置します。 これによって、結果とTポーズが一致することを確認できます。

プリロール設定

セットアップにプリロールフェーズが必要な場合は、アニメーションボーンサーフェスに Muscle Preroll SOPを追加します。

このノードは、3つの重要なパラメータによって、静止ポーズとアニメーション間の遷移を管理します:

  • Initialization Frameは、ターゲットポーズとなるフレームを指定し、プリロールの遷移の終点を定めます。

  • Initial Holdパラメータは、遷移を開始する前にシステムがTポーズを維持する時間を決定します。これはフレーム番号に対応し、Tポーズが保持される最後のフレームになります。

  • Pre-roll Durationは、Tポーズと初期アニメーションポーズ間のブレンドの長さを制御し、ダイナミクスのスムーズな統合を可能にします。これはフレーム番号ではなく、フレーム数です。

  • プリロール後の出力アニメーションを入力アニメーションと一致させたい場合はInitial Hold + Pre-roll Duration +1 = Initialization Frameとなるように設定します。

Muscles & Tissue

基本

Musclesの扱い方

Musclesレシピ

レガシーMuscles(Vellum Solver)