仮想ボーン

IK を備える仮想ボーンを使用して、レイヤー化されたアニメーションの問題を解決します。

複雑なブレンド アニメーション、レイヤー化されたアニメーション、または圧縮されたアニメーションのシステムをビルドする場合、キャラクターの四肢 (通常は、手および足) に余計な望ましくない動き (「泳ぐ」と呼ばれる) が発生する場合があります。仮想ボーンIK ノード と組み合わせて使用すると、この望ましくない動作を修正することができます。

このドキュメントでは、 スケルトン で仮想ボーンを作成して、 アニメーション ブループリント で使用する方法の概要について説明します。

前提条件

仮想ボーンの概要

仮想ボーンは、他のボーンのトランスフォームに追従するものの、異なるボーン空間にあるボーンです。ほとんどの場合、これは、仮想ボーンが ルート ボーン の親でありながらも、手または足などの エンド ボーン に追従することを意味します。つまり、仮想ボーンは、ターゲットにつながるすべてのジョイントのフォワード キネマティック (FK) 階層の追加の影響を受けることなく、ターゲット ボーンに直接追従することができます。この機能を使用すると、キャラクターの手足を仮想ボーンに追従させるインバース キネマティクス (IK) システムを設定することができ、複雑なアニメーション システムで生じる「泳ぎ」などの手足のぶれの問題を解決できます。

次の例では、加算ヘッドルック アニメーションの再生時に、ライフルと手の位置を維持するために IK を備える仮想ボーンが使用されています。仮想ボーンがない場合、手と武器が「泳いで」しまい、意図しない動きになります。

VB_Compare1a.gif

VB_Compare1b.gif

仮想ボーンを使用

仮想ボーンなし

従来の IK との違い

仮想ボーンの主要な特徴の 1 つは、ターゲット ボーンに追従することです。この特徴により、ターゲット ボーンが動くことができるアニメーションを引き続き再生しながら、仮想ボーンの位置を変更することができます。このような設定は、IK がアニメーションに干渉する可能性がある従来の IK のみのシステムよりも優れています。たとえば、手が武器に IK でアタッチされているシステムを設定する場合、リロードなどの特定の状況では IK を無効にするために追加の手順を実行する必要があります。

この例では、IK を備えた仮想ボーンにより、加算アニメーションを再生していても、他のオブジェクトを基準とした手の基本的な動きが可能です。従来の IK 設定では「泳ぐ」問題を解決できることはあるものの、結果的に、手が常に固定されるため、このような場合には IK を無効にする追加のロジックを作成する必要があります。

VB_Compare2a.gif

VB_Compare2b.gif

仮想ボーンにより手の基本的な動きが可能

手が固定される IK のみの設定

仮想ボーンを作成する

仮想ボーンは、アニメーション エディタの スケルトン ツリー で作成することができます。 となるボーンを右クリックして、[Add Virtual Bone (仮想ボーンを追加)] を選択します。このリストからボーンを選択して、ターゲット を指定します。この例では、仮想ボーンは ルート ボーン の親として作成され、hand_l ボーン をターゲットにします。

create virtual bone

作成されると、仮想ボーンは 親ボーン の子として表示され、ターゲット ボーン のトランスフォームに一致します。デフォルトでは、仮想ボーンは命名規則に沿って自動的に VB <Parent>_<Target> という名前になります。

virtual bone created

また、 アニメーション シーケンス をプレビューして、アニメーションで仮想ボーンがターゲット ボーンに追従しているのを確認することができます。

virtual bone follow

アニメーション ブループリントの設定

仮想ボーンを作成したら、 アニメーション ブループリント で仮想ボーンのロジックを設定することができます。仮想ボーンは自由度の高い性質を備えているため、幅広い方法で活用できます。ここでは、仮想ボーン向けの基本的な武器のオーバーライドと加算アニメーションのセットアップを作成する方法を説明します。

スロットのセットアップ

まず、アニメーション ブループリントの アニメーション グラフSlot ノードを 2 つ作成します。スロットは、1 回限りのアニメーションを挿入できるアニメーション ブループリントのプロキシ領域で、基本アニメーション レイヤーと加算アニメーション レイヤーを区別するために使用されます。

アニメーション グラフを右クリックし、Montage > Slot 'DefaultSlot' を選択してスロットを作成します。

create slots

2 つ目のスロットでは、そのスロットを選択し、[Details] パネルの Slot Name プロパティを DefaultSlot とは異なる別の値に設定し、アニメーションが正しく分化するようにします。

additive slot

Default SlotBase ピンに、Additive SlotAdditive ピンに接続して、両方の Slot を Apply Additive ノードに接続します。

connect slots to apply additive

仮想ボーンを除外する

次に、仮想ボーンを Additive Slot の評価から除外するために、 ブレンド マスク を作成する必要があります。

アニメーション エディタの スケルトン ツリー で、[Options (オプション)] ドロップダウン メニューをクリックして、[Add Blend Mask (ブレンド マスクを追加)] を選択します。名前を付けて Enter を押します。

add blend mask

次に、仮想ボーンに移動して、ブレンド値を「0.0」に設定します。

set blend mask value to 0

アニメーション グラフに戻り、 Layered Blend per Bone ノードを作成して、プロパティを以下のように設定します。

  • Blend ModeBlend Mask に設定します。

  • Blend Masks を使用する仮想ボーン除外ブレンド マスクに設定する。

layered blend per bone using blend mask

このノードが Additive SlotApply to Additive ノードの間に配置されるように接続し、Slot を Blend Pose ピンにのみ接続します。これで、この Additive Slot からアニメーションが再生されると、ブレンド マスクによって加算アニメーションが仮想ボーンに影響しないようになります。

connect slot to layered blend per bone

IK の設定

最後に、手足が仮想ボーンに追従し、加算レイヤーが仮想ボーンの余計な動きを除外する IK 設定を作成する必要があります。

Two Bone IK ノードを作成し、[Details] パネルでプロパティを以下のように設定します。

  • IKBone を、この手足のエンド ターゲット ボーンに設定する。

  • Effector Location SpaceBone Space に設定する。

  • Take Rotation from Effector Space をオンにして、IK ボーンに回転を追加する。

  • Effector Target をこの手足の仮想ボーンに設定する。

  • Joint Target Location SpaceParent Bone Space に設定する。

  • Joint TargetIKBone の同じ値に設定する。

two bone ik properties

Joint Target Location は IK 極ベクターを定義するために使用されます。IK 極ベクターは肘の後ろの位置に設定する必要があります。キャラクターのジョイントによって、この値は異なる場合があります。デフォルトの Unreal Engine のマネキンでは、この値は次のように設定されます。

  1. X: -25.0

  2. Y: -50.0

  3. Z:0.0

joint target location

仮想ボーンに一致させたい各手足に、追加の Two Bone IK ノードを作成します。

結果の表示

完成すると、アニメーション グラフは以下のようになります。内容は次のとおりです。

  1. 基本および加算アニメーション レイヤーの Slot ノード。

  2. 両方の Slot が Apply Additive ノードに接続され、 ブレンド マスク を使用する加算レイヤーから仮想ボーンを除外するために Layered Blend per Bone ノードを使用しています。

  3. 手足では IK ノードを使用して、最終的な仮想ボーンの位置にアタッチすることで、基本アニメーション レイヤーを使用します。

anim graph summary

これで、このフレームワークでアニメーションを再生すると、キャラクターの手足が仮想ボーンの位置に追従していながら、加算アニメーションが再生されているときは加算アニメーションの影響を受けないことを確認できます。

virtual bone result

タグ
Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル