はじめに
Hi5 グローブの製造元である Noitom 社が販売している Neuron には、ネットワーク経由でデータを別のマシンに転送する機能がありますが、同じ Noitom 社製の Hi5 グローブにはそういった機能がありません。
2台以上の Hi5 グローブを使用して同時にキャプチャーを行おうとする場合には、Axis Neuron と同じようにネットワーク経由でデータを転送するソフトウェアが必要になります。
Hi5 Glove のデータを別の PC にストリーミングする
Hi5 Remote は、Noitom 社製の Hi5 グローブで収録されたモーションキャプチャーデータを、ネットワーク経由(UDP)で別のマシンにリアルタイムで転送するソフトウェアです。
Hi5 Glove Remote アプリ
— サトー (@sator_imaging) July 1, 2019
ネットワーク経由での同期テスト pic.twitter.com/Tml8fmTJXh
Hi5 Remote の使い方
Hi5 グローブを PC に接続し、NetworkConfig.txt
を設定してから Hi5Remote.exe
を実行します。
NetworkConfig.txt の編集
Hi5 Remote と同じフォルダにある、Hi5Remote_Data/StreamingAssets/
フォルダの中に、接続先を設定をするためのファイル NetworkConfig.txt
があります。
NetworkConfig.txt
をメモ帳などのテキストエディタで開き、以下を参考にして接続先の情報をテキストファイルの最初の行に入力します。
[IPアドレス]:[ポート]@[最大送受信レート/秒]
例:127.0.0.1:54321@200
設定する上での注意点
- ポート番号は 32768 から 61000 の間に設定することをお勧めします。
- 2 台以上のマシンから Hi5 Remote を使用して1台のマシンに向けてデータを転送する場合は、ポート番号がそれぞれ異なる数字になるように設定する必要があります。
入力が終わったらファイルを保存して、Hi5 Remote の実行ファイルを起動します。
起動すると、NetworkConfig.txt
で指定した IP アドレスのポートに対してデータ転送を開始します。
設定ファイルに問題がある場合
設定ファイルに問題がある場合は、アプリの左下に表示される IP アドレスが、127.0.0.4
ポートが 49494
になります。
IP アドレスが意図したものと違った場合は、NetworkConfig.txt
を再度編集してから Hi5 Remote を再起動してください。
ショートカットキー
リモート・デバッグソフトウェア共に、以下のショートカットキーを使用する事が出来ます。
-
Shift + R
-
NetworkConfig.txt
を読み込み直し、新しい設定でネットワーク接続を行います。
-
-
Shift + H
- ウインドウに表示されている各種情報を非表示にします。
実行中はウインドウをアクティブに
Unity を使用したソフトウェアには、依然としてウインドウがアクティブになっていないとフレームレートが落ちる、という問題があります。
稼働中は可能な限り、Hi5 Remote ウインドウをアクティブにした状態にしておくことをお勧めします。
※ 他のウインドウがアクティブな場合は以下の通り注意を促す表示がなされますが、ネットワーク経由でのデータのストリーミングは継続して行われています。
デバッグ用ソフトウェア
動作確認用にデバッグ用のソフトウェアが付属しています。
Shift + D のショートカットキーを押すことで、
- テストアニメーションをネットワーク越しに転送するモード
- 転送されたアニメーションを受信して確認するモード
を切り替えることができます。
ソフトウェアの仕様
動作環境
Windows 10 の 64bit 版で動作を確認しています。
ネットワークは無線LAN(Wi-Fi)ではなく、有線接続の LAN 環境での使用をおすすめします。
転送データ仕様
転送するデータは以下の通りです。
8 bytes header
4 bytes float * Quaternion xyzw * 20 joints * 2 hands
1度のデータ転送で計 648 バイトのデータを送信・受信します。
秒間 200fps でデータを転送した場合には、1秒間に 129.6KB、1分間で約 7.8MB のデータを送信するため、1Mbps (ビット/秒)のネットワーク帯域が必要になります。
稼働時間
長時間運用のテストでは送信側&受信側共にフレームレートが極端に落ちることなく、約4時間半の長時間稼働を確認しています。
※ 受信側はデバッグアプリでの確認の為、受信機能を組み込んだ本試験は別に行う必要があります。
テストアニメーションを使用して、約4時間半の連続稼働
— サトー (@sator_imaging) July 1, 2019
フレームレートは送信側は終始 180 前後
受信側の HUD の Frames Ignored は、直近で処理したフレームよりも前に送信されたデータを受信した数 pic.twitter.com/pk1dYCNLlm
バイトオーダーが違うマシンが混在している場合
バイトオーダーが違うマシンが混在している環境では上手くデータが転送できません。
設定に問題が無いのにデータが転送できない場合は、アプリ右上の経過時間のすぐ下に表示されている、Little Endian もしくは Big Endian の表記が、各マシンで統一されているのかを確認してください。
--
組み込む上での参考資料
Unity の Transform を数多く扱う際のパフォーマンスの最適化については、以下をご覧ください。
Hi5 Remote で受信したデータの適用
多くの Transform 毎フレーム更新することになるので、上記リンク先を参考に受信用のコンポーネントを組み込んでください。
おわりに
生放送等で Hi5 グローブを複数台使ってみたい、使おうと思っている方、おりましたらご連絡など頂ければ!
--