UnityでHoloToolkitのSharing機能を使ってボイスチャットする方法
概要
MicrosoftがHoloLens用に提供しているUnityツール「HoloToolkit」を使ってボイスチャットを作ってみます。
情報が少なくハマったのでポイントを整理しておきます。
全体構成
ローカルネットワーク内でボイスチャットを実現します。
それぞれ以下のIPアドレスが割り振られているとします。
動作確認環境
- Windows 10
- Unity 2017.4.17f
- HoloToolkit 2017.4.3.0
Unityの設定
以下URLのHoloToolkitのHoloToolkit-Unity-2017.4.3.0.unitypackageをダウンロードします。
https://github.com/Microsoft/MixedRealityToolkit-Unity/releases
これをUnityのプロジェクトにImport Assetしてください。
Sharingの設定
HolotoolkitのAssetからSharingプレハブを探してシーンに追加します。
また、AutoJoinSessionAndRoomスクリプトをアタッチしてください。
次にSharingStageスクリプトのServer Addressをサーバを起動するIPアドレス(192.168.0.10または.20)に設定します。
ただし、サーバを起動しているPC上で動かすのであればlocalhostでも大丈夫です。
IsAudioEndpointにチェックが入っているかも確認しておきましょう。
MicrophoneTransmitterとMicrophoneReceiverの設定
ここで一番ハマりました。
HolotoolkitのボイスチャットライブラリであるMicrophoneTransmitterとMicrophoneReceiverをCameraにアタッチすればOK!
と思ったのですが、これだと自分の声が聞こえてくるだけで相手の声が聞こえません。
この問題は各所で議論されていますが解決法が見つかりませんでした。
https://github.com/Microsoft/MixedRealityToolkit/issues/72
*branchbark * commented on 10 Mar 2017
Can we do voice commands if we are streaming audio?
I'm having trouble transmitting/receiving any voice at all. I can only hear myself when I speak however I am unable to hear others who have joined the app and they cannot hear me. Other users during the shared experience report the same experience.
WANGJUN ✭ September 2017
I also have problems by using two scripts(MircrophoneTransmitter.cs,MicrophoneReceiver.cs). My Problem is that I can hear my own voice,also others voice
結論としては非常に簡単で、MicrophoneTransmitterとMicrophoneReceiverを別々のGameObjectにアタッチすればよいだけでした。
それぞれがAudio Sourceにアクセスするので、同じGameObjectだと競合してしまうためだと思われます。
そこでCameraの下に2つ空のGameObjectを作成して、それぞれに上記スクリプトをアタッチしましょう。
SharingServerの起動
この手順はどちらか一方のPCで行ってください。
以下URLのHoloToolkitのSource Codeをダウンロードします。
https://github.com/Microsoft/MixedRealityToolkit-Unity/releases
解凍してコマンドプロンプトで以下を実行してください。
cd [解凍フォルダ]\External\HoloToolkit\Sharing\Server
SharingService.exe -local
※フォルダ構成はバージョンにより異なります。
これで音声を中継するサーバが起動できました。
コマンドプロンプトにサーバアドレスが表示されれば起動に成功しています。
Unityアプリの起動
それぞれのUnityアプリを起動すると自動でボイスチャットが開始されます。
SharingServerの画面に以下のようなメッセージが表示されていれば、サーバへの接続が成功しています。
SharingService: Created Session "DefaultSession" with ID 1 on port 20600
SharingService: User XXX at address 192.168.0.10 joined session DefaultSession
以上の手順で、それぞれのPCのマイクから入力した音声がもう一方のPCのスピーカから再生されます。
トラブルシューティング
サーバへの接続ができない場合などは、アンチウイルスソフトが通信を遮断していないか確認してみましょう。
わからなければソフトを無効にして試してみてください。
Future work
とりあえずUnityプレイヤーでの動作を確認しました。
今後はHoloLensやその他プラットフォームで利用できるか確認する予定です。
また、ローカルネットワークではなくWANで使えるかも検証したいです。
→(追記)HoloLensでの動作を確認しました。
ただしScripting Backendが.NETじゃないとだめみたいです。
https://github.com/Microsoft/MixedRealityToolkit-Unity/issues/2531
Author And Source
この問題について(UnityでHoloToolkitのSharing機能を使ってボイスチャットする方法), 我々は、より多くの情報をここで見つけました https://qiita.com/goodclues/items/4230bd4a523b177dd9b0著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .