バーチャル3Dクリエイター神部まゆみです(*^-^*)
この記事はEVMC4Uを動かしてみた記事です。
動かしたのはUnity2022.3.22です。
やりたいこと:VRoidモデルをUnity内でモーションキャプチャー(Webカメラ)して動かす
XR Animatorっていう動画でモーションキャプチャーできるアプリを使ったけど、あれをVMC Protcolって言うのを使えばUnityにモーションキャプチャー情報を送信して動かせるっぽい。
TDPTもVMC Protcolに対応してるからできると思うけど、後でやってみます。
EVMC4Uって言うのを使えば手軽にできるっぽい




ちなみにVirtual Motion Captureの作者さんとは別の人らしく、VMC Protcolのメンテナンスをしている人見たいです。
VMC Protcolについてはこちら。




しかしBOOTHでご支援版もなく寄付とかも受け付けてないっぽい?ので、いつ公開終了になっても文句は言えないかな?(;^_^A
有能なエンジニアの方は今は仕事に困らないため、まぁ感謝しつつ使わせてもらうことにしますw
実際に導入してみる
とりあえずノリで導入してみます。
ダウンロードする
安定版はBOOTHに置いてあるけど、最新版はGithubに置いてあるのでこちらを入れてみます。



新規にプロジェクト作ってインポートする
Unity Hubで新規にプロジェクトを作っていきます。
既存のプロジェクトでもいいけど、unitypackageにUniVRMのファイルが入っているため、既にUniVRMが導入されていると重複でエラーになるので新規に作った方が良いかも。


GithubのほうはVRM1にも対応してるっぽいのでURPでもいけそうだけど、今回はBIRPでやってみます。


プロジェクトを作れたらunitypackageをインポートします。
導入すると説明や使い方のウィンドウなどが出てきますが、公式サイトが開く感じなので消してしまってOKです。
マニュアルはコチラ。




VRM関連のファイルが同梱されてるので注意
これデフォルトでVRM関連のファイルが同梱されてるみたいなので、既にUniVRMを入れたプロジェクトだとエラーが出た。
重複すると消す必要があるので、新規にプロジェクトを作ってまっさらな状態で入れたほうが良いかも。


動かすモデルを読み込む
今回はVRoidモデル(VRM0)を読み込んでおきます。
ExternalReceiverシーンを開いてモデルを配置する
これがセットアップ済みのサンプルシーンみたいな感じっぽいです。
ExternalReceiverコンポーネントの設定をする
設定項目は色々あるけど、とりあえず「VRMモデルのGameObject」とモーションキャプチャーアプリのポートを指定すればOK。
今回はXR Animatorを使うため、ポートを確認しておいて一致させます。




Unityに配置したモデルとXR Animatorのモデルを一致させる
これ別のモデルでも動きはしたけど、メッシュの表示がめっちゃおかしくなってバイオハザードの新しいクリーチャーみたいになりましたね…(~_~;)とても見せられないっすw
全く同じモデルを使った方が良いと思います。
XR AnimatorでVMC ProtcolをONにする
ここをONにしないとモーションキャプチャーデータがUnityに送信されないので動きません。


モーションキャプチャーを起動し、Unityで再生ボタンを押す
モーションキャプチャーの動作テストをしてからUnityで再生ボタンを押せば動かせます!
こんな感じで動いた!
うおお…これでUnityの世界に入れたぞΣ(゚Д゚) 凄い時代になったもんだなァ…。
BVH Toolsでモーション録画もできた
BVHだからブレンドシェイプとかは保持されてないけど、BVH Toolsを使うと録画できます。
BVH Tools – Unity Assets Store
あと古いヤツだけど、EasyMotionRecorderだとanimファイルで録画できた気がする。

まぁ動画で使うならどうせモーション修正すると思うので、表情とかは後付けで編集すればいいと思う。
スクリプトも併用できそう?
Unity上で動作するわけだからスクリプトと併用もできると思う。
XR Animator側の表情トラッキングはオフにしておいて、リモコン型のキーボードとかでブレンドシェイプをスクリプトで手動で切り替えるのもいいかも?
結構色々使えるかもしれない。
別のシーンでも使ってみる
External Receiverさえシーンに配置すれば動くみたいなので、自作や販売アセットのシーンを開いて動かせそうです。


これで動いた…けど向きがおかしいΣ(゚Д゚)
ルート回転反映のチェックを外したら良い感じに動いた
ここのチェックを外したら大丈夫だった。他にも調整したければここの設定いじれば良さそう。


あれ、でも高さはダメだな…強引にトランスフォームいじったら調整できたけど、どこかいじらないとダメかも。
まぁだいたい動いたから良いかな。
しかしこれアニメとかも作れそうだな…。
スクリプトが使えるからカメラ動かしたり、他の人物モデルを配置して動かしたりも出来そう。
追記:uLipSyncと併用もできたので、事前に音声を作っておいて動かせそう
uLipSyncっていう口パクを実装するアセットと併用することもできました。
uLipSyncっていうのはこれね。
でも入れる時にちょこっとエラーが出たので解決する必要はあったけど、すぐ解決しました。
事前にVOICEVOXやCOEIROINKとかで音声を作っておいて切り替えれば、モデルを動かしながら動画作ったりできそう。
オーディオクリップをスクリプトで切り替えれば、事前に作った音声を切り替えられます。
おわりに
手軽にUnityの世界に入れて良かった。
これならVR端末もモーションキャプチャー機材も不要で、ゲーミングPCとウェブカメラさえあれば使えるから比較的ハードルは低めな気がする。
シーンに他にモデルを配置して動かしておけば、それに合わせて動いたりできるかもしれない。
スクリプトも併用すれば色々使えそうかも?
まぁもう少しいじってみます(*^-^*)