Unity上のモーションでUE4のモデルを動かしてみた

ThreeDPoseTracker(Unity)で検知したモーションデータをUE4上動かす。

概要

近年、Motion CaptureVtuber などが非常に流行っていて、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)

事前に用意するツール

プロジェクト作成とプラグイン追加

まず、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に追加されたMetaHumanBlueprintを開きます(こちの場合はBP_Kai)。

まずClass Settingsの部分にあるParent ClassBP_MopPawnにします。

そしてComponentsタブにあるBodyを選んで、Details -> Animationのブロックにある Animation ModeUse Animation Blueprintにし、その操作でAnim Classの設定が出てきて、Anim ClassABP_MetaHuman_RotationOnlyにします。

 


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

 



ThreeDPoseTrackerVMCtoMOPを展開し、ThreeDPoseTracker.exeVMCtoMOP.exeを実行します。

ThreeDPoseTrackerConfigurationにあるPort番号をVMCtoMopReceive Portに記入し、VMCtoMopSend PortをUE4プロジェクトのシーンにあるBP_ReceiverMop -> Portに記入します。  

BP_KaiMop ReiceiverをさっきのBP_Receiverにします。

 

UE4プロジェクトをPlayします。

ThreeDPoseTrackerSource DeviceMovie Fileにし、Load Movideボタンで事前用意したダンス動画をロードして、ThreeDPoseTracker -> VMCtoMOP -> UE4の順番でモーションデータが転送されてます。(PCスペックが高くないので、最後UE4のモーションは少しラグしている)

上記の例は動画でモーションテストをしましたが、ThreeDPoseTrackerSource Deviceをカメラにするのも結果は一緒です。

以上です。

モーションデータ出力の追加記事リンク