本ページにはプロモーションが含まれます
UnityVRMVRoid

【Unity】我流オリジナルモーションの作り方

この記事は約3分で読めます。

はじめに

前回の記事に引き続き、今回はVRMモデルのモーション作成について検証しました。具体的には、TDPTを使用してWebカメラからリアルタイムにモーションをキャプチャし、UnityのAnimationClipに変換する方法、そしてVrmPosingDesktopで作成したポーズを1フレーム分のモーションとして記録し、アニメーションとして活用する手法についてまとめました。ゲーム制作VTuberコンテンツ作成における効率的なアニメーション制作を目指す方々にとって、参考になれば幸いです。

TDPTを試しました

今回はTDPT(Tracking Detection Pose Tool)を使って、Webカメラによるリアルタイムモーションキャプチャを試みました。使用したWebカメラは7年ほど前の製品で性能は限定的でしたが、TDPTを活用することで基本的な動体モーションキャプチャは可能でした。指の動きやフェイシャルトラッキングにも対応しており、非常に優れています。しかし、TDPTでキャプチャしたモーションがゲーム制作においてそのまま実用できるかについては、検討の余地があると感じました。より高精度なモーションを求める場合は、VRデバイスの導入を検討した方が良いかもしれません。現状では、VTuber配信などの用途により向いているかもしれませんね。

ポーズからAnimationClipを作成する

ゲーム制作でキャラクターを動かすために、VrmPosingDesktopで作成したポーズを基にUnityのAnimationClipを作成する手法を模索しました。具体的には、以下の目標を立てて検証を進めました。

1. VrmPosingDesktopで理想のポーズを作成します。
2. Unity側で、作成したポーズを1キーフレームのクリップとして取得します。
3. 1と2の工程を繰り返し、複数の1キーフレームクリップを作成します。これらのクリップをAnimationControllerやTimelineに組み込むことで、異なるポーズ間をシームレスにつなげたアニメーションを生成できます。つまり、複数のポーズを連結させてアニメーションを作成することを目指しました。

この目標は、EasyMotionRecorderのTargetFPSを1に設定することで実現できました。(注釈として)60FPSでも記録は可能ですが、その場合、一瞬で多数のキーフレームが記録されてしまいます。記録の開始と終了は手動で行う必要があります。

EasyMotionRecorderのTargetFPSを1に設定した画面
TargetFPSを1に設定

録画を開始し、FrameIndexが1になった時点で終了させます。これにより、1フレーム分のポーズデータを正確に記録できます。

VrmPosingDesktopで作成したポーズA
ポーズA

このポーズを基に、1キーフレーム分のAnimationClipを作成します。

ポーズAから作成されたAnimationClip

同様に、別のポーズからも1キーフレーム分のAnimationClipを作成します。

VrmPosingDesktopで作成したポーズB
ポーズB

このように作成したAとBのAnimationClipは、Unity上でシームレスに接続できます。

AとBのAnimationClipをUnityのTimelineで接続した例

また、複数の1キーフレームクリップを連結して、1つのAnimationClipとして活用することも可能です。今後はVrmPosingDesktopでのポージング作成に注力していきたいと思います。

おわりに

今回ご紹介したVrmPosingDesktopEasyMotionRecorderを組み合わせることで、手軽にオリジナルのVRMモーションを制作できる可能性を感じています。最終的にVeryAnimationなどのツールで微調整を加えることで、より高品質なゲーム用アニメーションが効率的に作れるでしょう。Blenderでのアニメーション作成も検討しましたが、今回はより手軽に制作できる手法を模索しています。もし他に良い方法をご存知の方がいらっしゃいましたら、ぜひ情報をお寄せください。