【UE5】プアマンズジェスチャーコントローラーを作る
今回はキャラクターの動きを好きなタイミングで演技させるジェスチャーコントローラーを作ってみました。プアマンズ=貧乏人というマクラがついてますがその通りAmazonと100円ショップで仕入れたものにちょっとした電子工作をして作ったものです。特徴的な動きのためというよりは自然な身振り手振りを表現するためのトリガーデバイスになります。それを演者のなんとなくな動作をキャラクターに反映させるということをしています。UnrealEngineのバージョンは5.2.1を使用しています。
キャラクターを動かすための様々な方法
映像での説明の通りVRスタジオで演者の動作をCGキャラクターに反映させるにはモーションキャプチャというやり方が一般的です。プロ向けとしてはスタジオを取り囲むようにセンサーカメラを配置し、スタジオ内の演技者に取り付けてあるマーカーを検知してモーションキャプチャをするのが一番精度が高く一般的です。ただしお値段もそれなりになります。個人的VRデバイス向けとして加速度センサーを使ったものがあります。小型で扱いやすいのですがプロ向けと比べると精度は劣ります。さらに最近ではスマホのカメラとAIを使ってモーションキャプチャをするシステムが出てきています。モーションキャプチャは常に進化の途上にあって今熱い分野です。とはいえこれらのようなフルボディトラッキングのシステムは今回必要ありません。
というのも実際の私は机に向かい、椅子に座っています。さらには利き手でマウスを操作しバーチャルスタジオのオペレーションをしているのです。上記のようなフルボディトラッキングをしたところで意味がありません。バーチャル空間でのキャラクターの動きと現実空間の人の動きを別として表現する必要があります。
キャラクターの動かし方を考える
M-Design Virtual Studioでは演者とスタジオ操作者が同一な場合にキャラクターの動かし方が数通りあります。
・シーケンサーを使う
場面転換(シーンチェンジ)とかオープニング、エンディングなどキャラクター以外のカメラ動作やアクターの動きをいっぺんに制御させます。いちいち個別に操作するのは現実的ではない場合はシーケンサーを発動させることで制御します。
・ボタンで制御する
Scenario Action ボタンというものを配置していてそこにキャラクターの特異な動作を割り当てます。ここぞという時に発動させるアクション用です。
・ジェスチャーコントローラーを使う
ボタンで制御というのはここでというタイミングで行うものなので身振り手振りのような半ば無意識のような動作制御には合わない気がします。ジェスチャーコントローラーにはあまり意識しなくても自然とキャラクターに反映させることができる仕組みにする必要があります。
このようなジェスチャーセンサーもありましたが今回の用途には合いませんでした、、
ボールを握ることでジェスチャーを発動する
マウスを握る反対の手を使ってジェスチャーをコントロールします。利き手ではないのでモノを握るという単純な動作にしました。握る=圧力ということで圧力センサーを利用しています。下の画像のようにフィルム状の部品が圧力センサーになります。500円くらいです。つまむと抵抗値が変わるのでこれを利用します。
この圧力センサーをそのまま摘んで使うには力加減が難しいのでおもちゃのボールの中に入れて使います。近所のダイソーで買いました。センサーからの読み取り+UnrealEngineへの転送制御にはマイコンを使います。どのマイコンでもできると思いますが今回はRaspberryPi Pico Wを使っています。このマイコンを選んだ理由は特に無くて、ただ欲しかっただけです。言語はPythonを使います。圧力センサーの反応具合は使用する人の握力によって変化の度合いに影響します。なるべく使いやすい変化になるように間に抵抗をかましてあります。一般的にはここを可変抵抗にするんでしょうね。圧力レベルのモニターに有機ELディスプレイを使ってますがI2C接続という方法を使っているので動作が全体的に遅く、サンプリング間隔が長くなってしまって本当はイヤなのですが目的の動作にはそんなに影響がなかったのでこんなもんとしました。
デバイスがうまく動けばあとはUnrealEngineでの処理です。シリアル通信で圧力度合いが送られてくるのでそれを元にキャラクターを動かすようにします。今回は閾値ををいくつか設けて違うジェスチャーをするようにしました。同じポーズで強度が上がるなんていうやり方もいいのかもしれませんね。
コンテンツによってキャラクターの動かし方も違ってくる
出演者の動きが重要という場合にはモーションキャプチャを使って演技に専念させますが、そうでは無い一人で演技もスタジオ操作をする場合や実在の人物と全く違う動きをキャラクターにさせたい場合はそのやり方も違ってきます。CGアバターには人物全体を必要とするのか表情とか手だけ使うのかを決めて、足りないところは別のアニメーションデータを使ってキャラクター全体を表現させることができます。そのアニメーションデータを発動させるためにどういったデバイスが最適なのかはコンテンツや操作する人の状況によりけりです。これでないとダメということはありません。別記事でカメラのトラッキングをフルトラッキング用のシステムを一部流用して使っていのを紹介しています。現実での動きとバーチャル空間をどうリンクさせるかは作り手次第となります。なんたってバーチャルスタジオなわけですからいろんな方法で動かしてみたいですよね!
関連製品
M-Design Virtual Studio
Link
関連Blog
【UE5】アニメ調3Dアバターを使ってバーチャルスタジオ 【バ美肉】
【UE5】トラッカーとレンズコントローラーを使ってバーチャルカメラを操作する
【UE5】MetaHumanを使ってバーチャルスタジオを作る
【UE5】MetaHumanを使ってVTuber、Zoom、Teamsをやってみる
Newtek NDI®とUnreal EngineでAR/VR を作ってみた