Oculus Rift対応のソーシャルVRを作る その2 ボイスチャットの実装 DFVoice – Voice chat (VoIP) solution #アセットアドカレ

この記事は Unity Assets Advent Calendar 2015 4日目の記事になります。

OculusRiftでオンライン。前回はPhotonを使ってOVRPlayerControllerの連携まで実装しました。

Oculus Rift対応のソーシャルVRを作る その1 Photon

今回はボイスチャット機能を追加していきます。

DFVoice – Voice chat (VoIP) solution

https://www.assetstore.unity3d.com/jp/#!/content/19344

 

開発環境

  • Unity 5.2.1p2
  • Oculus Runtime 0.7

 

元ネタ

OVRPlayerControllerオンラインにボイスチャット機能を追加

>> CONVRGE – How to add voice chat to Unity in under 15 minutes using DFVoice
http://www.convrge.co/add-voice-chat-to-unity-using-dfvoice

前回のPhotonでOVRPlayerControllerオンラインを作るチュートリアルから、DFVoiceを使いボイスチャット機能を追加するチュートリアル。

開発

2:06 MyLocalVoiceController.csスクリプトの作成。
あらかじめ用意しておいたコードを張り付け 2:30

内容としては、IsLocalはシーンにあるPhotonViewがアタッチされているプレハブがどこのPCの所有者のものかの判定。

OnAudioDataEncodedはマイクに喋った音声データを取得するコールバック。次のRPCのvcメソッドを呼んで他のPCのAudioSourceに音声データを配布している。

vcはRPC、りもーと ぷろしーじゃー こーる。他のPCのメソッドを呼べるもの。
OnAudioDataEncodedで呼ばれている通り、他のPCがしゃべったら自分のPCのvcが呼ばれてAudioSourceが喋り出す。

isTalkingは喋っているかの判定

5:25 作ったMyLocalVoiceController.csスクリプトをNetworkedPlayerプレハブにアタッチ。PhotonViewのコンポーネントをドラッグで設定しておく。

5:51 声を再生するAudioSourceコンポーネントをNetworkedPlayerプレハブにアタッチ。3Dサウンドに対応するためSpatial Blendを0から1へ

7:03 UnityAudioPlayer.csスクリプトをNetworkedPlayerプレハブにアタッチ。実際はこのDFVoiceのUnityAudioPlayer.csスクリプトが音声データのバッファーリングや再生などを行う。
こちらのIsThreeDimensionalをONにして3Dサウンドに対応させておく。

7:34 一度、音声データをネットワークでやり取りして喋れる段階までできたところでシーンを実行して確認してみる。
しかしエラー。後は自分がマイクに向けて喋った入力、PCのオーディオ入力を受け取るための実装が必要。

7:57 マイクからのオーディオ入力をUnityのプログラムで取得する。
MicrophoneInputDevice.csスクリプトをNetworkedPlayerプレハブにアタッチ。
喋る時に押すボタン、Push To TalkSpaceを設定

完成したNetworkedPlayerプレハブ

※赤枠はコンポーネントを張り付けた後に内容を編集した項目。

9:23 ビルドで確認。しかしエラー。
Api Compatibility Levelを .NET2.0 Subsetから.NET 2.0へ

以上の手順で基礎となるソーシャルVRの基盤が完成。

あとはAvatarとして使っているCubeを差し替えたり、Photonでやり取りするデータを増やしたり、プレイヤー名を設定したり色々カスタマイズしていきましょう。

Unity Assets Advent Calendar 2015 記事一覧へ