Houdini 19.5 キャラクタ KineFX

リターゲットの仕上げとクリーンアップ

On this page

ソースキャラクタとターゲットキャラクタ間の初期段階のアニメーションリターゲットのセットアップが完了したら、様々なテクニックを使用してそのリターゲットの結果を仕上げることができます。

例その1: 傾斜した肩の修正

この例では、FBIKソルバの計算時にclavicles(鎖骨)ジョイントがまったく拘束されていないのが原因で、キャラクタの肩が著しく傾斜しています。

例: 肩を落としたキャラクタ。Christophe Desse氏によるキャラクタモデル提供

この問題を解決するために、FBIKソルバの計算時にclavicles(鎖骨)ジョイントに拘束を追加する簡単な方法が2つあります:

テクニック1: clavicles(鎖骨)ジョイントをマッピングする

  1. リターゲットネットワーク内の Map Points SOPを選択します。

  2. Map Points SOPノードを選択して、マウスカーソルをビューポート内に移動させてからEnterを押します。

    これでMap Points操作 状態 になります。

  3. ソーススケルトン上のどれかの鎖骨ジョイントを⇧ Shiftクリックしてから、ターゲットスケルトン上のそれに呼応する鎖骨ジョイントを⇧ Shiftクリックします。

    ここでは、左側の鎖骨と右側の鎖骨の両方に対してジョイントペアを作成します。

    例: マッピングされた鎖骨ジョイントペア
  4. リターゲットネットワーク内の Joint Deform SOPノードを選択してからキャラクタのアニメーションを再生すると、FBIKソルバにその鎖骨ジョイントマッピングを追加した結果を確認することができます。

    例: キャラクタの肩のビフォー&アフター。Christophe Desse氏によるキャラクタモデル提供

テクニック2: ターゲットのclavicles(鎖骨)ジョイントの挙動を設定する

  1. Configure Joints SOPノードを配置します。

    この Configure Joints SOP は、ターゲットスケルトンの鎖骨ジョイントに制限を加えることができます。

  2. 以下の操作を行ないます:

    • Map Points SOPノードのターゲットスケルトン出力(1番目の出力)を Configure Joints SOP ノードのターゲットスケルトン入力(1番目の入力)に接続します。

    • Configure Joints SOP ノードのターゲットスケルトン出力(1番目の出力)を Full Body IK SOPノードのターゲットスケルトン入力(1番目の入力)に接続します。

    例: リターゲットネットワークの Configure Joints SOP ノード
  3. Configure Joints SOP ノードを選択して、パラメータエディタでそのノードのパラメータを表示します。

  4. Configurations マルチパラメータを使用して、新しいジョイント設定グループを作成します。

  5. Group パラメータの矢印選択アイコンをクリックして、ビューポート内でキャラクタの左右の鎖骨ジョイントを⇧ ShiftクリックしてからEnterを押します。

    それらの鎖骨ジョイントが Group フィールドに追加されます。

    例: Groupフィールドの鎖骨ジョイント
  6. Configure Joints SOP ノードが選択されている状態のまま、 Joint Deform SOPノードのディスプレイフラグを有効にします。

    これで Configure Joints SOP を調整する際にキャラクタスケルトンの変形を表示できるようになりました。

  7. Configure Joints SOP ノードのパラメータエディタに戻り、キャラクタの肩のロールがあなたの求めているルックになるまで Rotation Weights 値を調整します。

    例: Rotation Weightsパラメータ
    例: 鎖骨ジョイントのRotation Weightsを調整。Christophe Desse氏によるキャラクタモデル提供

    これによって、ターゲットスケルトンの鎖骨ジョイントに 回転制限 が加わったので、ターゲットの鎖骨ジョイントが元々のRest Pose回転の維持を試みるようになります。

  8. リターゲットネットワークの Joint Deform SOPノードを選択してから、キャラクタのアニメーションを再生すると、FBIKソルバに鎖骨ジョイントの回転制限が加わっていることが確認できます。

    例: FBIKソルバに鎖骨ジョイントの回転制限が加わったキャラクタ歩行アニメーション。Christophe Desse氏によるキャラクタモデル提供

例その2: リーチアニメーション(到達アニメーション)でキャラクタの足が地面から浮かないようにする

