ue/book/gasp/04_vmc.md
2025-02-16 12:58:03 +09:00

3.7 KiB
Raw Blame History

モーションキャプチャで動かす

カメラ(camera)からcharacterを動かす技術をモーションキャプチャ(motion capture)といいます。様々なprotocol(プロトコル)がありますが、vrm4uではvmcというprotocolを使います。

epic gameslivelinkというものを作っています。

必要なものは多く、基本的にはweb-cameraclient-app, ue-pluginが必要です。私は以下を使っています。

clientはそれぞれのosにあったものを選びます。無料でも可能ですが、性能的には有料アプリがおすすめです。いくつか紹介しておきます。

この辺の情報は最初はわからないと思いますが、基本的には以下の流れで情報を処理します。

[camera] --> [client] --> [plugin]

client

name body free
vmc vmcの開発元が出しているclient。protocolと同じ名前がつけられている 🟩
vseeface 高性能なclient 🟩
xr animator お手軽に表示できるclient 🟩
waidayo iosにも対応しているclient 🟩
vrm posing desktop steamから出ているclient 🟥
webcam motion capture 安定したclient。使ってみた中では動きが一番良かった 🟥

build packageを使うときportに注意

clientから送信されるportをpluginで受信します。build packageの.exeで確認するときは、editor(エディタ)を落としておきましょう。

停止したときだけvmcを有効にする

キャラクターがidle状態、つまり、停止しているときだけVMCのモーションキャプチャを反映させます。 これはVMCモードの変数を用意し、ABPで条件を書いて実現しています。キャラクターを動かしたときは一時的に無効にします。

関数を作り、bool型でグローバル変数で作ります。それをVMCモードのenable/disableとします。カメラは正面と通常を切り替えています。

/Content/Blueprints/CBP_SandboxCharacter

移動するときは一時的に無効にします。移動が完了すると有効にします。GASの移動は終了後に少し滑るのでdelayを入れています。

/Content/Chracters/$model/ABP_Pose_$model

Blend Poses by boolを使います。[Mesh Space RefPose] --> [VrmVMC] --> [Blend Poses by bool(true)]