リギング >> スキニング >> モーションのリターゲット の概要についてはPDFファイル「リギングからモーションのリターゲット 概要」を参照してください。

今回は、モーションキャプチャのファイルを読み込み、そのモーションを前回作成したキャラクタオブジェクトにリターゲット(移植)します。

オリジナルのキャラクタをモーションキャプチャと同じ動作でアニメーションさせることが可能になります。

NewImage

1. HumanIKの「キャラクタ」と「ソース」

HumanIKを使うことで、簡単にモーションの移植ができます。

HumanIKでは、モーションを提供する側を「ソース」、移植される側を「キャラクタ」と呼びます。

ただし、モーションを提供するスケルトン(ソース)と、移植されるスケルトン(キャラクタ)の両方が HumanIKで「キャラクタ定義」されている必要があります。

前回作成したキャラクタオブジェクトのスケルトンは、クイックリグで作成しているので、自動的に HumanIKのキャラクタ定義が済んでいます。

NewImage

したがって、今回はモーションキャプチャファイルのスケルトンにキャラクタ定義をすることから始めます。

2. 新規シーン作成とfbxファイルの読み込み

まずは、新規シーンを作成します。 何もないシーンです。 前回のオブジェクトを保存していなければ上書き保存してから新規シーンを開いてください。

では次に、新規シーンにモーションキャプチャのファイルを読み込みます。

ファイル > 読み込み… でファイルブラウザを開き、キャプチャファイル(.fbx)を探して選択します。 (当然のこと、キャプチャファイル (.fbx)は、Mayaのプロジェクトディレクトリ内、scenesフォルダなどに前もってコピーしてください。)

ファイルブラウザで、下図のようにネームスペースオプションを設定してください。

NewImage

ネームスペースオプションで図のように設定しておくと、読み込んだオブジェクトに余分な名前がついて長くなることを防げます。

NewImage

fbxファイルを読み込むと、図のようにモーション付きのスケルトンが標示されます。

NewImage

タイムスライダのフレームレートが、読み込んだスケルトンのモーションに合わせて 30 fps に切り替わっているはずです。

NewImage

3. 読み込んだスケルトンをTポーズにする

最初にスケルトンを基本姿勢のTポーズにします。

その前に、タイムスライダの現在時間を最初のフレームに戻してください。

下図のように現在時間に 0 を入力するか、タイムスライダの数値を左へドラッグ、または頭出しボタンをクリックしてください。

最初のフレームだけTポーズにします。 途中のフレームにTポーズが入るとモーションが台無しになります。 忘れずに頭出ししてください。

NewImage

アウトライナで、読み込んだスケルトンを展開します。

図のように shiftキーを押しながらRoot階層をクリックし、すべての階層を展開してください。

今回は使いませんが、手足の指のジョイントまであるのでかなりの数になります。

NewImage

すべて展開したら、一番上Root階層を選択します。 そのままアウトライナを下へスクロールし、shiftキーを押しながら一番下のジョイント(多分 LeftHandPinky3_End)をクリックし、全てのジョイントを選択します。

NewImage

再度現在時間を確認します。

下図でタイムラインが赤くなっているのは、すべてのフレームにキーフレームが設定されているためです。(モーションがベイクされている状態)

NewImage

そのまま、チャネルボックスを表示します。

回転XYZの入力欄をshiftキーを押しながら3つとも選択し、最後に選択した欄に 0 を入力してreturnキーを押します。

最初からすべて 0 になっているかもしれませんが、必ずこの操作をしてください。

NewImage

すべてのジョイントの回転角度が 0 にセットされ、Tポーズになります。 (まだジョイントの選択は解除しないでください)

NewImage

このポーズでキーフレームを作成します。

図のように回転XYZの項目名をshiftキーを押しながら3つとも選択し、右マウスプレスで「選択項目のキー設定」をクリックしてください。

NewImage

キーフレームが設定されると図のように項目名の左側に赤いマーカーが表示されます。

NewImage

これで 最初の 0フレームだけTポーズで固定できました。

ジョイントの選択を解除してください。

4. キャラクタ定義

