この記事はUnreal Engine バージョン5.0.3を利用して書かれています。
「Trick or Treat!お菓子をくれなきゃ踊っちゃうぞ!」
今回使用するアセットを紹介
まずは今回サンプルとして用いるアセットを紹介します。『Undead Pack』はLich、Ghoul、Skeleton、Zombie、Enemy Goblinの5体のアンデッドキャラクターが1つになったアセットパックです。
キャラクターはそれぞれLODや固有のアニメーションを持っており、キャラクターのアクセサリなどもパッケージングされているなど、恐ろしい見た目とは裏腹に汎用的で使い勝手のいいキャラクターアセットとなっています。
今回はUE5のアニメーションリターゲット機能を使って、さまざまなアンデット達にさまざまなアニメーションをしてもらいましょう。なお、使用するアニメーションは、「Zombie Movement and Modular Interaction Animations」(以下、Zombie Movement)からお借りすることにします。
『Zombie Movement and Modular Interaction Animations』は這い寄る攻撃や咆哮など、34のゾンビ風アニメーションが提供されるパッケージ。ハロウィンの季節にぴったりだろう
アニメーションリターゲットとは?
アニメーションリターゲットは、特定のアニメーションを異なったスケルトンを持ったキャラクター間で共有するための機能です。リターゲット自体は3DCGにおいて頻出する言葉で、直訳すると「標的や目標を変える」ことになりますが、多くの場合は異なる3Dモデルに対してアニメーション(モーションキャプチャデータなど)を適用することを指しています。
さて、3Dキャラクターはそれぞれスケルトンやリグと呼ばれる骨構造を持っています。アニメーションはこのスケルトンに基づいて作成されているため、基本的に骨構造が違うキャラクター同士で同じアニメーションを利用することはできません。
歩く、走るなどそれぞれの動作(アニメーション)はスケルトンに基づいて作成されている
キャラクターのスケルトンとアニメーションのスケルトンが違う場合、アニメーションを利用することはできない
しかし、右上の例で見ると、2つのスケルトンはほとんど同じ形をしていることが分かります。自然なアニメーションを作るのは手間がかかるため、少し違うだけのスケルトンに対して個別のアニメーションを用意するのは大変です。
このため、Unreal Engine 4からアニメーションリターゲット機能が搭載され、アニメーションを別スケルトンに適合する形で複製することでアニメーションを共有することが可能になりました。
スケルトンに合わせたアニメーションを複製することで、異なるスケルトン間でアニメーションを流用することができるようになった
UE5では、アニメーションリターゲットのための機能が更に手軽になり、「互換スケルトン」と「IKリターゲッタ」という機能となりました。今回はそれぞれの方法でアニメーションリターゲットを行っていきます。
アニメーションリターゲットをうまく使えれば、1つのキャラクターで使えるアニメーションの幅がぐっと広がります
『Undead Pack』『Zombie Movement』を使うための準備
ここからは実際にプロジェクトを開いて進めていきます。Undead PackとZombie Movementはいずれもプロジェクトに追加するタイプのアセットのため、もととなるプロジェクトが必要です。今回はサードパーソンテンプレートを使います。
ランチャーを起動し、「ゲーム」→「サードパーソン」からプロジェクト名を入力して新しいプロジェクトを作成します。
プロジェクト名は任意だが、今回は「RetargetingTest」とした
プロジェクトを作成したら、Undead PackとZombie Movementをプロジェクトに追加します。Epic Games Launcherからそれぞれのマーケットプレイスのページに行き、「プロジェクトに追加」をクリックしてインストールしましょう。
その他とアセット同様、プロジェクトに追加して使用していく
インストールが終わったら、アセットの中身を確認してみましょう。コンテンツ\UndeadPack\Mapsの「Showcase_UndeadPack」がUndead Packのサンプルマップ、コンテンツ\BSP_ZombieAnims\Mapsの「Animation_Showcase」がZombie Movementのサンプルマップとなっています。
リターゲット先となるUndead Pack。各キャラクターにはデフォルトでもある程度のアニメーションが揃っている
Zombie Movementのアニメーションには2つのキャラクターが組み合うようなアニメーションも存在する
これでアニメーションリターゲットを利用する準備は整いました。まずは互換スケルトンによるリターゲットをしてみましょう。
なお、この記事内では通常のグレイマンと区別するため、Zombie Movement内で使われているこのキャラクターを「青いグレイマン」と呼ぶこととします。
互換スケルトンを使ってみよう
互換スケルトン、またはコンパチブルスケルトンは、異なるスケルトンに互換性を持たせるための機能です。お互いのスケルトンがある程度似通っており、共通のボーン名を持っている場合、この機能で簡単かつアニメーションを複製の必要なしに別スケルトンのアニメーションを利用できます。
Zombie MovementのデフォルトのスケルトンはUndead PackのGhoulおよびSkeletonのスケルトンとの類似性が非常に高く、互換スケルトンとの相性が良いです。まずはGhoulにアニメーションを共有していきましょう。
スケルトンの互換性の有無はアセットダウンロードページの下部にあるテクニカルノートである程度知ることができる。
例として、Undead Packのテクニカルノートでは「Rigged to Epic skeleton」の欄に「Yes」と表記されており、Zombie Movementのデフォルトと同じEpic Games標準のスケルトン構造から作られていることが分かる(本アセット内ではLichのみ例外的に標準スケルトンではない)
それではGhoulに互換スケルトンを使用していきましょう。Contents\UndeadPack\Ghoul\Meshから、GhoulのスケルトンであるSK_Ghoul_Skeletonを開きます。
デフォルトの状態だとGhoulのスケルトンであることが分かりにくいので、プレビューのためのメッシュモデルをSK_Ghoul_Fullに変更し、「アセットに適用」を押して固定しておきます。
Preview Mesh(スケルトン)のドロップダウンメニューからSK_Ghoul_Fullを選ぼう
「アセットに適用」を押すことで、次回以降も同じプレビューメッシュで開かれるようになる
次に、上のメニューバーの「ウィンドウ」ドロップメニューから「アセット詳細」をクリックし、アセット詳細ウィンドウを開きます。「Compatible Skeletons」と書かれている欄が互換スケルトンの設定です。
アセットツール上部のメニューバーからアセット詳細のウィンドウを開く
Compatible Skeletonsにスケルトンを追加することで互換性を持たせることができる
Compatible Skeletonsの右の「+」ボタンから要素を追加し、ドロップダウンメニューから青いグレイマンのスケルトンである「SKEL_UE4_Manaquin_Skeleton」を設定します。
これで互換性が設定できました。アセット詳細ウィンドウを閉じてからSK_Ghoul_Skeletonのタブを一旦閉じて開き直すと、右下のアセットブラウザタブにZombie Movementのアニメーションが追加されていることが分かります。この時点でこれらのアニメーションはSK_Ghoul_Skeletonから使用可能になっています。
実際にアニメーションさせて確かめてみましょう。SK_Ghoul_Skeletonをビューポート上にドラッグ&ドロップして配置します。
配置したSK_Ghoul_Skeletonを選択し、右の詳細パネルからAnimationカテゴリのAnimation ModeをUse Animation Assetにします。この手順で現れるAnim to Playを好きなアニメーションに設定します。
ここではアニメーションとしてAM_NAAT_Zombieを選択している
プレイしてみるとゾンビのような動きをするGhoulのキャラクターを確認できます。このように、互換スケルトン機能は少ない手順で複数のアニメーションをリターゲットできます。
Skeletonにも同じように互換性を付けると、Zombie Movementのデモマップにもあった人間対ゾンビの動きも骸骨とグールで簡単に再現できます。
互換スケルトンはとても便利な機能ですが、注意点もあります。例えば、このままZombieにアニメーションを共有しようとすると、脚周りのモデルが破綻してしまいます。
破綻の理由は、Zombieと青いグレイマンのスケルトンは体格が倍近く違うからです。このように、互換スケルトンではスケルトン同士がかなり近しいものでないとモデルが破綻してしまうということがよく起きます。なお、これはリターゲットオプションという機能である程度調整することもできます。
発展編:IKリターゲッタを使ってみよう!
IKリターゲッタでリターゲットしてみよう
UE5のもう1つのリターゲット機能である「IKリターゲッタ」を使って、Zombieに対してアニメーションをリターゲットしていきましょう。
IKリターゲッタはIKリグというアセットを使い、アニメーションリターゲットを行う機能です。IKリグを作る手間はあるものの、互換スケルトンと違って異なるボーン名や骨構造を持ったスケルトンの間でリターゲットを行うことができます。サードパーソンテンプレート内にサンプルがあるので、まずは実際に使ってどんなものか確かめてみましょう。
コンテンツ\Characters\Mannequin_UE4\Animationsに「Jog_Fwd」というグレイマンが走るアニメーションがあります。これをIKリターゲッタを使用してManny、Quinにリターゲットします。
IKリターゲッタによるリターゲットは、アニメーションの右クリックメニューから行うことができます。「Jog_Fwd」を右クリックし、メニューから「アニメーションアセットのリターゲティング」→「アニメーションを複製しリターゲット」をクリックします。
ウィンドウが表示されたのち、「IKリターゲッタ」のドロップダウンメニューから適用するIKリターゲッタを選択します。ここでは「RTG_UE4Manny_UE5Manny」を選びましょう。
サードパーソンテンプレートにはIKリターゲッタがあらかじめ用意されている
「リターゲット」ボタンでUE4マネキン(グレイマン)のアニメーションをUE5マネキン(Manny、Quin)に変換する
このやり方でリターゲットを行うと、コンテンツの直下にリターゲットしたアニメーションが複製されます。このように、IKリターゲッタは一度作ってしまえば右クリックから手軽にリターゲットを行うことができます。
(左)IKリターゲッタ、(中)互換スケルトン、(右)元となったアニメーションの結果比較
IKリグを作ってみよう
青いグレイマンからZombieにアニメーションを変換するためのIKリターゲッタを作ってみましょう。そのためにまずはIKリグが必要です。
青いグレイマンのIKリグを作るために、コンテンツドロワー上で当該モデルを右クリックし、メニューから「アニメーション」→「IKリグ」をクリックします。
IKリグを作る場所はどこでもいいが、今回は分かりやすいようになるべく青いグレイマンのメッシュ「SK_Mannequin」に近い場所が望ましい
その後スケルタルメッシュの一覧が出てくるので、青いグレイマンが表示されている「SK_Mannequin」をクリックで選択します。これでメッシュに基づいたIKリグが作られます。
IKリグはスケルトンではなくスケルタルメッシュに基づいて作られる
名前は自由に付けられる。ここではIK_BlueMannequinとしている
作成したIKリグを開くとこのような画面が表示されます。
リターゲットチェーンの設定
IKリターゲティングを機能させるため、リターゲットルートというものを設定する必要があります。これはリターゲットする際の位置関係のもっとも核となる部分です。「階層」パネルの「pelvis」を右クリックし、メニューから「リターゲットルートの設定」をクリック後、「pelvis」をリターゲットルートに設定します。
pelvisは英語で「骨盤」という意味。Epicスケルトンのメッシュの場合、たいていはこれをリターゲットルートとして設定すれば問題ないだろう
続いて、リターゲティングチェーン(Retarget Chain)を作成していきます。「階層」パネルから、「spine_01」、「spine_02」、「spine_03」をCtrlキーを押しながらクリックすることで同時選択します。その後、右クリックメニューから「選択ボーンからリターゲティングチェーンを新規作成」をクリックします。
下図のようなウィンドウが出るので、チェーン名を「Spine」に変更してOKをクリックします。
右下の「IKリターゲティング」パネルに作成したチェーンが表示されていれば成功です。これでリターゲティングチェーンを設定できました。
違うボーンを設定してしまったら、ゴミ箱マークで削除できるのでそこからやり直そう
同じような手順で、主要な関節にリターゲットチェーンを設定していきます。以下のリスト通りに設定しましょう。
番号 |
ボーン名 |
設定するチェーン |
① |
Spine(上の手順からなら不要) |
spine_01→spine_02→spine_03 |
② |
RightArm |
upperarm_r→lowerarm_r→hand_r |
③ |
LeftArm |
upperarm_l→lowerarm_l→hand_l |
④ |
Neck |
neck_01 |
⑤ |
Head |
head |
⑥ |
RightLeg |
thigh_r→calf_r→foot_r |
⑦ |
LeftLeg |
thigh_l→calf_l→foot_l |
手の指などのリターゲティングチェーンを追加すればさらに詳細なアニメーションリターゲットができる。指先を器用に動かすようなアニメーションをリターゲティングしたい場合は設定するといいだろう
ソルバの作成
続いて、IKを動作させるためにフルボディIKによるソルバ(※)を作ります。左下の「ソルバスタック」タブから「新規ソルバを追加」をクリックし、フルボディIKを追加し、ソルバのルートボーンを「pelvis」に設定します。
※IKの動作を管理する仕組み
さまざまな種類のソルバが選べるが、人の形をしたキャラクター全体をリターゲットしたい場合はフルボディIKを使用するケースが多い
ソルバにもルートボーンが必要なので「pelvis」に設定する。リターゲットルート同様の右クリックメニューから「選択されているソルバにルートボーンを設定」で設定できる
IK目標の設定
「IK目標」を設定します。RightArm、LeftArm、RightLeg、LeftLegのチェーンの先端となっているhand_r、hand_l、foot_r、foot_lの右クリックメニューから「IK目標の新規作成」をクリックします。各関節に四角い「IK目標」が作られていることが分かります。
IKリターゲティングタブから各チェーンのIK目標として、さきほど作ったIK目標を登録します。下の画像を参考にして下さい。
ドロップダウンメニューからIK目標を設定できる。Spine、Neck、HeadにはIK目標は必要無いのでNoneのままで大丈夫だ
IK目標を動かしてみて、キャラクターがこのような動きをすれば成功です。
これでIKリグが完成しました。
IKリターゲッタを作ろう!
IKリグが完成したら、いよいよIKリターゲッタを作りましょう。コンテンツドロワー上で右クリックし、メニューから「アニメーション」→「IKリターゲッタ」をクリックします。
クリックすると、リターゲット元となるIKリグを選択するウィンドウが表示されます。今回は青いグレイマンからZombieに対してアニメーションリターゲットを行いたいので、もととなるIKリグはIK_BlueMannequinを選択します。
無事にIKリターゲッタが作成されたら、好きな名前を付けましょう。ここではRTG_Blue_Zombieとします。
作成したRTG_Blue_Zombieを開くと、設定画面が表示されます。
今のところ、リターゲット元のIKリグしか登録されていない状態なので、リターゲット先のIKリグ(Target IKRig Asset)も同じくIK_BlueMannequinに設定します。右側に青いグレイマンがもう1つ表示されますが、Target Preview MeshをSK_Zombieにすると、青いグレイマンの代わりにZombieが表示されるようになります。
リターゲット先のIKリグをIK_BlueMannequinに設定
Target Preview Meshの項目でSK_Zombieを選択。ゾンビが登場すれば成功
右下のパネルを「アセットブラウザ」タブにすると、青いグレイマンのアニメーション一覧が表示されます。これを選択すると、左側にある青いグレイマンのアニメーションを参照して、Zombieがリターゲットされたアニメーションで動き出します。
アニメーション再生時にリターゲット先の動きがおかしい場合は、自動設定されるチェーンマッピングの関連付けが上手く行っていない可能性がある。右下のタブを「チェーンマッピング」にすれば確認・修正できる
これでIKリターゲッタが完成しました。「アセットブラウザ」タブの「選択したアニメーションをエクスポート」をクリックするか、一番初めにIKリターゲッタを使ったときと同じように、右クリックメニューからの選択でアニメーションをリターゲットすることが可能です。
アニメーションの微調整
上のアニメーションなどを見ても分かる通り、IKリターゲットによるアニメーションは互換スケルトンによるものより、モデルの破綻は少ないです。しかし、完璧というわけでもありません。
例えば、下図の赤枠部分ではZombieの両足が重なってしまっています。これは、両者のもとにしているスケルトンの初期ポーズの角度がずれていることが原因です。
微妙な差だが、青いグレイマンのものに対してZombieの初期ポーズはやや脚を閉じたようなポーズになっている
しかし、IKリターゲッタにはこのズレを修正できる機能が付いています。
メニューから「ポーズ編集」と書かれたボタンをクリックします。すると、どちらのキャラクターも初期ポーズに戻り、リターゲット先のキャラクターには黒い表示でZombieの骨構造が表示されます。
この状態で骨構造を調整できるので、両方の太ももを選択して5度程度外側に開きましょう。これで青いグレイマンに初期ポーズが近くなりました。気を付けることとして、編集が済んだら必ず「ポーズの編集」をもう一度押してこの状態を解除して下さい。
同じアニメーションを再生してみると、足が重ならなくなっていることが分かります。もとのアニメーションと比較しながら、メッシュの重なりなどに少しずつ調整を掛けられることがIKリターゲットの利点の1つです。
IKリグの流用
先ほどの手順では、Zombieは青いスケルトンのIKリグを使いまわしてリターゲットしています(なので、Zombie自体のIKリグは必要ありませんでした)。このように共通のスケルトンを持っていればIKリグは使い回すことができます。
他のキャラクターとかなり体格の異なるEnemyGoblinですが、骨構造は他と変わらないのでTarget Preview Meshを切り替えるだけで問題なく使い回すことが可能です。
ZombieからTarget Preview Meshを切り替えただけのEnemyGoblinだが、ほとんど問題なく動作していることが分かる
異なる骨構造を持つキャラクターへのリターゲット
さらに、IKリターゲッタでは全く異なった骨構造を持つキャラクターでもアニメーションをリターゲットすることができます。
今回は、試しにLichへのIKリターゲッタを作成してみましょう。Lichのスケルトンには下半身がなく、他のキャラクターと共通する骨構造を持っていません。
骨の名前も異なるため、互換スケルトンではこのキャラクターにリターゲットすることは難しい
まずはこれまでと同じ手順で専用のIKリグを作ります。リターゲットチェーンは以下のように設定しましょう。
番号 |
チェーン名 |
設定するチェーン |
① |
Spine |
Spine1_M→Spine2_M→Chest_M |
② |
RightArm |
Shoulder_R→Elbow_R→Wrist_R |
③ |
LeftArm |
Shoulder_L→Elbow_L→Wrist_L |
④ |
Neck |
Neck_M |
⑤ |
Head |
Head_M |
「Pelvis」をリターゲットルートにするのを忘れないようにしよう
ソルバについてもやることはほとんど同じです。フルボディIKを追加して、ルートボーンを設定。IK目標は両腕のみに設定します。
IKリターゲッタのTarget IKRig AssetにこのIKリグを設定するだけで、これまでと同様に問題なくリターゲットすることができます。これでLichも同じアニメーションで動けるようになりました。
さて、これでUndead Packの全てのキャラクターへのリターゲットが完了しました。これらの機能を使いこなせば、いろいろなキャラクターに多種多様なアニメーションを流用することができるはずです。
ぜひ、皆さんのオリジナルのゲームや映像制作に、UE5のアニメーションリターゲット機能を役立ててみて下さい!
『Undead Pack』ダウンロードページ『Zombie Movement and Modular Interaction Animations』
アンリアルエンジンにハマり、ぷちコンでゲーム作ってた男。映像編で2連覇したことも。
昔はよくアーケードゲームとかやってました。
一番やり込んだのは「ケツイ ~絆地獄たち~」「戦国BASARAX」あたり。ローグライトゲームとかも好きです。