MRが楽しい

MRやVRについて学習したことを書き残す

mocopiReceiverPluginを使ってmocopiのモーションデータをUnityで利用する その3(キャラクターモデルにモーションを反映する)

本日はmocpiの技術調査枠です。
mocopiReceiverPluginを使ってmocopiのモーションデータをUnityで利用する方法を記事にします。
今回はキャラクターモデルにモーションを反映する手順です。

前回記事

以下の前回記事の続きです。
bluebirdofoz.hatenablog.com

前回記事に従い、mocopiReceiverPluginforUnityをインポートしておきます。

キャラクターモデルにライブラリを設定する

今回はサンプルシーンではなく、用意したキャラクターモデルにmocopiのモーションデータを反映してみます。
キャラクターモデルにはユニティちゃんを利用します。ユニティちゃんのインポート手順は以下の記事を参照ください。
bluebirdofoz.hatenablog.com

利用可能なアバター

mocopiのモーションデータはHumanoidリグを設定したアバターで利用可能です。
Humanoidリグの設定方法の詳細は以下を参照ください。
docs.unity3d.com

ユニティちゃんモデルは予め[Humanoid]リグが設定されているため、キャラクターモデルをそのまま利用できます。

Assets/UnityChan/Models/unitychan.fbx

モデルファイルをシーンにドラッグして配置します。

モーションデータの受信設定を行う

Humanoidリグにモーションデータを反映するコンポーネントをシーンに配置したキャラクターモデルに設定します。
配置したモデルオブジェクトのInspectorビューを開き、[Add Component]からMocopi Avatarコンポーネントを追加します。

Mocopi Avatarコンポーネントでは以下の設定を変更できます。

Motion Smoothness:動きの滑らかさを調整します。0~1で1に近づくほど補正が強くなります。
IsBufferingEnabled:受信したモーションデータをバッファに保存して順に再生します。無効にすると常に最新のデータを利用します。
DelayRecoveryRate:バッファで遅延が発生している場合の回復率を設定します。

次にシーンにmocopiのモーションデータの受信設定を行います。
初めに以下のデータ受信用プレハブをシーンにドラッグして配置します。

Assets/MocopiReceiver/Resources/Prefab/MocopiSimpleReceiver.prefab

配置したMocopiSimpleReceiverオブジェクトのInspectorビューを開きます。
[AvatarSettings]の[+]をクリックしてmocopiのモーションデータを受信するアバター設定を追加します。

[MocopiAvatar]に先ほど設定したMocopi Avatarコンポーネントの参照を設定します。
[Port]にはデータを受信するポート番号を入力します。今回は初期値の[12351]を設定しました。

これでモーションデータの受信設定は完了です。
もし複数のmocopiから別のモーションデータを受け取る場合は受信ポートの異なる[AvatarSettings]を追加していきます。

動作確認

シーンを再生し、前回記事と同様の手順でスマートフォンのmocopiアプリからモーションデータを送信します。
bluebirdofoz.hatenablog.com

これでキャラクターモデルにモーションデータが反映されました。