イラスト、モデリング、Unity、VR関連

unityとかblenderとかvr関連の作業メモ

VoIPを使ってボイスチャット機能を実装する

++資料

Peer-to-Peer Networking

Voice Chat (VoIP)

Oculus Avatar SDK を使って自分のアバターを Unity で利用する方法を調べてみた - 凹みTips

 

++注意点

*メソッド名はUnityとNativeで違う

*サンプルアプリがhttps://assetstore.unity.com/packages/tools/integration/oculus-integration-82022

のplatform/Samplesに入ってるのでこれを参考にする

 

++P2P接続の流れ

A=>Bに接続する場合

ovr_Net_Connect()でBのUserIDを付加してBに接続要求

ovr_Net_Accept()でBは接続要求を認証

これで、A、BはovrMessage_NetworkingPeerConnectionStateChange notificationを受け取る。

これでAはovr_Net_SendPacket()でデータを送ることが出来るようになる(サンプルの説明には書いてないが多分、相互に使えるはず)

データを送信された側は

ovr_Net_ReadPacket()

ovr_Packet_GetBytes()

でデータを取得でき、ovr_Packet_Free()でメモリを解放出来る

ovr_Net_Close()で接続を遮断できる

 

終わり。

 

++UserIDを取得する

上記ブログだと以下のように取得している

Core.Initialize();
Users.GetLoggedInUser().OnComplete(msg => {
   Debug.Log(msg.GetUser().ID); // 自身の ID(16 桁の数字)を表示
   Debug.Log(msg.GetUser().OculusID); // 自身の ID(文字列)を表示
});

サンプルでも追加で色々書かれてるが基本は同じ

 

++++その他

++Unityだけの機能を使っても実装できる

Unityでのマイク録音3種盛り:レイテンシ比較 - Qiita

これボイスチャットの場合は、小刻みにデータを送って相手側でPlay()するのだろうか?SyncVarとコールバックを使えば実装しやすい気もするがラグがひどい気がする

 

++Oculusのサンプルアプリ

PlatformManager: 接続のための基本的な処理を行うクラス

P2PManager:transform,アバターの同期

VoIPManager:ボイスチャット