見出し画像

TDPTから書き出したモーションデータをUnityのアニメーションにする方法

《 TDPT Tips!シリーズ 第2章》

カメラだけで全身モーションキャプチャーができるWindowsアプリ「ThreeDPoseTracker(3Dポーズトラッカー)=TDPT」
詳しくはこちら
このシリーズは、そのTDPTのバージョン0.6に関するTips!をご紹介します。


はじめに

今回はTDPTから書き出したモーションデータをUnityのアニメーションにする方法をご紹介します。
Unityのアニメーションは、アニメーションクリップ(.anim形式)のデータのことです。VTuberさんのPVや、ゲーム制作などに使えると思います。
他にもこんな使い方あるよ~とかあればぜひ教えてください。

今回の環境

TDPT v0.6
Blender4.0
Unity 2021.3.15f1
Unity内アセット UniVRM-0.113.0_0165
モーションキャプチャーする動画は30FPSと仮定します。

TDPT

モーションを書き出す

アバターを用意し、Skip on Dropを 外す。
(詳しくは第1章の手順2までを参照)

今回はBlenderへ書き出しするので、BVH書き出しの設定は画像1のようにします。

画像1

Blender

書き出したBVHをBlenderへ取り込み

Blender起動、新規プロジェクト作成。最初に配置されている四角のオブジェクトを消します。
ファイル>Import>BVH からデータをインポートします。
設定は画像2のとおりです。

画像2

補足:BlenderのForwardは本来-Yですが、TDPTの場合はYを前方に設定してインポートすると正面を向きます。(画像3)

画像3

Outlinerでモーションのオブジェクトを選択すると、ボーンがオレンジに光りますので、その状態でFBXに書き出します。

FBXに書き出し

File>Export>FBX
出力の設定は私の場合は画像4のように試しました。
ここは細かい設定までは確認していません。Transformの座標も恐らく気にしなくていいと思います。

画像4

Unity

UnityへFBXの取り込み

新規プロジェクトを3Dで作成します。
ProjectタブのAsset下に適当なフォルダを作り、先ほどのFBXデータをドラッグドロップします。
FBXデータを選択してInspectorタブに情報が表示されますので、RigタブのAnimationTypeをHumanoidに変更し、Applyします。(画像5)

画像5

Unity用アニメデータに変換

FBXの▶をクリックすると展開されるので、中にあるモーションデータをクリックし、Ctrl + Dで複製します。
そうすると、FBXの外側に出せますので、Unity用のアニメーションクリップとして扱うことができるようになります。(画像6)

画像6

VRMアバターの準備

アバターのVRMデータをUnityに読み込ませるにはuniVRMを使用します。
uniVRMの導入とVRMデータをUnityにインポートする方法は検索していただければ沢山出てくると思いますのでここでは割愛します。
VRMをインポートして作られたプレハブデータをProjectからHierarchyに入れます。(画像7)

画像7

Projectタブで、右クリック>Create>AnimatorControllerで、適当な名前を付けてアニメーターコントローラーを新規作成しておきます。(画像8)

画像8

アバターにアニメーションをアタッチ

Hierarchyでアバターを選択し、InspectorタブでアバターのAnimatorコンポーネントに作成したAnimatorControllerをアタッチします。(画像9)

画像9

このAnimatorControllerをダブルクリックして、Animatorタブを開きます。
ProjectタブからアニメーションデータをAnimatorタブの空白にドロップすると、オレンジのノードが出来て、Entryから矢印がつながります。(画像10)Entryから矢印がつながっている状態で、実行時にアニメーションが始まります。

画像10

実行する前に

実行ボタンを押してテストする前に、見やすいようにカメラの位置と回転をちょっと変えてアバターの正面に向くようにし(画像11)、右クリック>3D Object>Cubeを作成し、画像12のとおりにサイズを変更して床を設置しておきましょう。Game画面は画像12の右側のようになります。

画像11
画像12

実行してみましょう

それでは実行ボタンを押してみましょう。
このままでは動画の左のように、腰の位置を支点にして動いてしてしまいます。

少し修正して完了!

アニメーションによるアバター移動の許可をします。
Hierarchyタブでアバターを選択してInspectorを表示、AnimatorコンポーネントのApplyRootMotionにチェックを入れます。(画像13)

画像13

これで動画の右のようにアニメーションさせることができるようになりました。
TDPTのモーションと並べてみた動画がこちらです。

余談

アニメーションによるアバター移動の許可をすると、アバターのゲームオブジェクトのTransform位置回転がアニメーションに制御されてしまいます。それをしたくない場合は、AnimatorコンポーネントのApplyRootMotionはオフのままで、アニメーションクリップのインポート設定で調整します。
具体的にはProjectタブで、アニメーションクリップをクリックしてInspectorを開き、各RootTransformの設定を画像14のようにします。
ここの設定についての説明はUnity公式のドキュメントを参照してください。

画像14

また、使いやすいかどうかはさておき、アニメーションのドープシートやカーブなどを触って細かい調整をすることも可能です。Projectタブでアニメーションクリップをダブルクリックすると、このAnimationタブが開きます(画像15)。Blenderが得意な方はBlenderに取り込んだ時点で触っておいた方がいいかもしれません。
アニメーションの修正はまたの機会に。

画像15


この記事が気に入ったらサポートをしてみませんか?