この例では、ターゲットスケルトンがそれよりもっと大きいソーススケルトンだと到達できる距離に到達できないことが原因でキャラクタの足が地面から浮いてしまっていますが、そのキャラクタの足を地面にしっかりと着地するようにさせたいです。

例: 地面から足が浮いたキャラクタ。Christophe Desse氏によるキャラクタモデル提供

この問題を解決するには、 Full Body IK Configure Targets SOPノードを使用して、ターゲットの足への影響力を強くして、移動オフセットをなくすことです。

テクニック: ターゲットの足への影響力を強くして、移動オフセットをなくす

  1. Full Body IK Configure Targets SOP ノードを配置します。

    Full Body IK Configure Targets SOP は、ターゲットの足への影響力を強くして、その足の移動オフセットをなくすことができます。

    Note

    すべてのFBIKターゲット設定パラメータと Compute Offsets パラメータは2つの異なるノードの場所にあります:

    • それらのパラメータが Full Body IK SOP ノードに埋め込まれています。

    • その Full Body IK SOP ノードから分離したパーツの Full Body IK Configure Targets SOP ノードにあります。 このようにパラメータを重複させているのは、単純に整理しやすくするためです。 この例では、 Full Body IK Configure Targets SOP ノードを使用してリターゲットネットワークでの組み込み方を見ていきます。

    Warning

    Full Body IK Configure Targets SOP ノードと Full Body IK SOP ノードの 両方 にターゲットの Configurations マルチパラメータが存在した場合、その設定がお互いに上書きされてしまう危険性があります。 例えば、両方のノード上で 足ジョイント のターゲットグループを設定すると、 Full Body IK SOP ノードの設定が Full Body IK Configure Targets SOP の設定を上書きします。

  2. 以下の操作を行ないます:

    • Map Points SOPノードの両方の出力を Full Body IK Configure Targets SOP ノードの両方の入力に接続します。

    • Full Body IK Configure Targets SOP ノードの両方の出力を Full Body IK SOPノードの両方の入力に接続します。

    例: リターゲットネットワークの Full Body IK Configure Targets SOP ノード
  3. Full Body IK Configure Targets SOP ノードを選択して、そのパラメータエディタで Offsets セクションを展開してから、 Compute Offsets有効 にします。

    この Compute Offsets パラメータは、このFBIKノード上でソーススケルトンとターゲットスケルトン間のオフセットを計算することを決めます。

    例: Compute Offsetsパラメータ
  4. Full Body IK SOP ノードを選択して、そのパラメータエディタで Offsets > Compute Offsets無効 にします。

    これで、すべてのオフセットが Full Body IK Configure Targets SOP ノードで計算されるようになりました。

    両方のノードで Compute Offsets有効 にする必要は ありません 。ネットワークではオフセット計算を1回実行するだけでよいです。

  5. 再度 Full Body IK Configure Targets SOP ノードを選択して、そのパラメータエディタで、 Configurations マルチパラメータを使用して、新しいターゲット設定グループを作成します。

    この Configurations マルチパラメータエントリーは、特定のグループのターゲットジョイントのウェイトとオフセットの挙動を定義します。

    例: Configurationsマルチパラメータ
  6. Group パラメータの矢印選択アイコンをクリックして、ビューポート内でキャラクタの左右の足ジョイントを⇧ ShiftクリックしてからEnterを押します。

    それらの足ジョイントの名前が Group パラメータフィールドに入ります。

    例: Groupパラメータフィールドの足ジョイント
  7. Weight の値を上げます。

    これは、ターゲットの足ジョイントに対する影響力を強くし、キャラクタの到達アニメーション中に足が地面に着地するように維持します。

    例: ターゲットの足ジョイントに対する影響力のウェイト

    例えば、私どものキャラクタだと Weight3.8 まで上げました。 これによって、ターゲットスケルトンはキャラクタを地面に引き戻すのに十分な影響力を得ることができます。

  8. Blend Offset Translates パラメータの値を下げます。

    例: ターゲットの足ジョイントに対する移動オフセット

    例えば、私どものキャラクタだと、 Blend Offset Translates0 まで下げました。 Rig Match Pose SOP ノードでキャラクタのソーススケルトンとターゲットスケルトンの足を見ると、それらの足の位置が大きく違っていることに気づくと思います。 Blend Offset Translates0 にすることで、その違いが無視され、ターゲットの足がソーススケルトンの足の位置に合うようになります。

    例: Rig Match Pose SOPでのソーススケルトンとターゲットスケルトンの足
  9. アニメーションを再生すると、ターゲットのウェイトと移動ブレンドを調整した結果が確認できます。

    例: キャラクタの足の配置の前と後。Christophe Desse氏によるキャラクタモデル提供

