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かと思います!バグ報告ありがとうございます!
早速画像修正しました。
いつも前向きなツイートと見やすいショート動画楽しく拝見させていただいてます。
見て頂いてるんですね。ありがとうございます!!