mocopi SDK（BVH Sender、mocopi Receiver Plugin for Unity）ことはじめ

# Mocopiとは?
mocopiはSONYが2023年1月に発売予定の慣性式のモーションキャプチャデバイスです。高価なHMDを必要とせず、ハイエンドなスマートフォンでモーションキャプチャをすることができます。名前の由来は「モーション(motion)をコピー(copy)する」からきているそうです。
詳しくは[公式HP](https://www.sony.jp/mocopi/)をご覧ください。

# mocopi SDKについて
mocopi本体の発売は2023年1月で、現時点（2022/12/15）で本体の発売はされていませんが、一部SDKは配布が開始されています。SDKでどんなことができるのか事前に感触をつかんでおくために触っておこうと思います。
SDKの内訳は以下の通りで、mocopi Mobile SDK以外はすでに配布されています。
* mocopi Receiver Plugin for Unity
* mocopi Receiver Plugin for MotionBuilder
* mocopi Mobile SDK
* BVH Sender
* RAYNOSちゃん Avatar

これらSDKは[こちらのページ](https://www.sony.net/Products/mocopi-dev/jp/downloads/DownloadInfo.html#Unity_Plugin)からダウンロードできます。

本記事では**mocopi Receiver Plugin for Unity**のサンプルを動かすまでを解説していきます。

大まかな流れとしてはBVH SenderでBVHモーションをUDP通信→モーションをUnityで受け取ってモデルに反映という流れになります。
成功するとこのようにモデルが動き出します。
<blockquote class="twitter-tweet"><p lang="zxx" dir="ltr"><a href="https://t.co/TbrA9yFL3v">pic.twitter.com/TbrA9yFL3v</a></p>&mdash; lain (@lain_xr) <a href="https://twitter.com/lain_xr/status/1603270660884529153?ref_src=twsrc%5Etfw">December 15, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

# BVH Senderの使い方
まずは[SDKダウンロードページ](https://www.sony.net/Products/mocopi-dev/jp/downloads/DownloadInfo.html#Unity_Plugin)からBVH Senderをお使いの環境に応じてダウンロードしてください。
この後のフローは基本的には[ドキュメント](https://www.sony.net/Products/mocopi-dev/jp/documents/ReceiverPlugin/BVHSender/UseBVHSender.html)を追っていくだけですが、一部はまる箇所があったため解説していきます。

先ほどダウンロードページしたBVH Senderを好きなパスに置いて解凍します。
フォルダを開くとmocopi_SDK_EULA_JP.pdfという使用許諾契約書があるので一読しておきましょう。
BVHSender.exeを開くとMotion DataとUDP Settingsという項目の並ぶシンプルなUIが出てきます。
BVHの項目にはBVHの絶対パスを入力します。BVHのデータなんて持っていないよという方はBVHSender.exeと同じ階層にサンプル用のBVHが同梱されているのでそれを指定しましょう。
IPにはモーションを送信したいパソコンのIPv４アドレスを指定します。
IPv4を確認したい場合はコマンドプロンプトでipconfigコマンドを入力します。
![画像](https://i.gyazo.com/404b8f3d925131cb4070a8bfc2168103.png)
基本的には一番上のIPv4アドレスを指定してあげれば問題ないです。
Portは基本的にはデフォルトで大丈夫です。
運が良ければこれだけでUnity以外の設定は終わりですが、運が悪いともう少し設定項目が増えます。ただこの時点で成功しているかはわからないので次のUnityパートの設定を済ませてしまいましょう。そこまで行って初めて成功しているかどうかがわかります。

## mocopi Receiver Plugin for Unityの使い方
BVH Senderのダウンロードページと同じページからmocopi Receiver Plugin for Unityをダウンロードします。
次にUnity projectの作成ですが、[公式](https://www.sony.net/Products/mocopi-dev/jp/documents/ReceiverPlugin/Unity/Environment.html)によるとUnity2020.3.33が推奨バージョンらしいですが、2020.3.13でも動作確認できました。
ここからサンプルシーンの動作確認をしていきます。
Unity Editorを立ち上げて、先ほどダウンロードしたフォルダの中のmocopi-receiver-plugin_v1.0.0beta.unitypackageをUnityにインポートします。
次に以下のパスからサンプルシーンを開きます。

Assets/MocopiReceiver/Samples/ReceiverSample/Scenes/ReceiverSample.unity

サンプルシーンを開くと真っ黒なモデルがぽつんと一体置かれています。
ここまで来たらあとは実行するだけです。
BVHSenderのIPとPortの項目を埋めたら、IPと、UnityのヒエラルキーのmocopiSimpleReceiverのIPが同じことを確認してBVHSenderのStartボタンを押したあと、Unityの実行ボタンを押してください。
運が良ければモデルのBVHSender上の動きとUnity上の動きが同期するはずです。動いた方はおめでとうございます。

私は実行ボタンを押してもモデルが動き出しませんでした。...
というわけで以下はモデルが動き出さない場合のトラブルシューティングです。

# モデルが動かない場合
まずは[公式のトラブルシューティングページ](https://www.sony.net/Products/mocopi-dev/jp/documents/ReceiverPlugin/Unity/TroubleShoot.html)の「アバターが動かない」と「UDP通信ができない」の章を実行してみます。おそらくはこれで動くと思いますが、これでもモデルが動かない場合があります（筆者がそうでした）
その場合は非推奨かつ最終手段のような感じがありますが、Windows Defenderをオフにするとようやくモデルが動き出しました。この最終手段を用いるときは必ず**動作確認が済んだらDefenderをオンに戻しましょう**。

# 最後に
これだけだとただ真っ黒なアバターがよくわからない動きをしているだけなので好きなモーションデータやモデルに差し替えたいところです。ちなみにmocopi公式キャラクターのRAYNOSちゃんはmocopiでのモーションデータ使用時に限り、常識の範囲内で改変が可能とのことなので今回のサンプルに組み込めそうです。ただRAYNOSちゃんはVRM形式で配布されているのでただインポートするだけでは動かなそうです。いろいろ試してみたいですね。
mocopiの発売まであと一か月ですがとても楽しみです。

※本記事の間違いに気が付いた方はお気軽にコメント欄やTwitterのDMで指摘してくださると助かります。最後までお読みいただきありがとうございました！