3.7 KiB
3.7 KiB
モーションキャプチャで動かす
カメラ(camera)からcharacterを動かす技術をモーションキャプチャ(motion capture)といいます。様々なprotocol(プロトコル)がありますが、vrm4u
ではvmcというprotocolを使います。
epic games
はlivelinkというものを作っています。
必要なものは多く、基本的にはweb-camera
、client-app
, ue-plugin
が必要です。私は以下を使っています。
- camera: ノートパソコンに付属しているwebカメラ
- client: webcam motion capture
- plugin: vrm4u
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)]