これでキャラクタ定義の準備ができたので、図の上のボタンをクリックしてHumanIKウィンドウを表示してください。

次に図の「キャラクタ定義を作成」ボタンをクリックしてください。

NewImage

キャラクタ:の欄に「Character1」と表示されます。 これから設定する定義の名前です。

NewImage

尚、キャラクタの腕や脚のジョイントには左右がありますが、LeftとRightを間違えないように注意してください。

Left = 左、Right = 右 の表示は、すべてキャラクタから見た左右です。

NewImage

キャラクタ定義ファイルを読み込む

ただし、以前に作成したキャラクタ定義ファイルがある場合は、そのファイルを読み込むことでキャラクタ定義を完了させることが可能です。

定義ファイル(xmlファイル)がある場合はこちらのページ「キャラクタ 定義 ファイルを読み込む」を参照して読み込んでください。

初めて定義ファイルを作成する場合は、下記の通り作業を進めてください。

キャラクタ 定義を作成する

これからしばらくは、アウトライナとHumanIKパネルの両方を行き来しながら定義していきます。

HumanIKパネルの人型グラフィックのそれぞれの部位にある菱形のボタンを「セル」と呼んでいます。

NewImage

定義の作業は、セルをその場所にあるジョイントに対応するように指定する作業です。

ただし下向きの三角がある円は、それをクリックするとその部位の折りたたまれたセルにアクセスできるようになっています。(脊椎、首、肩、手の指、足の指)

では、Rootの次にある最上位のジョイント、Hipsから定義します。

図のように先にセルをダブルクリックし、それに対応させるジョイント(Hips)をアウトライナでクリックして選択してください。

図のようにセルが緑色になれば定義完了です。

NewImage

次は、Spine(脊椎)です。下図のセルをダブルクリックしてから、アウトライナで Spine をクリックしてください。

NewImage

尚、間違えて定義したときは、Zキーを押してやり直さないでください。 間違えたセルをもう一度ダブルクリックして定義し直せば問題ありません。

その場合、図のようなアラートが表示されますが「はい」を選択して置き換えてください。

NewImage

次は、折りたたまれたセルです。 図のボタンをクリックしてください。

NewImage

下図右の図のようにSpine(脊髄)のセルが沢山表示されますが、下から設定していきます。

図のセルをダブルクリックしてから、アウトライナでSpine1をクリックしてください。

NewImage

同じようにしてSpine2とSpine3をそれぞれ定義してください。

Spine3まで定義したら、図の戻るボタンで元の画面に戻ってください。

NewImage

次はNeck(首)ですが、これもボタンをクリックして展開してください。

NewImage

Neckのジョイントはひとつしかないので、一番下のセルをNeckに定義してください。

終わったら元の画面に戻ってください。

NewImage

次はHead(頭)です。同じように定義してください。

尚、スケルトンにはHead_Endというジョイントがありますが、これは定義しません。

NewImage

中心部のジョイント定義が終わりました。

次は肩・腕・手を定義していきますが、左右間違えないようにしてください。

Left(左)側を定義することで、自動的に右側も定義されます。

では図のLeftShoulder(左肩)のボタンをクリックし、肩のセルを展開してください。

NewImage

肩のジョイントもひとつしかないので、下図のセルをLeftShoulderに定義してください。

定義した瞬間に、反対側(RightShoulder)のセル表示に切り替わりますが、何もせずに元の画面に戻ってください。

尚、アウトライナのジョイント名ですが、はじめの「Left」のあとに大文字から始まる「Shoulder」が続いています。2つの単語をつなげるときに良く用いられる記述で、アンダースコアで区切ることもありますが、少しでも文字数を少なくするためにこのように2つめの単語の始まりの文字を大文字で表記します。

NewImage

今までの要領で、LeftHandまで定義してください。

終わったら次は、LeftUpLeg(左脚)です。

NewImage

LeftUpLegからLeftFootまで定義し、終わったら図のボタンをクリックして足指のセル画面を表示してください。

NewImage

図のセルをダブルクリックし、アウトライナでジョイントLeftFoot_Endを定義してください。

今回、足指はこのひとつだけです。 元の画面に戻ってください。

