IK リグによる二足歩行キャラクターのリターゲティング

Unreal Engine の IK リグとリターゲティング機能を使って、2 つの異なる二足歩行キャラクターをリターゲティングする方法について説明します。

Unreal Engine には、キャラクター間でアニメーションをリターゲティングするための柔軟なツールが用意されています。リターゲティング方法の一つとして、IK リグIK リターゲッタ と組み合わせて使用する手法があり、これによって大幅に異なるスケルトン階層と比率を持つキャラクター間でのリターゲティングが可能になります。アニメーションのリターゲティングは、Unreal Engine の外部で新たにアニメーションを作成および管理することなく、複数の異なるスケルトン間でアニメーション データを共有する手段です。

このドキュメントでは、2 つの異なる二足歩行キャラクター間でアニメーションをリターゲティングするこれらのツールの使用方法について、その概要を説明します。

前提条件

  • プロジェクトに少なくとも 2 つの異なる二足歩行キャラクターが含まれている。この例では、サードパーソン テンプレートStack O Bot から入手可能な Unreal Engine マネキンを使用しています。

  • 両キャラクターにそれぞれ異なるスケルトン アセットとボーン階層が備わっており、このようにリターゲティングする十分な合理性がある。それ以外の場合、たとえばそれぞれのキャラクターに同じような階層や比率が備わっている場合は、互換スケルトン を使用するほうが適切な場合があります。

ソースおよびターゲット IK リグの設定

IK リグでのリターゲティングには ソースターゲット のスケルタルメッシュが必要になり、これらはそれぞれのメッシュに対して IK リグ アセット で定義されます。そのため、リターゲティング プロセスで使用するそれぞれのキャラクターに対して IK リグ を作成しておく必要があります。

  1. コンテンツ ブラウザを開いて [+Add (+追加)] > [Animation (アニメーション)] > [IK Rig (IK リグ)] > [IK Rig] をクリックします。

  2. リグを追加する先のスケルタルメッシュを選択します。

  3. この作業を両方のキャラクターで行い、その後にそれぞれの IK リグ アセットを開きます。

create ik rig

ルートをリターゲティングする

両方の IK リグ アセット内で各キャラクターの ルート を定義する必要があります。通常は 骨盤 または 臀部 のボーンです。これを行うのは、キャラクターのルート モーションを定義し、比率に合わせて移行することが目的です。

[Hierarchy (階層)] パネルでボーンを右クリックして [Set Retarget Root (リターゲティング ルートを設定)] を選択します。これを両方の IK リグ アセットで行います。

set retarget root

完了すると、選択したボーンが [Hierarchy] パネルと [IK Retargeting (IK リターゲティング)] セクションで Retarget Root (リターゲティング ルート) として表示されます。

retarget root indication

リターゲティング チェーン

リターゲティング プロセスで移行する手足および他の付属要素についても、ソースとターゲットの両方の IK リグで定義する必要があります。このプロセスは、Autodesk MotionBuilder や Maya などの他のアプリケーションにおけるリグの「キャラクター化」に似ています。主な違いは、個々のボーンではなく ジョイント チェーン で定義する点です。これにより、ボーン構造が大きく異なる各キャラクターのリターゲティングにおける柔軟性が高まります。

チェーンは、リターゲティングするすべての主要な手足部分に対して作成する必要があり、指などの小さい部分のチェーンについては任意です。この例では、両方の IK リグで以下のチェーンを作成します。

  • Spine (背骨)

  • Left Arm (左腕)

  • Right Arm (右腕)

  • Neck (首)

  • Head (頭)

  • Left Leg (左脚)

  • Right Leg (右脚)

retarget chains

チェーンを作成するには次のステップに従います。

  1. [Hierarchy] パネルでチェーンの最初のボーンを選び、次にその下の階層にあるすべてのボーン (チェーンの最後のボーンまで) を選択します。

  2. これらのボーンを右クリックして [New Retarget Chain from Selected Bones (選択ボーンからリターゲティング チェーンを新規作成)] を選択します。

  3. [Add New Retarget Chain (新規リターゲティング チェーンを追加)] ダイアログ ウィンドウで [Chain Name (チェーン名)] が適切に設定されていることを確認し、[OK] をクリックします。ほとんどの場合、この値は IK リグによってその 共通チェーン名 のリストから自動的に割り当てられます。

  4. [Add Goal to New Chain (新しいチェーンに目標を追加)] ダイアログ ウィンドウで [No Goal (目標なし)] を選択します。通常は、リターゲティングで 速度プランティングストライド ワープ、または ソースへのブレンド といった追加の IK 調整が必要にならない限り、IK 目標 を追加する必要はありません。

create chain

両方の IK リグ アセットの主要なすべてのチェーンに対して、このステップを繰り返します。完了すると、[IK Retargeting] パネルに複数のチェーンが表示されます。

create chains

単一のボーンのみを含むチェーンも有効です。こうしたチェーンは、肩や首、または頭のボーンなどで生じることがあります。このような場合も、[Hierarchy] パネルで単一のボーンを右クリックし、[New Retarget Chain from Selected Bones] を選択できます。このチェーン エントリには、[Start Bone (開始ボーン)] フィールドと [End Bone (終了ボーン)] フィールドで定義された同じボーンが含まれます。

IK リターゲティング

必要なボーン チェーンを作成したら、IK リターゲッタ でのリターゲティング プロセスを始めることができます。IK リターゲッタは、ソースとターゲットの両方の IK リグを参照するアセットです。IK リターゲッタ エディタでは、ソースとターゲット間でアニメーションを移行する方法をカスタマイズできます。

IK リターゲッタを作成して設定する

