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

![スクリーンショット (329).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/663f1dc9-466d-62d3-22b6-53b69f76e3b0.png)
**Vroidで作った自作キャラをUE4で使いたいが全くやり方がわからない**
各所各所ばらばらの記事は存在するけど突っかかるたびに探して回るのは大変だったので、参照記事を上げつつ書きます。こたつでみかん食べながら見てください。
ただの初心者が書いているので一部間違ったやり方・内容があるかもしれません。ご了承お願いします。

####目次

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

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


UE4に持って行っていざアニメーションをつけると、大体肩のあたりが衣服を貫通してきます。
![スクリーンショット (342).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/019f72d5-dd39-710a-9486-7c6676b53d3f.png)
まずVroid上でも貫通しないこと、見た目との兼ね合いで無理そうなら近づくと若干の違和感は出ますが肌のマテリアル自体に衣服の色を塗ってしまうのがおすすめです。

　　
##UE4で作業する

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

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

###プラグインを入れる <a name="plugins">
https://github.com/ruyo/VRM4U
こちらのGitHubのページの赤丸のところから
![スクリーンショット (343).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/8f30c37d-2b90-623b-a50d-bb3214a57087.png)
自分の使っているバージョンを落としてください。
![スクリーンショット (344).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/5dcfb560-2c52-a54d-dc5b-f3293f7f3c89.png)
Zipファイルを解凍して出てきた「plugins」というフォルダを、自分が入れたいプロジェクトのフォルダに入れてください。

![スクリーンショット (346).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/f157a0a5-270f-b64b-7845-04395b1c636c.png)

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

![スクリーンショット (349).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/b8a58b5a-8aa0-ec05-a0c8-ec435890043f.png)
こんな感じで入れられたら大丈夫です。

プロジェクトを起動し、編集からプラグインを開くと、一番下のプロジェクトの枠にVRMのプラグインが追加されている筈です。
![スクリーンショット (350).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/936c3491-b08f-7c2d-bd87-2ec2ee5c8452.png)

これを有効にして、下に出る今すぐ再起動を選択すると、無事VRM4Uのプラグインが使えるようになります。
エクスポートしたVroidのファイルをドラッグ＆ドロップでインポートすると、こんな感じのオプションウィンドが出ます。
![スクリーンショット (352).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/a4d157fb-deb8-23c4-24f7-097900285185.png)
importを押せば、無事VroidをUE4に落とすことができます。

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

###ボーンをリターゲットする <a name=boneretarget>　

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を開きます。
![スクリーンショット (415).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/63dfa477-829f-24d8-112a-5c4f1c1daf27.png)
今回はツールバーにあるリターゲットマネージャーという機能を使ってボーンマッピングをしていきます。
リターゲットマネージャーを押すと、左のスケルトンツリータブの横にリターゲットマネージャーのタブが追加されます。
![スクリーンショット (416).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/9500fbf2-248c-3d07-c247-3f9c524612cb.png)
今回は**リグを設定**の方の機能を使っていきます。
**リグを選択**をHumanoidにします。

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

1/29追記

~~特にVroidで髪のボーンを設定している、スカート等揺れ物がある場合、変な位置に変なボーンが割り当てられているということが大量発生します。
ちなみにこのままリターゲットすると蠢く肉団子ができます。（やりました）~~
~~その外にも左右のボーンが入れ替わっていたり、指先のボーンの本数が違うため変になっていたり……と大体大変なことになっています。~~
~~こればかりはグレイマンのボーンと自作のモデルのスケルトンのボーンを見比べながら修正するしかありません。~~
~~腰や太ももなどの大きいものは初期画面に、指先などの細かいボーンは[詳細設定を表示]~~
~~のところで切り替えられます。~~
~~一回だけ頑張ってリマッピングしてください。~~
~~IK、FK、Twistのボーンはないのでnoneで大丈夫です。~~

1/20の最新版プラグインにて自動でVroidのスケルトンを開くと自動でリターゲットマネージャーが開き、ボーンも割り当てられているのを確認しました。
![スクリーンショット (423).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/09b2612e-05cf-c650-1da9-854490c5026d.png)
Vroidのスケルトンを開くとこのようになっていると思います。
確認できたら保存してください。
（上記の現象はおそらくMannnequinのリターゲットよりも先にVroidのスケルトンを開いてしまった為起こったと思われます）
もし、Vroidのリターゲットがうまく入らなかった、という方はリグを選択をHumanoidにして下記の図を参考にボーンをリターゲットしてください。
左　UE4のボーン　　右　Vroidのボーン
![スクリーンショット (364).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/7ad57f1a-e4dd-6499-5ea3-9b5264188eec.png)
![スクリーンショット (362).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/fb11f5f4-61fa-e355-d749-498469abf3cc.png)
![スクリーンショット (363).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/a38e34d4-cabf-4374-512b-ba0a87bc72eb.png)

どれだけ頑張っても右手のボーンが変になってるのでもし何とかする方法見つけたら追記します。（マッピングは左右対称なのでどうしようもない……）
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

