On this page |
概要 ¶
上手くMuscleシミュレーションを行なうには、適切なジオメトリの準備が重要になります。 このページでは、シミュレーションの前にMuscleジオメトリとボーンジオメトリを準備する方法について説明します。 正しいジオメトリフォーマットと適切な命名規則を使用し、セットアップを検証することで、よくあるシミュレーションの問題を回避することができます。 これらの手順は必須ではありませんが、より良い結果を得るために推奨されています。
ジオメトリ要件 ¶
ジオメトリの準備には、Muscleジオメトリとボーンジオメトリの両方が含まれます。
Muscleジオメトリとボーンジオメトリを準備するにあたり、注意点がいくつかあります:
-
すべてのMuscleサーフェスは、交差のないマニフォールド(多様体)のポリゴンジオメトリである必要があります。
-
入力ジオメトリのプリミティブタイプはパックプリミティブではなく、
ポリゴンフェース
である必要があります。パックプリミティブの場合は必ずアンパックし、必要に応じて変換してください。 -
ジオメトリがHoudiniのメートル単位系に準拠していることを確認します。
-
適切な物理シミュレーションにするには、モデルは現実世界のスケールである必要があります。
-
センチメートルからメートルへ:均一スケールを
0.01
に設定したTransform SOPを使用します。エクスポート前に、スケールを
100
に設定した別のTransform SOPを使用して、元のサイズに戻すことを忘れないでください。
-
Muscleジオメトリのみ ¶
-
各Muscleコンポーネントには、識別できるように一意の
muscle_id
アトリビュート値が必要です。
ボーンジオメトリのみ ¶
ボーンサーフェスはMuscleアタッチメントの土台となるため、特別な準備が必要です:
-
衝突の処理を向上させるため、ジオメトリの解像度はなるべく低くする必要があります。
-
小さい隙間や穴を可能な限り除去します。
-
静止位置を参照するために、有効な
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同士およびMuscleとボーンの関係を正確に確立するのが困難になります。
-
拘束が不安定になり、Muscleの挙動が不正確になります。また個々のMuscleプロパティを効果的に制御できなくなります。
Muscle IDとTポーズの設定方法の詳細は、Muscles & TissueのワークフローのMuscleパスセクションまたはMuscleマスタークラスのジオメトリ準備のビデオを参照してください。
Muscle ID ¶
muscle_id
アトリビュートは、個々のMuscleを識別します。
各Muscleとボーンピースには、固有な識別用のアトリビュートが必要です。
このアトリビュートは2通りの方法で作成できます:
1. 既存の名前から
-
Attribute Copy SOPを使用して、既存の
name
アトリビュートをコピーします。 -
ソースアトリビュートを
name
(または既存のアトリビュート)に設定します。 -
両方の入力を同じ上のノードに接続します。
-
ターゲットアトリビュートを
muscle_id
に設定します。-
または、
Attribute Rename SOPを使用します。
-
2.
Muscle ID SOPを使用する
-
ビューポートステートに入り、個別にMuscleを選択します。
-
命名規則に従って適切な接頭辞を割り当てます:
-
左側のMucleにはL_接頭辞
-
右側のMucleにはR_接頭辞
-
中央のMucleにはC_接頭辞
-
Bone IDアトリビュート ¶
Muscleと同様、ボーンにも識別用のアトリビュートが必要です。
現時点では、ボーンに既定のアトリビュート名はありません。
しかし、bone_id
が推奨されており、将来的には標準化される可能性があります:
-
利用可能な場合は既存の名前をコピーします。
-
新しいBone IDを作成するには
Muscle ID SOPを使用します。
-
名前は分かりやすく、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
となるように設定します。