例その3: 指の細かい動きを転送する

FBIKは全体的なキネマティクスソルバなので、キャラクタの指ジョイントをFBIKリターゲットポイントマッピングに追加すると、指のアニメーションの効果がキャラクタの手だけでなく、キャラクタの他のボディにも影響を与えてしまいます。

例: 指ジョイントをFBIKソルバに追加した場合のキャラクタアニメーション。Christophe Desse氏によるキャラクタモデル提供

この問題を解決するには、 FK Transfer SOPノードを使用して、ソースの指のアニメーションをローカル空間でターゲットに転送することです。

テクニック: FK Transfer SOPを使用してキャラクタの指アニメーションをリターゲットし、それらの指の曲がり方を修正する

  1. Map Points SOPノードを配置します。

    この Map Points SOP ノードは、ソースとターゲットのジョイントペアの参照を作成し、それらの関連性をマッピングアトリビュートとして保存します。

  2. 以下の操作を行ないます:

    • FBIK Map Points SOP ノードの両方の出力を配置したばかりのその新しいFK Map Points SOP ノードの両方の入力に接続します。

    • そのFK Map Points SOP ノードの両方の出力を Full Body IK SOPノードの両方の入力に接続します。

    例: リターゲットネットワークのFK Map Points SOPノード
  3. FK Map Points SOP ノードを選択して、そのパラメータエディタの Mapping Attribute Name フィールドにmapping_fkとタイプします。

    これによって、このノードのポイントマッピングが(既にmappingアトリビュートを使用している)FBIKソルバ用ではなくて、 FK Transfer 用として指定されます。

    例: FK Map Points SOP用のマッピングアトリビュート名
  4. マウスカーソルをビューポート内に移動させてからEnterを押します。

    これでMap Points操作 状態 になります。

  5. ソーススケルトンのどれかの手ジョイントを⇧ Shiftクリックしてから、ターケットスケルトンのそれに呼応する手ジョイントを⇧ Shiftクリックします。

    ここでは、左手ジョイントと右手ジョイントの両方に対してジョイントペアを作成します。

    このような左右の選択を 指先 毎に繰り返します。

    すると、あなたが作成したすべてのポイントマッピングが Map Points SOP パラメータにリストされます。

    例: FK Map Points SOPの手動によるポイントマッピング
  6. パラメータエディタ で、 Auto Map Inline Points パラメータを 有効 にします。

    例: Auto Map Inline Pointsパラメータ

    手ジョイントと指先ジョイント間のすべての指ジョイントが自動的にマッピングされ、ビューポート内には、それらのポイントペアマッピングが 黒の破線 で示されます。

    例: ビューポートでの自動マッピングされた指ポイント
  7. FK Transfer SOP ノードを配置します。

    FK Transfer SOP ノードは、特定のジョイントまたはジョイントグループに対して、ソースアニメーションとRest Pose間のローカル空間の差分をコピーすることができます。

  8. 以下の操作を行ないます:

    • Full Body IK SOP ノードの両方の出力を FK Transfer SOP ノードの両方の入力に接続します。

    • FK Transfer SOP ノードのターゲットスケルトン出力(1番目の出力)を Joint Deform SOPノードの変形ポイントトランスフォーム入力(3番目の入力)に接続します。

    例: リターゲットネットワークのFK Transfer SOPノード
  9. FK Transfer SOP ノードを選択して、そのパラメータエディタで以下の操作を行ないます:

    • Group パラメータの矢印選択アイコンをクリックして、ビューポート内で手ジョイントとすべての指ジョイントを⇧ Shiftクリックしてから、Enterを押します。

      手ジョイントと指ジョイントすべてが Group フィールドに追加されます。

      例: Groupフィールドの手ジョイントと指ジョイント
    • Mapping Attribute Name フィールドにmapping_fkとタイプします。

      例: Mapping Attribute Nameフィールドで指定されたマッピングアトリビュート

      これで、この FK Transfer SOP ノードは、新しく作成したFK Map Points SOP のポイントマッピングを使用するようになります。

    • Snap Orientation to Nearest Axes有効 にします。

      例: Snap Orientation to Nearest Axesパラメータ

      これによって、 FK Transfer SOP は、転送を実行する前に指ジョイント間の向きのオフセット角度を計算する時にそのトランスフォームに初期スナップを実行するようになります。 その結果、手の指を曲げる動きが改善されるはずです。

      Note

      Snap Orientation to Nearest Axes の効果は、ソースとターゲットの入力が どれだけ上手く マッチングされているか次第です。

  10. Rig Pose SOPノードを配置します。

    指がアニメーションで少し反り返っているので、 Rig Pose SOP ノードを使用していくつかFKキーを追加して、この指の曲がり過ぎた動きを修正する必要があります。

  11. 以下の操作を行ないます:

    • Full Body IK SOP ノードのソーススケルトン出力(2番目の出力)を Rig Pose SOP ノードの入力に接続します。

    • Rig Pose SOP ノードの出力を Joint Deform SOPノードのアニメーションポーズ入力(3番目の入力)に接続します。

    例: リターゲットネットワークのRig Pose SOPノード
  12. Rig Pose SOP ノードを選択して、マウスカーソルをビューポート内に移動させてからEnterを押します。

    これでRig Pose操作 状態 になります。

  13. 指先ジョイントを選択して、指が最も上側に曲がる時点までアニメーションをスクラブして、その指の動きに関与している指ジョイントを下側に回転させてから、その新しい位置でキーを打ちます。

    これによって、指の曲がり過ぎた動きが軽減されるはずです。

  14. キャラクタのアニメーションを再生すると、指の動きとその指の曲げが改善されているのを確認できます。

    例: キャラクタの最終的な指アニメーション。Christophe Desse氏によるキャラクタモデル提供

