UE4でVroidにアニメーション+コントロールリグを使いたい



Vroidで作った自作キャラをUE4で使いたいが全くやり方がわからない
各所各所ばらばらの記事は存在するけど突っかかるたびに探して回るのは大変だったので、参照記事を上げつつ書きます。こたつでみかん食べながら見てください。
ただの初心者が書いているので一部間違ったやり方・内容があるかもしれません。ご了承お願いします。

目次

Vroidでモデルを作る
UE4で作業する
プラグインを入れる
ボーンをリターゲットする
コントロールリグをつける
MIXAMOからアニメーションを持ってくる
アニメーションをリターゲットする
ControlRigでアニメーションを編集する

Vroidでモデルを作る

これに関しては解説してたらきりがないので自分で作り方・使い方を調べてください……
今回書くやり方を使うにあたってVroidの時点で気をつけなければいけないポイントは肌のマテリアルについてになります。
この点だけ注意して、普通にエクスポートしてもらって大丈夫です。

UE4に持って行っていざアニメーションをつけると、大体肩のあたりが衣服を貫通してきます。

まずVroid上でも貫通しないこと、見た目との兼ね合いで無理そうなら近づくと若干の違和感は出ますが肌のマテリアル自体に衣服の色を塗ってしまうのがおすすめです。

  

UE4で作業する

ネットで検索すると大体Blenderでボーンをひねったりサイズをいじったり……みたいな方法が出てきます。が、特に衣装の編集をしないのであればVRM4Uというインポーターを使うことができます。(UE5にも対応)

作者様のブログ
https://ruyo.github.io/VRM4U/
こちらのブログに詳しいやり方は書いてありますが、軽くやり方を書きます。

プラグインを入れる

https://github.com/ruyo/VRM4U
こちらのGitHubのページの赤丸のところから

自分の使っているバージョンを落としてください。

Zipファイルを解凍して出てきた「plugins」というフォルダを、自分が入れたいプロジェクトのフォルダに入れてください。

このように
自分がUE4のプロジェクトを保存してるフォルダ>入れたいプロジェクト
のフォルダを開いて入れてください。


こんな感じで入れられたら大丈夫です。

プロジェクトを起動し、編集からプラグインを開くと、一番下のプロジェクトの枠にVRMのプラグインが追加されている筈です。

これを有効にして、下に出る今すぐ再起動を選択すると、無事VRM4Uのプラグインが使えるようになります。
エクスポートしたVroidのファイルをドラッグ&ドロップでインポートすると、こんな感じのオプションウィンドが出ます。

importを押せば、無事VroidをUE4に落とすことができます。

上記の作者様のブログに見た目やマテリアルの調整方法が乗っていますので、必要な方はそちらをご覧ください。

ボーンをリターゲットする  

VroidはグレイマンやMixamo、その他アセットのキャラクターとボーン構造が異なるのでリターゲットをする必要があります。これをすることにより、異なるボーン構造のアニメーションをリターゲットして利用することが可能になります。

参考にしたブログ
公式ブログ https://docs.unrealengine.com/4.27/ja/AnimatingObjects/SkeletalMeshAnimation/Persona/BasePoseManager/
historia様のブログ https://historia.co.jp/archives/17403/

コンテンツ>Mannequin>Charactor>Mashに格納されているUE4_Mannequin_Skeletonを開きます。

今回はツールバーにあるリターゲットマネージャーという機能を使ってボーンマッピングをしていきます。
リターゲットマネージャーを押すと、左のスケルトンツリータブの横にリターゲットマネージャーのタブが追加されます。

今回はリグを設定の方の機能を使っていきます。
リグを選択をHumanoidにします。

UE4_Mannequin_Skeletonを保存します。
先ほど入れたVRMのスケルトンを開きます。

1/29追記

特にVroidで髪のボーンを設定している、スカート等揺れ物がある場合、変な位置に変なボーンが割り当てられているということが大量発生します。
ちなみにこのままリターゲットすると蠢く肉団子ができます。(やりました)