この４つのプラグインを導入してください。
先ほど使ったVRM4Uプラグインをコンテンツブラウザから開きます。
![スクリーンショット (366).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/69f343e0-84ec-7325-d6cf-ad82e8f91033.png)
VRM4Uコンテンツ＞Util＞Actor＞latest　に入っている
CR_VroidsimpleFK
CR_VroidsimpleIK
CR_VroidsimpleMorph
をコピーします。
これらを自分のわかりやすいフォルダにペーストしておきます。
名前も変えておくことをお勧めします。（名前が同じままだと後で困ります）
コピーしたファイルを開きます。
![コントロールリグ１.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/981bd0f2-9e99-209a-b5cf-2d38b4d33152.png)
プレビュー画面の下にあるリグ階層のタブから、赤丸のRoot以下の階層を削除します。
プレビューのモデルが潰れるのは問題ありません。仕様です。
![スクリーンショット (424).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/aba2da4c-dfe2-c474-49b3-fe9ef70dd54b.png)
リグ階層のroot_sを右クリック＞インポート＞メッシュを選択を押し自分のモデルのSKを選択してください。
![スクリーンショット (370).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/4cae3d34-8280-1f65-ada7-11575b166c08.png)
プレビューのモデルがもとに戻ると思います。
![コントロールリグ３.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/69b128ff-ee70-83ea-08a7-27b03a2c520b.png)
プレビューとリグ階層がこんな感じになっていたらOKです。　
後は赤丸のところのプレビューメッシュに自作のモデルのSKをセットしましょう。
コンパイルすれば作業は完了です。
これをIK、FK、Morphのすべてに行ってください。
この後の作業は処理落ちする可能性が個人的に高かったので、必ず保存しておいてください。

先ほどのコントロールリグが入っていたのと同じVRM4Uのフォルダを開きます。
「WBP_ControlRig」を右クリックし、[エディタユーティリティウェジットを実行]を選択します。
![スクリーンショット (374).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/44722696-12a3-cbe0-d7de-0f5c53eae3c1.png)
「WBP_ControlRig」を右クリックし、[エディタユーティリティウェジットを実行]を選択します。
するとこのようなウェジットが開きます。
![スクリーンショット (375).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/2bc092b3-1ad9-35eb-77d9-77f5b3b6f285.png)
Dst Control Rig BP
Src Vrm Asset List
Preview Mesh に
先ほど自作のモデルに組み替えたコントロールリグを入れてください。
（IK RigにはIKを、FK RigにはFKを、Morph RigにはMorphを入れてください）
![スクリーンショット (377).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/01cf1095-fe4a-a812-ebd4-2e478aa434d7.png)
[Create IK Rig]を押してしばらく待つと、コントロールリグが作成されます。毎回必ず保存することを推奨します。（FKが処理落ちする可能性が個人的にかなり高かったように思えます）
再起動すると保存してなかったデータは吹き飛んでしまうので必ず保存して下さい。
この作業をIK、FK、Morphのすべてに行って、コントロールリグは完成です。

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

##MIXAMOからアニメーションを持ってくる
![スクリーンショット (385).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/c26250bf-c8b6-bd0d-15ec-c3646b2eec75.png)

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

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

###1.Mixamo converterを入れる


Mixamoのアニメーションはそのまま持ってきてもうまくリターゲットすることができません。（リターゲットできなかったり崩壊したり）
ので、コンバーターを使うことになります。
http://terribilisstudio.fr/?section=products
これのMixamo converterをダウンロードしてください。
怪しい見た目ですがスパムとかウイルスとかではありません。必ずCドライブに入れておいてください。（Dドライブだとうまく変換できないなどの報告がある為）
パスワードはサイトに書いてあります。
![スクリーンショット (384).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/27bdd7a1-3f6a-dc7b-664d-a31f3fb8e87e.png)
解凍するとこんなのが出てきます。

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

Mixamoを開いて、モーションのプレビュー画面の右側にある[UPLOAD CHARACTER]を押してください。
![スクリーンショット (382).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/b489c955-616f-f0c3-a2e5-d3b049bf7de5.png)
開いた枠にMixamo　Converterに入っているFBXをドラッグ＆ドロップすると、ロードの後プレビューのキャラクターがグレイマンに変わるはずです。
![スクリーンショット (386).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/c0b9eb3d-37bb-7524-d2bd-aa6790952796.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/34180131-540d-822e-8564-e73de681dc9d.png)

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

###ファイルを変換する

ダウンロードしたアニメーションをMixamo Converterの中の[initial]に入れてください。
Mixamo_Converter.exeを起動します。
変換した後のファイルがいらなければ下のチェックボックスにサインを入れ、赤丸のボタンをクリックしてください。
![スクリーンショット (387)kai.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/f015f978-6688-c141-d071-5bb080e079b4.png)
すると、[Conmplete]フォルダに変換されたFBXが入っている筈です。
（コンバーターを閉じるときは右上のカエルの手の跡を押してください）
これで変換は完了です。

###UE4に入れる

変換したファイルをUE4のフォルダに入れます。
インポート設定はこんな感じにしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/05812163-afce-eb99-bbe9-f4fb29030cd7.png)
スケルトンには必ずグレイマンのスケルトンを指定してインポートしてください。

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

