WebカメラからAIがモーションを作ってくれるPlask モーションデータをUE5で使用する
VideoからAIが解析してMotionデータを作成してくれるサービス「Plask」
VideoからAIが解析してMotionデータを作成してくれるサービス「Plask」
Plaskで作成したモーションデータをUE5のMannequinで使えるようにします。
ProjectをGitHubに公開しました。
UE5のProjectをGitHubに公開しました。
よかったら使ってください。
Plaskにサインアップする
Plaskは無料で使用できます。
Plaskを使用するためにSignUpします。
Googleアカウントかメールアドレスでサインアップできます。
この後にアカウント名を決めるウィンドウで、アカウント名を設定します。
PlaskでWebカメラからモーション動画を撮影する
トップページの[Get Started]をクリックします。
右上の[カメラアイコンを]クリックします。
灰色になっている箇所にWebカメラの映像が写ります。
Webカメラの選択は、右上の[Camera]から選択します。
Webカメラの設定できたら、「録画ボタン(赤丸)」をクリックします。
録画を終了するには再び「録画ボタン(赤丸)」をクリックします。
録画が完了するとプレビューが表示されるます。
一番下のタイムラインでアニメーションにしたい範囲を指定します。
範囲が指定できたら、「Extract Motion」をクリックします。
Motionの抽出が始まります。大体の完了時間が表示されます。
Motionの抽出が終わると、Motion名を設定するダイアログが表示されます。
Motion名を設定して、[OK]ボタンをクリックします。
Plaskでスマホ動画からモーションデータを抽出する
動画からモーションデータを抽出する手順
動画からのモーションデータ抽出はPlask公式チャンネルの動画を参考にしました。
ありがとうございます!
[Library]の[+]ボタンをクリックします。
モーションを抽出する動画を選択します。
幅の長い方を横と判断するので、横長動画を選択してください。
抽出を確認するダイアログが表示されるので、[Confirm]ボタンをクリックします。
Webカメラの時と同様です。
抽出する範囲を選択し、[Extract Motion]ボタンをクリックします。
Motion名を設定して、[OK]ボタンをクリックします。
抽出にかかる時間が表示されます。
Libraryパネルに設定したMotion名が追加されました。
PlaskのMannequinに撮影したアニメーションを反映する
Motionの抽出すると最初の画面に移動します。
左側の「Library」から「Mannequin_glb」をViewportにDrag&Dropします。
さきほど設定したMotion名を「Mannequin_glb」にDrag&Dropします。
「Mannequin_glb」に入った「Motion名」をViewportの真ん中のMannequinにDrag&Dropします。
タイムラインの再生ボタンをクリックすると、Motionが再生されます。
PlaskのモーションデータをFBXにExportする
「Mannequin_glb」内のMotion名を右クリック > Export
表の設定をして、[Export]ボタンをクリックします。
Property | Value |
---|---|
Motion | bindPose |
Format | FBX |
Exportまでかかる時間が表示されます。
Exportが完了するとFBXがダウンロードされます。
名前を「SK_PlaskMannequin.fbx」に設定します。
次に、Motion名を設定したMotionをExportします。
「Mannequin_glb」内のMotion名を右クリック > Export
表の設定をして、[Export]ボタンをクリックします。
Property | Value |
---|---|
Motion | (設定したモーション名) |
Format | FBX |
名前を「SK_PlaskMannequin_(Motion名).fbx」に設定します。
Plaskのマニュアル
他にもPlask上でできることがあるので、時間を見つけて試してみます。
YouTubeチャンネルにチュートリアル動画が上がっています。
YouTubeのvideoIDが不正ですUE5でMannequinにPlaskのMotionをImportする
UE5にPlaskからExportしたMotionをImportします。
UE5のProjectを作成する
UE5 EAでプロジェクトを作成します。
「SK_Mannequin」を使用するので、「ThirdPerson」テンプレートを選択します。
プロジェクトが作成されたら「Plask」のMotionインポート用のフォルダを作成します。
BasePoseとなるFBX「SK_PlaskMannequin.fbx」をImportする
まずは、BasePoseとなるFBX「SK_PlaskMannequin.fbx」をImportします。
作成した「Meshes」フォルダにImportします。
設定を変えずに[Import]ボタンをクリックします
BasePoseとなるMeshとSkeltonがImportされました。
Plaskで作成したMotionをImportする
Plaskで作成したMotion「SK_PlaskMannequin_(Motion名).fbx」を「Animations」フォルダにImportします。
[Import Mesh]のチェックを外します。
[Skelton]に「SK_PlaskMannequin_Skelton」を設定します。
[Import Rotation]のXに[90.0]を設定します。
設定を忘れても、あとで直し方を解説します。
MotionがImportされました。
ダブルクリックして開くと、Plaskで作成したMotionが再生されます。
Import RotaionのX:0.0でImportした場合
FBX Importの際に[Import Rotation]の設定しない場合の対処法です。
ImportするとMotionのMannequinが寝っ転がった状態でアニメーションします。
左側の設定から、[Import Rotation]のXに[90.0]を設定します。
[Reimport Animation]ボタンをクリックします。
MotionのMannequinが立った状態で再生されるようになります。
[Save]ボタンをクリックします。
UnityのYUpのモデルやMotionをインポートした対処法が役に立ちました。
PlaskはUEのMannequinが使われていますが、中身はUnityで使用されるように作られています。
すべて保存する
ここで一度すべて保存しましょう。
UE5でMannequinにPlaskのAnimationをリターゲットする
Plaskで作成したMotionやBasePoseのFBXがImportできたので、PlaskのMotionをUE5のMannequinで動くようにしましょう。
PlaskのMannequinはMixamoに似ている
UnrealEngineのSK_MannequinとPlaskのMannequinのSkeltonのTree構造を比較しました。
Plask側はUnityの「Unity Humanoid Avatar」ですぐに動きそうな構造をしています。
MixamoのアニメーションをUnrealEngineで動かす方法が一番近いと判断しました。
「MixamoからUE5(UE4)へアニメーションをリターゲットして使用する方法」を参考にさせていただきました。
ありがとうございます!
「UnrealEngine5の教科書」素晴らしいです。
現在ZennでBookを作成する際に、参考にさせていただいてます。
SK_PlaskMannequinのRigをSetUpする
リターゲットできるように、異なるSkelton通しを対応させる設定します。
「SK_PlaskMannequin」を開いて、「Retarget Manager」を開きます。
[Set up Rig]カテゴリーの[Slect Rig]に[Humanoid Rig]を設定します。
Targetを図のような対応になるように設定します。
設定できたら、[Show Advanced]ボタンをクリックします。
Targetを図のような対応になるように設定します。
右手はとくに間違えやすいので、よく確認しながら設定しましょう。
[Save]ボタンからMapping情報を保存しておくと、[Load]ボタンから同じ設定を読み込むことができます。
SK_MannequinのSet up Rigを設定する
「SK_Mannequin」側のSet up Rigを設定します。
「SK_Mannequin」を開きます。
「Retarget Manager」を開き、[Set up Rig]カテゴリーの[Slect Rig]に[Humanoid Rig]を設定します。
こちらは自動的に設定されますので、変更しません。
SK_MannequinのBasePaseをTPoseにする
「SK_Mannequin」と「SK_PlaskMannequin」でBasePoseが異なります。
このままリターゲットを行うと、Motionが壊れてしまいます。
AnswerHubで「SK_Mannequin」をT-PoseにしたMotionFBXをダウンロードできるようにしてくれていました。
ダウンロードした「T_Pose_UE4_Mannequin.FBX」を「Animations」フォルダにImportします。
[Skelton]に[UE4_Mannequin_Skelton]を設定します。
[Import]をクリックします。
「T_Pose_UE4_Mannequin」を右クリックし、Create > Create PoseAssetを選択します。
「T_Pose_UE4_Mannequin」を選択して、[Apply]ボタンをクリックします。
「Retarget Manager」の[Set up Rig]カテゴリーの [Modify]ボタンをクリックし、「T_Pose_UE4_Mannequin_PoseAsset」を選択します。
[Import]ボタンをクリックします。
ViewportのSK_MannequinがT-Poseになります。
もう一度[Modify]ボタンをクリックし、[Use CurrentPose]を選択します。
これで「SK_Mannequin」のBasePoseがA-PoseからT-Poseになり、「SK_PlaskMannequin」と同じT-Poseになりました。
すべて保存する
ここで一度プロジェクトをすべて保存しましょう。
Plaskのアニメーションをリターゲットする
「SK_Mannequin」のアニメーションであればどれでもいいのですが、
「T_Pose_UE4_Mannequin」を右クリックし、[Retarget Anim Assets] > [Duplicate Anim Assets and Retarget]を選択します。
「SK_PlaskMannequin」を選択し、[Retarget]ボタンをクリックします。
Plaskで作成したMotionを右クリックし、[Retarget Anim Assets] > [Duplicate Anim Assets and Retarget]を選択します。
「UE4_Mannequin_Skelton」を選択し、[Retarget]ボタンをクリックします。
「Contents」フォルダ直下に、SK_MannequinにリターゲットされたPlaskのMotionが作成されます。
これで、Plaskで作成したMotionがSK_Mannequinのような汎用的なモデルでも使用できます。
まとめ
PlaskからMotionを作成するのに必要な機材は「PCとWebカメラ」です。
高精度と言う訳ではありませんが、手ごろな機材でこれだけの精度を出せるのがスゴイです。
手軽だからこそ、いままであったらいいなと思っていたことができます。
- 意識合わせ
- 静止画のポーズ付け
Motionのコンテ代わりに使えるのが大きいのではないでしょうか。
人工知能と仲良くならないと!
Discussion
すごく参考になりました!ありがとうございます!
かなり細かいところなんですが、
👇こちらのサムネの
inport
→import
かと思います!バグ報告ありがとうございます!
早速画像修正しました。
いつも前向きなツイートと見やすいショート動画楽しく拝見させていただいてます。
見て頂いてるんですね。ありがとうございます!!