
Unity上のモーションでUE4のモデルを動かしてみた
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
概要
近年、Motion Capture や Vtuber などが非常に流行っていて、UnityとUE4両方経験がある私もその辺に興味があるので、モーション検知などをやってみたかった。
UnityよりUE4が個人の好みなので、実際UE4上のモデルをモーションで動かしたいと思います。いろいろ調べたら、無料ないい方法が少ないらしいです。
今回はUnityのモーション検知ソフト経由、UE4上のモデルをモーションで動かす記事です。
全体のイメージは :
1.ThreeDPoseTracker(Unity) でモーション検知
2.VMCtoMOP(Unity) 検知したモーションをUE4に使えるデータに転換
3.MopUE4 というプラグインで転換したモーションでUE4のモデルを動かす
マシン環境
CPU : Intel i7-6920HQ
GPU : AMD Radeon Pro 460
Memory : 16GB
System : Windows 10 (with .NET 5 installed)
IDE : Visual Studio 2019 Community
Editor : Visual Studio Code
Terminal : Windows Terminal (or Command Prompt)
事前に用意するツール
- Unreal Engine (v4.26以降)
- Quixel Bridge
- この文章の骨格認識ツール(Unity):
ThreeDPoseTracker_Win_x64_v0_4_0.zip -
このGithubリンクにあるVMCからMOPに転換するツール(Unity) :
VMCtoMOP.zip -
このGithubリンクにあるUE4用のMOP Plugin(C++ for UE4) :
MopUE4-0.1.0
プロジェクト作成とプラグイン追加

まず、UE4を起動して、新しいGameプロジェクトを作成します。



そして、OSC(Open Sound Control) と Control Rig 二つプラグインを有効にし、プロジェクトを一回閉じます。


事前用意したMopUE4-0.1.0を開いて、Pluginsフォルダをさっき閉じたUE4プロジェクトフォルダに展開します。再度UE4プロジェクトを起動したら、プラグインにMopが追加されるはずなので、それを有効化します。(もし再起動が提示されたら、一回再起動しても構いません)
UE4プロジェクトにモデルの導入(Quixel Bridge: MetaHuman)



Quixel Bridge を起動し、MetaHuman Presetsに入ります。
好きなモデルを選んで(こちの場合はKai)、ダウンロードしたら、起動中のUE4プロジェクトにExportします。
Exportが終ったら、いくつワーニングが出ますので、すべてEnable Missingを押します。(もし再起動が提示されたら、一回再起動しても構いません)
設定調整と実行



UE4に追加されたMetaHumanのBlueprintを開きます(こちの場合はBP_Kai)。
まずClass Settingsの部分にあるParent ClassをBP_MopPawnにします。
そしてComponentsタブにあるBodyを選んで、Details -> Animationのブロックにある
Animation ModeをUse Animation Blueprintにし、その操作でAnim Classの設定が出てきて、Anim ClassをABP_MetaHuman_RotationOnlyにします。


修正したモデル(こちの場合はBP_Kai)とMOPプラグインで追加されたBP_Receiverをシーンに入れます。



ThreeDPoseTrackerとVMCtoMOPを展開し、ThreeDPoseTracker.exeとVMCtoMOP.exeを実行します。
ThreeDPoseTrackerのConfigurationにあるPort番号をVMCtoMopのReceive Portに記入し、VMCtoMopのSend PortをUE4プロジェクトのシーンにあるBP_Receiver の Mop -> Portに記入します。
BP_KaiのMop ReiceiverをさっきのBP_Receiverにします。

UE4プロジェクトをPlayします。
ThreeDPoseTrackerのSource DeviceをMovie Fileにし、Load Movideボタンで事前用意したダンス動画をロードして、ThreeDPoseTracker -> VMCtoMOP -> UE4の順番でモーションデータが転送されてます。(PCスペックが高くないので、最後UE4のモーションは少しラグしている)
上記の例は動画でモーションテストをしましたが、ThreeDPoseTrackerのSource Deviceをカメラにするのも結果は一緒です。
以上です。