その外にも左右のボーンが入れ替わっていたり、指先のボーンの本数が違うため変になっていたり……と大体大変なことになっています。
こればかりはグレイマンのボーンと自作のモデルのスケルトンのボーンを見比べながら修正するしかありません。
腰や太ももなどの大きいものは初期画面に、指先などの細かいボーンは[詳細設定を表示]
のところで切り替えられます。
一回だけ頑張ってリマッピングしてください。
IK、FK、Twistのボーンはないのでnoneで大丈夫です。

1/20の最新版プラグインにて自動でVroidのスケルトンを開くと自動でリターゲットマネージャーが開き、ボーンも割り当てられているのを確認しました。

Vroidのスケルトンを開くとこのようになっていると思います。
確認できたら保存してください。
(上記の現象はおそらくMannnequinのリターゲットよりも先にVroidのスケルトンを開いてしまった為起こったと思われます)
もし、Vroidのリターゲットがうまく入らなかった、という方はリグを選択をHumanoidにして下記の図を参考にボーンをリターゲットしてください。
左 UE4のボーン  右 Vroidのボーン


どれだけ頑張っても右手のボーンが変になってるのでもし何とかする方法見つけたら追記します。(マッピングは左右対称なのでどうしようもない……)
https://docs.unrealengine.com/4.27/ja/AnimatingObjects/SkeletalMeshAnimation/RetargetingDifferentSkeletons/
によると[Recursively Set Translation Retargeting Skeleton(移動のリターゲットのスケルトンを再帰的に設定)] という項目があるらしいですが見当たらず……
日本語版だと出ないとかあるんですかね(誰か教えてください)

無事マッピングできたら[保存]を押してボーンマッピングを保存しておきましょう。
別のVroidのモデルをリマップしたい時、[ロード]から保存したデータを選択するだけでリマップできます。

コントロールリグをつける

コントロールリグは、先ほど入れたVRM4Uプラグインを利用してつけていきます。
参考記事 https://ruyo.github.io/VRM4U/06_controlrig/

  • Python Editor Script Plugin
  • Control Rig
  • Sequencer Scripting
  • Editor Scripting Utilities

この4つのプラグインを導入してください。
先ほど使ったVRM4Uプラグインをコンテンツブラウザから開きます。

VRM4Uコンテンツ>Util>Actor>latest に入っている
CR_VroidsimpleFK
CR_VroidsimpleIK
CR_VroidsimpleMorph
をコピーします。
これらを自分のわかりやすいフォルダにペーストしておきます。
名前も変えておくことをお勧めします。(名前が同じままだと後で困ります)
コピーしたファイルを開きます。

プレビュー画面の下にあるリグ階層のタブから、赤丸のRoot以下の階層を削除します。
プレビューのモデルが潰れるのは問題ありません。仕様です。

リグ階層のroot_sを右クリック>インポート>メッシュを選択を押し自分のモデルのSKを選択してください。

プレビューのモデルがもとに戻ると思います。

プレビューとリグ階層がこんな感じになっていたらOKです。 
後は赤丸のところのプレビューメッシュに自作のモデルのSKをセットしましょう。
コンパイルすれば作業は完了です。
これをIK、FK、Morphのすべてに行ってください。
この後の作業は処理落ちする可能性が個人的に高かったので、必ず保存しておいてください。

先ほどのコントロールリグが入っていたのと同じVRM4Uのフォルダを開きます。
「WBP_ControlRig」を右クリックし、[エディタユーティリティウェジットを実行]を選択します。

「WBP_ControlRig」を右クリックし、[エディタユーティリティウェジットを実行]を選択します。
するとこのようなウェジットが開きます。

Dst Control Rig BP
Src Vrm Asset List
Preview Mesh に
先ほど自作のモデルに組み替えたコントロールリグを入れてください。
(IK RigにはIKを、FK RigにはFKを、Morph RigにはMorphを入れてください)