IK リターゲッタを作成するには次のステップに従います。

  1. コンテンツ ブラウザで [+ Add] をクリックし、[Animation] > [IK Retargeter] を選択します。

  2. 表示されるダイアログ ウィンドウで、アニメーションをリターゲティングする元の IK リグを選択します。

  3. リグを選択したらその新しい IK リターゲッタ アセットに名前を付け、それをダブルクリックして IK リターゲッタ エディタで開きます。

create ik retargeter

IK リターゲッタ エディタでは、ビューポートと [Source IKRig Asset (ソース IK リグ アセット)] プロパティにソース スケルタルメッシュのみが表示されます。ターゲット キャラクターを追加するには、[Target IKRig Asset (ターゲット IK リグ アセット)] ドロップダウン メニューをクリックしてターゲット IK リグを選択します。

add target ik rig

リターゲティング前のチェックリスト

リターゲティング プロセスを適切かつ正確に行うために、事前に確認すべき項目がいくつかあります。

  • [Chain Mapping (チェーン マッピング)] パネルで、[Target Chain (ターゲット チェーン)][Source Chains (ソース チェーン)] の設定が一致することを確認します。ほとんどの場合、それぞれの名前は自動で適切にマッチングされます。適切でない場合は、[Source Chain] のドロップダウン メニューをクリックして、[Target Chain] と一致するようにチェーンの割り当てを変更します。

    matching chains

  • 両方のキャラクターに一致する参照ポーズがあることを確認します。一方のキャラクターが T ポーズで、もう一方が A ポーズであるなど、参照ポーズが一致しない場合は、いずれかの リターゲティング ポーズ を変更して両方が一致するようにします。

    matching retarget pose

  • 任意ですが、[Details (詳細)] パネルでオフセットとスケールの設定を調整することで、ソースとターゲットの両方のスケルトンを確認しやすくできます。

    offset target character

リターゲティングをプレビューする

[Asset Browser (アセット ブラウザ)] パネルでは、さまざまなアニメーションをダブルクリックして、異なるアニメーション シーケンスでのリターゲティング効果をプレビューできます。

preview retargeting

リターゲティング結果をエクスポートする

ターゲット キャラクターでのリターゲティング結果が納得のいくものになったら、そのキャラクターのスケルトンに対応している アニメーション シーケンス にアニメーションをエクスポートできます。そうするには、エクスポートするアニメーションを [Asset Browser] パネルで選択して [Export Selected Animations (選択したアニメーションをエクスポート)] をクリックします。

export selected animations

表示されるダイアログ ウィンドウでエクスポート先のパスを指定して、[OK] をクリックしてアニメーションをエクスポートします。リターゲティングしたアニメーションが、「_Retargeted」ポストフィックスが付いた出力フォルダにエクスポートされます。

export naming

モーションを装飾する

現実的なモーションキャプチャ アニメーションを非現実的なキャラクターにリターゲティングした場合は、結果のアニメーションが不適切または不自然な見かけになることがあります。これは主観的な要素ですが、このような場合は追加のステップを実行し、特定のキャラクターの動きに装飾を加えたり減らしたりすることで、より適切な見かけにすることができる可能性があります。

たとえば、リターゲティングしたロボット キャラクターで走るアニメーションをプレビューしている際に、キャラクターがより飛び跳ねるようにしたい場合があります。これを行うには次のステップに従います。

running with no bounce

running with bounce

元のリターゲティング結果

調整した設定でのリターゲティング

IK 目標を作成する

最初のステップでは、IK 目標を作成し、追加のバウンスを加える際にキャラクターの足が地面に着くことを確認します。

IK 目標をまだ作成していないと想定し、ターゲット キャラクターの IK リグ アセットを開きます。[Hierarchy] パネルで足のボーンのいずれかを右クリックし、[New IK Goal (IK 目標の新規作成)] を選択します。

create new ik goal

表示されるプロンプトで Limb IK がソルバとして設定されていることを確認して [Add Solver (ソルバを追加)] をクリックし、次のプロンプトで [Assign Goal (目標を割り当て)] をクリックします。

add solver and assign goal

次に、新しく作成した Limb IK ソルバが [Solver Stack (ソルバ スタック)] パネルで選択されていることを確認し、大腿部 (thigh) のボーンを右クリックして [Set Root Bone on Selected Solver (選択されているソルバにルート ボーンを設定)] を選択します。

set root bone on selected solver

もう一方の足に対しても上記のステップを行い、2 つの IK 目標と 2 つの Limb IK ソルバを完成させます。

limb ik set up

IK リターゲッタのルート設定

次は IK リターゲッタ アセットに戻り、ビューポートでルート デバッグ ビジュアライザを選択するか、[Chain Mapping] パネルの [Root Settings (ルート設定)] をクリックしてルート設定を開きます。

root settings

調整するのは、[Scale Vertical (スケール垂直)][Translation Offset (平行移動オフセット)] の [Z] の 2 つのプロパティです。

  • [Scale Vertical] は、リターゲティング ルート (ほとんどの場合は骨盤か臀部) のアニメーション カーブの全体的なスケールを増大させます。これによってキャラクターの垂直方向の動きが全体的に増えますが、キャラクターが床よりも高い位置に配置されるようになります。

  • [Translation Offset] の [Z] によってこれを補正します。この値を下げるとリターゲティング ルートの位置が低くなりますが、その全体的なスケールは変わりません。

これらのプロパティをうまく組み合わせて活用することで、リターゲティングしたキャラクターの上下バウンスを増大させることができます。これらのプロパティを調整する度合いは、お使いのキャラクターとアニメーションによって異なります。

adjust vertical scale and offset

この例では、目的のバウンスを達成するために、[Translation Offset] の [Z] を「-173」に、[Scale Vertical] を「6」に設定しました。

embellishment results

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