個人レベルでもお金をかけずにモーションキャプチャし、Unityでモデルを動かしてみよう
こんにちは、ホンジョウです。
みなさんはモーションキャプチャという言葉を聞いてどのようなイメージを浮かべるでしょうか?
CGアニメーションでよく使用される技術ですね。映画などのプリレンダリングムービーで主に使用されていますが、ハイエンドなゲームでは2000年代から使用され、近年ではリアルタイムレンダリングでも十分実用に耐えうるパフォーマンスを発揮するようになりました。
最近ではVTuberなどがモーションキャプチャでモデルを動かしながらライブ配信をするなど、その盛り上がりはますます過熱しています。
では、そのモーションはどのような環境で収録されているでしょうか。
もちろん大手の映画制作スタジオやゲーム会社などが使用するモーションキャプチャシステムは、莫大な費用が必要になります。
モーションキャプチャ専用のカメラは1台500万円を超え(参考)、収録するための広い場所も必要になります。モーションキャプチャのシステムを備えたスタジオのレンタルサービスを行っている企業もありますが、一日あたりの費用は5万~20万程度かかり、個人が手軽にレンタルできるような金額ではありません(参考)。
しかし、最近ではカメラやスタジオなしでモーションが収録できる別の仕組みを利用したモーションキャプチャシステムも用意され、比較的低コストで環境を構築することも可能になりました。
ただ、やはりそれもお金はかかります。個人的には今、家にあるものだけでモーションキャプチャをやりたい!!
そう考える人は私のほかにもいたようで、なんとWebカメラ一台でモーションキャプチャデータを収録できるアプリケーションが公開されていました。
ThreeDPoseTracker です。アプリケーション自体は無料ですが、開発支援として料金を支払うこともできます。
今回はこのアプリケーションを使用し、収録したキャプチャデータをUnityで3Dモデルに適用し、動かしてみるところまでやってみようと思います。
最近はVRChatやclusterなど、VR3D空間を3Dモデルになりきって移動し、その空間で他プレイヤーとやり取りをするプラットフォームの流行もあり、3Dモデルの需要が高まっています。そのため、誰でも気軽に3Dモデルを購入できる時代になりました。
VRMモデルを入手したら、それをUnityにインポートします。ただ、UnityはデフォルトではVRMモデルのインポートに対応していません。
なので、プラグインを使用してVRMモデルを読み込めるようにします。今回はUniVRMを使用します。
これでUnityへのインポートが可能になりました。ドラッグ&ドロップで簡単にUnityプロジェクトへ取り込むことができます。
ドラッグ&ドロップでプレビューがうまくいかない場合は、インスペクタから「Migrate To Vrm 1」にチェックを入れ、適用します。
次に、ThreeDPoseTrackerを使用して、モーションキャプチャデータを作成します。
Source Deviceをwebカメラにすると、画面に映る3Dモデルがカメラで撮影した動きに合わせて動くのが確認できます。
「Record BVH」をクリックすると、アニメーションの収録が開始されます。
アニメーションデータはBVHファイルで出力されます。
File -> Import -> Motion Capture(.bvh) を選択し、出力されたbvhファイルをインポートします。
File -> Export -> FBX を選択し、FBXに変換します。ObjectTypesは、アニメーションデータだけあればいいので、「Armature」のみ選択でよいでしょう。
これでUnityにモーションデータをインポートすることができます。
インポートしたFBXデータのAnimation Typeを「Humanoid」に設定します。
インポートされたFBXファイルから、Unity用のアニメーションデータを作成します。
Create -> Animator を選択し、Animatorデータを作成します。
インポートされたFBXファイルの中のアニメーションをドラッグ&ドロップでAnimatorの中に入れます。
Animatorを先ほどインポートしてきたVRMのAnimatorコンポーネントにアタッチします。
これで実行ボタンを押すと、収録したアニメーションデータでモデルを動かすことが可能になっていることが確認できると思います。
さすがにWebカメラ一台での収録だと、誤差も目立つので、本格的なコンテンツ作成は難しいかもしれませんが、モーションキャプチャの入門としては十分すぎるものであると思います。
皆さんもぜひこれでバーチャル美少女になりましょう。
最後までお読みいただきありがとうございました。
みなさんはモーションキャプチャという言葉を聞いてどのようなイメージを浮かべるでしょうか?
CGアニメーションでよく使用される技術ですね。映画などのプリレンダリングムービーで主に使用されていますが、ハイエンドなゲームでは2000年代から使用され、近年ではリアルタイムレンダリングでも十分実用に耐えうるパフォーマンスを発揮するようになりました。
最近ではVTuberなどがモーションキャプチャでモデルを動かしながらライブ配信をするなど、その盛り上がりはますます過熱しています。
では、そのモーションはどのような環境で収録されているでしょうか。
もちろん大手の映画制作スタジオやゲーム会社などが使用するモーションキャプチャシステムは、莫大な費用が必要になります。
モーションキャプチャ専用のカメラは1台500万円を超え(参考)、収録するための広い場所も必要になります。モーションキャプチャのシステムを備えたスタジオのレンタルサービスを行っている企業もありますが、一日あたりの費用は5万~20万程度かかり、個人が手軽にレンタルできるような金額ではありません(参考)。
しかし、最近ではカメラやスタジオなしでモーションが収録できる別の仕組みを利用したモーションキャプチャシステムも用意され、比較的低コストで環境を構築することも可能になりました。
ただ、やはりそれもお金はかかります。個人的には今、家にあるものだけでモーションキャプチャをやりたい!!
そう考える人は私のほかにもいたようで、なんとWebカメラ一台でモーションキャプチャデータを収録できるアプリケーションが公開されていました。
ThreeDPoseTracker です。アプリケーション自体は無料ですが、開発支援として料金を支払うこともできます。
今回はこのアプリケーションを使用し、収録したキャプチャデータをUnityで3Dモデルに適用し、動かしてみるところまでやってみようと思います。
開発環境
- Windows 10 Home 19044.2130
- Unity 2021.3.9f1
- Blender 3.3.1
- ThreeDPoseTracker 0.5.1
VRMモデルの準備
まずは3Dモデルを用意したいところです。Booth などに行けばVRMモデルが500~1000円程度で販売されています。最近はVRChatやclusterなど、VR3D空間を3Dモデルになりきって移動し、その空間で他プレイヤーとやり取りをするプラットフォームの流行もあり、3Dモデルの需要が高まっています。そのため、誰でも気軽に3Dモデルを購入できる時代になりました。
VRMモデルをUnityへインポートする
VRMモデルを入手したら、それをUnityにインポートします。ただ、UnityはデフォルトではVRMモデルのインポートに対応していません。
なので、プラグインを使用してVRMモデルを読み込めるようにします。今回はUniVRMを使用します。
これでUnityへのインポートが可能になりました。ドラッグ&ドロップで簡単にUnityプロジェクトへ取り込むことができます。
ドラッグ&ドロップでプレビューがうまくいかない場合は、インスペクタから「Migrate To Vrm 1」にチェックを入れ、適用します。
モーションキャプチャデータの作成
次に、ThreeDPoseTrackerを使用して、モーションキャプチャデータを作成します。
Source Deviceをwebカメラにすると、画面に映る3Dモデルがカメラで撮影した動きに合わせて動くのが確認できます。
「Record BVH」をクリックすると、アニメーションの収録が開始されます。
アニメーションデータはBVHファイルで出力されます。
BlenderでBVHファイルの変換
BVHファイルはこのままではUnityにインポートすることはできないので、Blenderを使用してFBXファイルに変換します。File -> Import -> Motion Capture(.bvh) を選択し、出力されたbvhファイルをインポートします。
File -> Export -> FBX を選択し、FBXに変換します。ObjectTypesは、アニメーションデータだけあればいいので、「Armature」のみ選択でよいでしょう。
これでUnityにモーションデータをインポートすることができます。
インポートしたFBXデータのAnimation Typeを「Humanoid」に設定します。
インポートされたFBXファイルから、Unity用のアニメーションデータを作成します。
Create -> Animator を選択し、Animatorデータを作成します。
インポートされたFBXファイルの中のアニメーションをドラッグ&ドロップでAnimatorの中に入れます。
Animatorを先ほどインポートしてきたVRMのAnimatorコンポーネントにアタッチします。
これで実行ボタンを押すと、収録したアニメーションデータでモデルを動かすことが可能になっていることが確認できると思います。
最後に
これほど手軽にモーションキャプチャができるようになったとは、素晴らしい時代になりましたね。さすがにWebカメラ一台での収録だと、誤差も目立つので、本格的なコンテンツ作成は難しいかもしれませんが、モーションキャプチャの入門としては十分すぎるものであると思います。
皆さんもぜひこれでバーチャル美少女になりましょう。
最後までお読みいただきありがとうございました。
参考
- VRMをインポートする (VRMドキュメント)