##アニメーションをリターゲットする
参考記事
Daichi 様　https://zenn.dev/daichi_gamedev/books/unreal-engine/viewer/retarget-animation
公式ブログ　https://docs.unrealengine.com/4.27/ja/AnimatingObjects/SkeletalMeshAnimation/RetargetingDifferentSkeletons/

アニメーションリターゲットは、ボーンのリターゲットができていればとても簡単です。
![スクリーンショット (388)kai.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/21430e3e-dd6c-b634-a3c7-d96862f4e16e.png)
使いたいアニメーションを右クリックしてAnimアセットをリターゲットするにカーソルを合わせ、Animアセットを複製するを選びます。
![スクリーンショット (389).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/c6660ceb-7b29-cb3a-7204-607d84408679.png)
左の欄からリターゲットしたスケルトンを選びます。（溢れかえってますが気にしないでください）
![スクリーンショット (389)kai.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/7931e8e6-ef1e-0563-5fd0-d8251dcd56e7.png)
選択し、右側の新規アセット側に選んだスケルトンの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の振付師如く動きの度に動かしてキーを打つのは効率が悪い！！！（でも似たようなアニメーションがなければやるしかない）
ので、今回は持ってきたアニメーションを編集する方法を書きます。

![スクリーンショット (394).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/d0431fb3-bc97-8280-70d5-0b7e3e0174c5.png)
適当なレベルを開きます。
![スクリーンショット (395).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/fb36eeb3-d4d8-279f-9715-cd94ffba3584.png)
アニメーションからレベルシーケンスを選んで作成します。
![スクリーンショット (405).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/2b585f57-d627-75a8-139a-06f3e7e17472.png)
するとこんな感じのタブが開くはずです。
![スクリーンショット (396).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/0046b2bf-d6fe-98ee-20bb-5903abb43b8a.png)
このシーケンサーにドラッグ＆ドロップで**コントロールリグを作成したモデルのスケルタルメッシュ**（以下SKと略）を入れてください。コントロールリグではなくスケルタルメッシュです。
![スクリーンショット (406).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/c98ae777-cc67-9eb5-fc7f-aa54ac8e6c99.png)
無事入れることができたら、SKの欄の下の方にあるアニメーションの枠にある[+アニメーション]を押します。無事リターゲットできているか元からアニメーションがあれば、このようにアニメーションが表示されるはずです。
![スクリーンショット (397).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/e543e4f6-c151-39bd-c433-c8212a2ec14b.png)

選ぶとこんな感じに表示されます。
アニメーションのスタートは必ず0かマイナスに合わせておきましょう。最初にT字ポーズが入ってしまって修正するのがめんどくさくなります。シーケンサーの終了地点の赤いバーをアニメーションの再生時間内に収めるのも忘れずに！（途中でTポーズに戻り始める謎のアニメーションが出来上がったりモデルがあらぶったりしやすくなるので）
これをコントロールリグにベイクしていきます。
**SKの黒いバー**を右クリックします。
![スクリーンショット (398).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/2e69779d-10c1-33e0-8bb8-7bb0516ed0e6.png)
こんな感じのタブが現れます。この中からコントロールリグにベイクを選んで、先ほど作ったコントロールリグを選んでください。体勢を変えたい時はIKを、表情を変えたい時はMorphを選んでください。
選ぶとタブがでます。
![スクリーンショット (399).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/21bf888f-31b7-d595-6648-2caf9d10916f.png)
これはそのままだとフレーム毎にキーが打たれてしまうのをある程度の動きがあるところだけに減らしてくれるという代物です。デフォルトだとオフになってるのでチェックを入れてください。
個人的な所感ですが、呼吸や指先の細かい小さい動きしかない場合はtoleranceは0.001～0.01、動きが大きい場合は0.05～0.5（かなり幅がありますが）で調整するといいと思います。MIXAMOは0.05で呼吸などの動きが消えてしまうこともあるので細かく調整してください。
![スクリーンショット (401).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/ba38a984-9509-b656-951e-a9216d6d5e6a.png)
[コントロールリグにベイク]を押すと、こんな感じでキーとコントロールリグが現れます。
![スクリーンショット (402).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/bebf3604-6d85-2daf-db51-0402e2d66466.png)
いい感じに調整します。
シーケンスのタブの上のバーにある〇〇フレームfpsが一秒間におけるフレーム数になるので（30fpsなら下のメモリが30毎に１秒経ちます）そこを考えて調整します。
なんかいい感じに調整できたら、これをアニメーションにしていきます。
![スクリーンショット (403).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/17eab70e-ad20-fdc7-0a83-062398bbd23b.png)
SKの黒いバーを右クリックし、アニメーションシーケンスをベイクを選びます。
保存するファイルを選びます。
![スクリーンショット (404).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2257391/33802f14-5f88-9676-8e38-7c3846746551.png)
こんなタブが開きますが特に変更なく[アニメーションシーケンスにベイク]を押して大丈夫です。
すると、コントロールリグで編集したアニメーションのアニメーションシーケンスが出来上がります。

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

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