SPARKCREATIVE Tech Blog

https://www.spark-creative.jp/

【UE5】IKリターゲットとMayaでボーン移植してみた

こんにちは!!!クライアントエンジニアの小林です。

UE5を触るようになってからモデルを動かしたいなという欲が出てきました。

ということでリターゲットをやってみます。
UE4では触ったことないので何気に初です。

もうひとつ、リターゲットの過程でリターゲット元と先でのボーン数の差が多いなと思い、これならリターゲットしないでボーン移植したほうが精度いいはず!という思いからボーン移植もやってみました。

作業環境

windows 10
・UnrealEngine 5.0.3-release
Visual Studio 2019
・Maya 2019

リターゲット

VRCモデルをインポート

VRで遊んでいた時にBoothでいくつか買ったうちのモデルのひとつを使いたいと思います。
FBXインポートオプションは特にいじる必要はないはずです。


IKリグ設定

右クリック > アニメーション > IK リグを選択します。
スケルタルメッシュを選択と出るので、先ほどインポートしたモデルを選択します。

作成されたIKリグアセットを開きます。
ボーンが描画されるだけでなんかそれっぽいですね。

開かせておいてなんですが、リターゲット元のIKリグを見ないと作業できませんので、いったん最小化します。
リターゲット元のアセットはAll > コンテンツ > Characters > Mannequins > Rigs > IK_Mannequinにあります。


新しいチェーンを追加する

ウィンドウ右下にあるIKリターゲティングのチェーン一覧からいくつかIK_Hakkaに追加していきます。
ボーン数やメッシュが異なるので全部追加したところで大した意味はないです。
というか逆に見た目がおかしくなるので適度な重要な箇所だけ追加するのがいいです。

IK_Hakkaの場合は画像のチェーンを追加するとちょうどよかったです。


IKリターゲット

右クリック > アニメーション > IK リターゲッタを選択します。
アニメーションをコピーする元のIKリグを選択と出るので、IK_Mannequinを選択します。

生成したIK リターゲッタ アセットを開きます。
Target IKRig Assetに先ほどチェーンの追加作業をしたIKRig アセットをセットします。

アセット ブラウザから任意のアニメーションを選択すると再生されます。
チェーンの追加がいい感じにできていたらこんな感じにアニメーションされます。

ポーズ状態が異なるとアニメーションも当然異なってくるのでIK_Mannequinに合わせます。
ポーズの編集を選択すると、ボーンのロケータを編集できるようになります。
編集が終わったら再度ポーズの編集を押すと変更が適用されます。

最終的にはこんな感じになりました。
この機能すごいですね。
あとは選択したアニメーションをエクスポートでアニメーションシーケンスが生成されます。


Mayaでボーン移植

参考

まず大前提としてMayaの知識はほぼ皆無なので「maya unreal bone」と検索しました。
www.youtube.com

インターネットってすごいですね。
これを見ながらで大体解決しました。
少し戸惑った部分もあったのでそこら辺は触れていきます。

QuinnモデルのボーンをMayaにインポート

まずはQuinnモデルのスケルタルメッシュをエクスポートします。
エクスポートするとメッシュと一緒にボーンもついてくるみたいです。
MannyとQuinnをどちらをエクスポートするかは、リターゲットモデルの性別に合わせるのが無難でしょう。
ボーン構成に大きな違いはないでしょうが骨格が違うのでMayaでの作業量削減のためにも。

FBXエクスポートオプションは少しいじりました。

Mayaを開いてファイル > 読み込み...から先ほどエクスポートしたFBXをインポートします。

ボーンをレイヤーを最前面にするために画像の部分をクリックします。UI名が分からない。。。

ボーンとメッシュをグループから外してシーンに直置きしました。
左上のリストボックスからリギングを選択。
ボーンとメッシュを選択した状態でスキン > スキンのバインド解除をします。
これでメッシュとボーンの同期が解除されます。
メッシュを削除することで自動的にバインドが解除されるか分かっていないので一応手順を踏んでいます。
バインド解除後にメッシュを削除しました。

バインド解除前
バインド解除後

VRCモデルのインポート

モデルをインポートしました。
アウトライナが溢れていますね。
VRCで使われることを前提としたモデルなので当然口元のブレンドシェイプが設定されています。

今回はリターゲットをしたいだけなのでブレンドシェイプは外しちゃいます。
ウィンドウ > アニメーション エディタ > シェイプ エディタからシェイプエディタを開きます。

Ctrl+Aで全選択して右上のゴミ箱アイコンをクリックして削除します。

削除後に、アウトライナからブレンドシェイプ関連のメッシュとVRCモデル側のボーンを削除します。
だいぶすっきりしました。

ボーンを基準にVRCモデルの位置とスケール調整をするための準備をします。
作成 > 空のグループから空のグループを作成して適当に名前を付けて、メッシュを格納します。

先ほど作成したグループの位置とスケールを調整してこんな感じになりました。
(0,0,0)を裸足で合わせるのか靴で合わせるのかをいまいち分かっていないでのですが、今回は裸足で合わせてみました。

ボーンを合わせる

参考動画を見てください。
素人の私には操作感の言語化無理でした。


ボーンを合わせる作業が完了したらバインドします。
ボーンとメッシュを選択した状態でスキン > スキンのバインドを選択してバインドします。
バインド後にボーンの回転に合わせてメッシュも動いたらとりあえず成功です。

ここで一旦ファイル > シーンを保存で保存しておきましょう。

スキンウェイトペイント

ここまでで十分面倒なのですが、まだ面倒が続きます。
ルートボーン以外を選択して動かしてみると分かるのですが動いてほしくないメッシュまで動きます。

ボーンを合わせると同様ここから先は参考動画を。
。。。
面倒すぎたので諦めました。
シーンは保存したので気が向いたらやるとします。

MayaからFBX出力

ファイル > すべて書き出し...を選択します。

ファイルの種類をFBX exportにします。

ここら辺もよく分からないので適用にします。
スムージング グループをオン。
アニメーションとカメラとライトはオフ。
あとはデフォルトです。

出力をします。
場合によってはエラーが出ます。
警告なので恐らく大丈夫でしょう。

出力したモデルをUE5にインポート

SkeltonにSK_Mannequinをセットしてインポートします。

えーと。
化け物ができました。


おわり!!!

スキンウェイトペイントの重要性がとても分かりました。
モデラーさんはこんな手間のかかることをしてるのでしょうか。
頭おかしくなりそう。

私のようなものぐさはリターゲットを素直にやるのがいいですね。