[Create IK Rig]を押してしばらく待つと、コントロールリグが作成されます。毎回必ず保存することを推奨します。(FKが処理落ちする可能性が個人的にかなり高かったように思えます)
再起動すると保存してなかったデータは吹き飛んでしまうので必ず保存して下さい。
この作業をIK、FK、Morphのすべてに行って、コントロールリグは完成です。

2/6 追記
Create IK Rigをした後、コンパイルをすることによって高身長モデルはモデル破綻が起きてしまうことがわかりました。
Create IK Rigをした後は、コンパイルをしないで一度コントロールリグをレベル上に配置→コンパイルをすると破綻せずにコントロールリグを使用できます。

MIXAMOからアニメーションを持ってくる

UE4の初期アニメーションや無料のアニメーションスターターパックにはないアニメーションが欲しいとき、めちゃめちゃ便利なサイト、MixamoからUE4にアニメーションを入れる方法を書いていきます。
また、MixamoにはAdobeアカウントが必要になります。無料で作れるので作ってください。

参考記事 モストード・ラボ様 https://mostoad.com/ue4-part35

1.Mixamo converterを入れる

Mixamoのアニメーションはそのまま持ってきてもうまくリターゲットすることができません。(リターゲットできなかったり崩壊したり)
ので、コンバーターを使うことになります。
http://terribilisstudio.fr/?section=products
これのMixamo converterをダウンロードしてください。
怪しい見た目ですがスパムとかウイルスとかではありません。必ずCドライブに入れておいてください。(Dドライブだとうまく変換できないなどの報告がある為)
パスワードはサイトに書いてあります。

解凍するとこんなのが出てきます。

Mixamoからアニメーションを落としてくる

Mixamoを開いて、モーションのプレビュー画面の右側にある[UPLOAD CHARACTER]を押してください。

開いた枠にMixamo Converterに入っているFBXをドラッグ&ドロップすると、ロードの後プレビューのキャラクターがグレイマンに変わるはずです。

アニメーションは右のスライドである程度カスタマイズできます。
歩行などの繰り返しループで使うアニメーションは[in place]にチェックを有効にしておくのがおすすめです。ルートモーションが無効になります。

ダウンロードの設定は
・Skinをwithoutにする
・Keyframe ReductionをUniformにする
の変更を行ってください。

ファイルを変換する

ダウンロードしたアニメーションをMixamo Converterの中の[initial]に入れてください。
Mixamo_Converter.exeを起動します。
変換した後のファイルがいらなければ下のチェックボックスにサインを入れ、赤丸のボタンをクリックしてください。

すると、[Conmplete]フォルダに変換されたFBXが入っている筈です。
(コンバーターを閉じるときは右上のカエルの手の跡を押してください)
これで変換は完了です。

UE4に入れる

変換したファイルをUE4のフォルダに入れます。
インポート設定はこんな感じにしてください。

スケルトンには必ずグレイマンのスケルトンを指定してインポートしてください。

これでMixamoのアニメーションをUE4に持ってくることができます!

アニメーションをリターゲットする

参考記事
Daichi 様 https://zenn.dev/daichi_gamedev/books/unreal-engine/viewer/retarget-animation
公式ブログ https://docs.unrealengine.com/4.27/ja/AnimatingObjects/SkeletalMeshAnimation/RetargetingDifferentSkeletons/

アニメーションリターゲットは、ボーンのリターゲットができていればとても簡単です。

使いたいアニメーションを右クリックしてAnimアセットをリターゲットするにカーソルを合わせ、Animアセットを複製するを選びます。

左の欄からリターゲットしたスケルトンを選びます。(溢れかえってますが気にしないでください)

選択し、右側の新規アセット側に選んだスケルトンのSKが表示されたら、表の下の赤丸のリターゲットを押します。
リターゲットしたアニメーションがコンテンツフォルダに格納されます。
これだけです。

ControlRigでアニメーションを編集する

