0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ReboCapとUnityでモーションキャプチャー&モーション録画をしたい!

Posted at

RebocapとUnity間でモーションデータを送れるようにする

安価なモーキャプを使ってオリジナルのモーションデータの録画がしたいけど、調べても全然情報が出てこない!!ということで、作成したモーキャプ環境(システム面)の備忘録を書いておきます。誰かの参考になったら嬉しいです。

以下の画像の様に、Rebocapでモーションキャプチャ→VMCプロトコル→Unityにてモーション録画するシステムを目指します。

スクリーンショット 2024-10-07 173411.png

ちなみに今回録画したモーションデータを利用して、YouTubeで小夜/SAYOというキャラクターのライブを行いました.こんな感じのモーションが記録できるんだな~というサンプルとしてご覧いただければ幸いです。

image.png

はじめに

今回は

  • 値段が安いことと(購入時点で2.5万円ほど)
  • トラッキングできる点が多いこと(15点トラッキング)
  • PC(+トラッカー)のみでモーキャプが完結できること

からRebocapを採用しました。

対抗馬としてソニーさんのmocopiが上がっていましたが、検討時点ではモーキャプをするのにスマホが必須だったのでRebocapに軍配が上がりました。

セットアップ

公式様の使い方ページを参考にセットアップを進めます。
使い方 / How to use

Rebocapのセットアップについては別途終わらせているものとします!
今回はRebocapの初回セットアップ方法やキャリブレーション方法については触れません。

プロジェクト作成

まずはUnityのプロジェクトを作成します。
UnityのバージョンはEVMC4Uの公式ページを参照してください。

現在(2024/08)はUnity2019.4.29f1 (v3.8~)以上対応

パイプラインはビルトイン(標準)のものを選択します。

image.png

EVMC4Uのインポート

続いてモーションデータを受け取るためのUnitypackageをダウンロードします。
EVMC4U - EasyVirtualMotionCaptureForUnity

バージョンが2種類ありますが、今回は安定版をダウンロードします。

image.png

ダウンロード・解凍したら、フォルダ内にあるExternalReceiverPack_v4_1.unitypackageをUnityのprojecタブにドラッグ&ドロップして

image.png

すべてにチェックが入っていることを確認してインポートします。

image.png

インポートできたら、シーンExternalReceiverを開きます。

image.png

VRMのインポート

ご自身で用意した(動かしたい)VRMファイルを用意します。

今回は小夜/SAYO公式MMDモデルをVRM形式に変換したものをサンプル画像として使用していますが、各自使用したいVRMモデルを読み込んでください.

VRMファイルの利用規約はしっかりと確認しましょう!!

Projectの表層にVRMファイルをドラッグ&ドロップすると、色々なファイルが展開されて見づらくなってしまうので、あらかじめ新規ファイルを作成して、その中にドラッグ&ドロップします。

image.png

image.png

VRMファイルを読み込めたら、Prehabをhierarchyタブにドラッグ&ドロップします。

image.png

続いてExternalReceiverを選択し、先ほどhierarchyタブに置いたPrehabをVRMモデルのGameObjectにアタッチします。

image.png

さらにモーションデータ受信の際に受け取った値を調整する設定もしておきます。

VRMモデルとリアルアバター(あなた)の体格が異なる場合、ボーン位置の厳密な同期をオフにすると自然なモーションを保ったままモデルが動いてくれるのでオススメです。その他の項目は目的に応じて調整してください。

image.png

VMCProtocolを利用してモーションを受信する

RebocapとUnity間でVMCProtocolを利用してモーションデータを送信します。

まずはRebocap側で何番のポートにモーションデータを出力しているのかを確認します。

もしポート番号を変えたい場合は、一旦VMC出力をオフにすると番号を変更することができるようになります。

image.png

つぎにUnity側で、Rebocapで設定されているポート番号と同じ番号を指定します。

image.png

モーション受信テスト

これでUnityでRebocapからモーションデータを受け取るセットアップは完了です!
Rebocapでモーショントラッキングをスタートしてキャリブレーションを行ったあとに、UnityのPlayボタンを押してシーンを再生してみましょう!

モーションデータを録画する

EasyMotionRecorder を利用してモーションデータを記録できるようにします。

EasyMotionRecorderの導入

EasyMotionRecorderの配布ページから、最新バージョンのUnitypackageをダウンロードします。
EasyMotionRecorder - Releases

image.png

ダウンロードしてきたUnitypackageを、Projectタブにドラッグ&ドロップします。

image.png

すべての項目にチェックが入っていることを確認して、インポートします。

image.png

インポートが完了したら、Assets\EasyMotionRecorder\Prefabsの中にあるEasyMotionRecorder Prehabをhierarchyタブにドラッグ&ドロップします。

image.png

hierarchyタブに配置したEasyMotionRecorder Prehabを選択して、MotionDataPlayerMotionDataRecorderコンポーネントのAnimatorにそれぞれモデルの親オブジェクト(Animatorコンポーネントを持っているオブジェクト)をセットします。

image.png

モーションデータの録画

これでモーション録画の準備は完了です!!

Unityで再生ボタンを押して、MotionDataRecorderコンポーネントのRecoredStartKeyRecordStopKeyにセットされているキーを押すと録画が開始・停止されます。

image.png

完成!

お疲れ様でした!これでモーション録画システムの構築は完了です!

このままだとキャラクタの表情などは記録されていないので、目的に応じてアニメーションタブから表情付けを行ったりするとよりイイ感じのモーションデータになります。
アニメーションの編集には、ちょっとお高いですがUnity Assetstoreで販売されているVery Animationがおすすめです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?