NewImage

最後に図のセルをダブルクリックし、最上位の階層Fbx_Root を定義してください。

図のように全てのセルが緑色になっていればOKです。 これですべてのジョイントを定義することができました。

NewImage

5. キャラクタ名の変更

HumanIKの「キャラクタ名」とは定義の名称です。

スケルトンやジョイントなど実体のあるオブジェクトの名前ではありません。

スケルトンの名前はこの例では「Fbx_Root」ですので、混同しないよう注意してください。

では、図の左上ボタンをクリックし、「キャラクタ名の変更」を選択してください。

NewImage

図のような名前に変更してください。

NewImage

キャラクタ定義の名称が書き換えられました。

NewImage

6. 定義ファイルの保存

この操作は必須ではありませんが、定義ファイルを保存しておくことで他のシーンファイルで簡単に使用可能になります。

図のボタンをクリックし、スケルトン定義をテンプレートとして保存をします。

NewImage

Template Name: をFbx_HIK に変更し、 Path:の 右側にあるボタンをクリックして保存場所の指定をします。

NewImage

Macで見慣れたウィンドウが開きますので、 ① 各自のMayaプロジェクトフォルダの data フォルダを探して開きます。

② その中に新規フォルダを作成し、③ 「HIK_template」などのフォルダ名を付けます。

④ 開くボタンを押します。

NewImage

Path:の表示を確認し、OKボタンをクリックしてください。 定義ファイルが保存されます。

NewImage

では、シーンファイルを保存してください。

ファイル名は QR_01 などにします。

NewImage

7. キャラクタオブジェクトの読み込み

ここから、各自が作成したキャラクタオブジェクト(リギング・スキニングが済んだオブジェクト)を読み込みモーションキャプチャ の動きを移植する(リターゲット)作業になります。

モーションを移植するオブジェクトを読み込みます。 前回制作したクイックリグでリギングしたオブジェクトです。

メインメニューで、ファイル > 読み込み を選択してください。

NewImage

ファイルブラウザでファイルを選択し、ネームスペースオプションを図のようにしてから、読み込みを実行してください。

NewImage

アウトライナで読み込んだオブジェクトを確認してください。

ポリゴンオブジェクトの他に、クイックリグのガイド(非表示)スケルトン(骨格)が読み込まれていればOKです。

NewImage

8. モーションのリターゲット

ではモーションをリターゲット(移植)します。

操作は単純ですが、キャラクタ と ソース を取り違えないよう注意してください。

図のようにHumanIKパネルで、キャラクタ:にモーションを移植されるスケルトン= 後から読み込んだオブジェクトのスケルトン名を選択してください

次に、ソース: にモーションを提供するスケルトン = モーション付きのスケルトン(今回定義したスケルトン)名を指定してください。

NewImage

リターゲット作業はこれだけです。

図のようにキャラクタオブジェクトがモーション付きのスケルトンと同じポーズになります。

NewImage

再生して動きを確認してください。

動きが速すぎる場合は、図のタイムスライダの設定ボタンを押してください。

NewImage

プレファレンスパネルのタイムスライダ項目が表示されます。

図の「最大再生スピード」をモーションデータのフレームレートと同じ値 × 1 に設定してください。(この場合は、30fps x 1 です。)

設定したら、保存ボタンを押してパネルを閉じます。

NewImage

これで実際のフレームレートと同じ速度で再生されるようになります。

NewImage

9. キャラクタオブジェクトの移動

2つのスケルトンが比較できるように、キャラクタオブジェクトのスケルトンを移動します。

移動する前に必ず現在時間を確認し、0 フレームに戻してください。

NewImage

移動するのは、後から読み込んだポリゴンオブジェクトのスケルトンです。 ソースに設定したキャプチャファイルのスケルトンを移動しても全てのオブジェクトが同じように移動されるので意味がありません。

図のようにアウトライナで選択してください。

NewImage

移動ツールに切り換えるとマニピュレーターはワールド原点に表示されます。

Xハンドルをドラッグして図のように2つ並べてください。

NewImage

再生して確認してください。 これで説明は終わりです。

ファイルを上書き保存してください。

NewImage