参考記事
pupurigesu様 https://pupurigesu.hatenablog.com/entry/2021/05/24/231530
おかず様 https://pafuhana1213.hatenablog.com/entry/ControlRig-Inversion

コントロールリグとシーケンサーを使えばUE4だけでアニメーションを作ることができます。
参考 http://nanyatti.wp.xdomain.jp/2017/07/15/ue4control-rig%E3%81%A7%E7%B0%A1%E5%8D%98%E3%81%AA%E3%83%A2%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E3%80%82/
しかしMMDの振付師如く動きの度に動かしてキーを打つのは効率が悪い!!!(でも似たようなアニメーションがなければやるしかない)
ので、今回は持ってきたアニメーションを編集する方法を書きます。


適当なレベルを開きます。

アニメーションからレベルシーケンスを選んで作成します。

するとこんな感じのタブが開くはずです。

このシーケンサーにドラッグ&ドロップでコントロールリグを作成したモデルのスケルタルメッシュ(以下SKと略)を入れてください。コントロールリグではなくスケルタルメッシュです。

無事入れることができたら、SKの欄の下の方にあるアニメーションの枠にある[+アニメーション]を押します。無事リターゲットできているか元からアニメーションがあれば、このようにアニメーションが表示されるはずです。

選ぶとこんな感じに表示されます。
アニメーションのスタートは必ず0かマイナスに合わせておきましょう。最初にT字ポーズが入ってしまって修正するのがめんどくさくなります。シーケンサーの終了地点の赤いバーをアニメーションの再生時間内に収めるのも忘れずに!(途中でTポーズに戻り始める謎のアニメーションが出来上がったりモデルがあらぶったりしやすくなるので)
これをコントロールリグにベイクしていきます。
SKの黒いバーを右クリックします。

こんな感じのタブが現れます。この中からコントロールリグにベイクを選んで、先ほど作ったコントロールリグを選んでください。体勢を変えたい時はIKを、表情を変えたい時はMorphを選んでください。
選ぶとタブがでます。

これはそのままだとフレーム毎にキーが打たれてしまうのをある程度の動きがあるところだけに減らしてくれるという代物です。デフォルトだとオフになってるのでチェックを入れてください。
個人的な所感ですが、呼吸や指先の細かい小さい動きしかない場合はtoleranceは0.001~0.01、動きが大きい場合は0.05~0.5(かなり幅がありますが)で調整するといいと思います。MIXAMOは0.05で呼吸などの動きが消えてしまうこともあるので細かく調整してください。

[コントロールリグにベイク]を押すと、こんな感じでキーとコントロールリグが現れます。

いい感じに調整します。
シーケンスのタブの上のバーにある〇〇フレームfpsが一秒間におけるフレーム数になるので(30fpsなら下のメモリが30毎に1秒経ちます)そこを考えて調整します。
なんかいい感じに調整できたら、これをアニメーションにしていきます。

SKの黒いバーを右クリックし、アニメーションシーケンスをベイクを選びます。
保存するファイルを選びます。

こんなタブが開きますが特に変更なく[アニメーションシーケンスにベイク]を押して大丈夫です。
すると、コントロールリグで編集したアニメーションのアニメーションシーケンスが出来上がります。

二つ以上のコントロールリグを使いたい方はこちらのブログを参照してください。
https://ruyo.github.io/VRM4U/07_controlrig_morph/
(SKにベイクする方法だと二つ以上のシーケンスは使えません…)

あとがき

ド素人ながら自分が延々と理解するまで時間がかかったので簡単ですがまとめてみました。
できねえんだわ!!とかおかしいんじゃ!!とかありましたら気軽にご連絡ください。
Twitterに常時在中しています。
どうでもいいですが花譜さんのMVってUE4で作れそうですよね。
UE4とVroidであの髪の感じ再現できないかな……(年を追うごとに精密になるモデルをみつつ)
ここまで読んでいただきありがとうございました!