例その4: 動く台の上でキャラクタがバランスを保っているように見せる

この例では、キャラクタが動く台の上に立ちつつ自身でバランスを保っているように見せるために、キャラクタに質量とバランス感覚があるかのような挙動をさせたいです。

例: 重心を持たないキャラクタ

このような挙動を作成するには、Physical FBIKソルバタイプの Center of Mass パラメータを使用します。

テクニック: 重心を使ってキャラクタがバランスを保って動きに反応できるようにする

  1. 以下の操作を行ないます:

    • Configure Joints SOPノードを配置します。このノードでは重心の機能をセットアップすることができます。

    • Rig Pose SOPノードを配置します。 このノードでは、キャラクタのジョイントにポーズを付けると同時に重心のセットアップをすることができるので、セットアップ段階でキャラクタの動きの効果を確認することができます。

    • KineFXキャラクタインポートノードのアニメーションポーズ出力(3番目の出力)を Rig Pose SOP ノードの入力に接続します。

    • Rig Pose SOP ノードの出力を Configure Joints SOP ノードの入力に接続します。

    例: ネットワークのConfigure Joints SOPノード
  2. Configure Joints SOP を選択して、そのパラメータエディタで、 Center Of Mass セクションを展開します。

    例: Center of Massパラメータ
  3. Center Of Mass セクションの Auto-Compute Joint Local Centers of Mass パラメータと Add Point at Center of Mass パラメータを有効にします。

    例: Center of Massチェックボックス

    これは、重心を表現した新しいポイントをスケルトンに追加します。

    例: Center of Massポイントのスケルトンへの影響
  4. 重心用のポイントドライバを作成するために Delete Joints SOP ノードを配置します。

  5. Configure Joints SOP ノードの出力を Delete Joints SOP ノードの入力に接続します。

    例: ネットワークのDelete Joints SOPノード
  6. 以下の操作を行ないます:

    • Delete Joints SOP を選択します。

    • Delete Joints SOP のパラメータエディタで、 Group パラメータの矢印選択アイコンをクリックします。

    • ビューポート内で、重心ポイントと左右の足ジョイントを⇧ Shiftクリックしてから、Enterを押します。

      例: ビューポート内で選択した重心ポイントと左右の足ジョイント

      重心ポイントと左右の足ジョイントの名前が Group フィールドに入ります。

      例: Groupフィールドの重心ポイントと左右の足ジョイント
  7. Operation ドロップダウンメニューから Delete Non-Selected を選択します。

    例: Delete Non-Selectedパラメータ

    これで、あなたが作成したポイントドライバをビューポートに表示することができました。 これらのポイントは、重心の動きを駆動させるのに役立ちます。

    例: ビューポート内のポイントドライバ
  8. Full Body IK SOP ノードを配置します。

  9. 以下の操作を行ないます:

    • Configure Joints SOP ノードの出力を Full Body IK SOP ノードのターゲットスケルトン入力(1番目の入力)に接続します。

    • Delete Points SOP ノードの出力を Full Body IK SOP ノードのソーススケルトン入力(2番目の入力)に接続します。

    • Delete Points SOP ノードと Full Body IK SOP ノードの間に台を動かすTransformノードを接続します。

    • Full Body IK SOP のターゲットスケルトン出力(1番目の出力)を Joint Deform SOP ノードのアニメーションポーズ入力(3番目の入力)に接続します。

    例: ネットワーク内のFull Body IK SOPノード
  10. Full Body IK SOP ノードを選択して、そのパラメータエディタで以下の操作を行ないます:

    • Add Center of Mass Target有効 にします。

      例: Add Center of Mass Targetパラメータ
    • Map Using ドロップダウンリストから Match By Attribute を選択します。

      例: Match By Attributeパラメータ
  11. Configurations マルチパラメータを追加して以下の操作を行ないます:

    • Group パラメータの矢印選択アイコンをクリックします。

    • ビューポート内で、左右の足ジョイントを⇧ Shiftクリックしてから、Enterを押します。

    左右の足ジョイントの名前が Group フィールドに入ります。

    例: Groupフィールドの足ジョイント名
  12. Configurations マルチパラメータの Priority1 に上げます。

    例: Priorityパラメータ

    このソルバは、まず最初に足ジョイントのトランスフォームを達成させた後に、残りのボディのジョイントトランスフォームを見始めるようになります。

    これは、足ジョイントを安定させ、それらのジョイントを台の上に着地させた状態に維持するのに役立ちます。

    台が動いても、キャラクタはバランスを保とうと努力しているのが分かります。

    例: 台の上でバランスを保っているキャラクタ。Christophe Desse氏によるキャラクタモデル提供

    しかし、少しジッタリングしているようにも見えるかもしれません。 これは、異なるPriorityを扱う時や重心ターゲットを扱う時によくあることです。

  13. このジッタリングを解消するために、Physical FBIKソルバではIterationsの回数が多い方が望ましいことから、 Iterations150 まで上げます。

    例: Iterationsパラメータ

    これによって、キャラクタがバランスを保つ動きが非常に納得のいく見た目になり始めます。

    しかし、腕と足が少し硬いように見えます。 これを解消するには、肩ジョイントと膝ジョイントに少し柔らさかを追加します。

  14. Configure Joints SOP ノードで、左右の肩ジョイント用と左右の膝ジョイント用に Configurations マルチパラメータを作成します。

    • 肩ジョイント用に、1つ目の Configurations マルチパラメータの Group パラメータの矢印選択アイコンをクリックします。 そして、ビューポート内で左右の肩ジョイントを⇧ Shiftクリックしてから、Enterを押します。

    • 膝ジョイント用に、2つ目の Configurations マルチパラメータの Group パラメータの矢印選択アイコンをクリックします。 そして、ビューポート内で左右の膝ジョイントを⇧ Shiftクリックしてから、Enterを押します。

    肩ジョイントと膝ジョイントの名前がそれぞれの Group フィールドに入ります。

  15. 肩と膝の両方の Configurations マルチパラメータの Rotation Weights 値を上げます。

    例: 肩と膝のウェイトを上げました

    これは、 Full Body IK SOP ノードが解を導こうとする時に、肩と膝のジョイントがスケルトン内の他のジョイントよりも優先して少し大きく回転するようにします。

    これによって、彼がバランスを保っている挙動にリアルさが増しました。

    例: キャラクタが台の上でバランスを保つように仕上げた挙動。Christophe Desse氏によるキャラクタモデル提供
See also

KineFX

プロシージャルリギング

互換性

アニメーションのリターゲット

ペイン