なんかいろいろしてみます

Sep 16, 2019 - 1 minute read - HoloLens

MixedRealityWebRTCのサンプル動作手順

MicrosoftのMixedRealityシリーズとしてWebRTCの機能がGitHubに公開されています. 実行環境の構築からサンプルでの動作確認までを行ってみます.

WebRTCとは

MixedReality-WebRTC概要

MixedReality-WebRTC導入

実行環境

  • 複数台Windows10PC
  • HoloLens
  • Visual Studio2017
    • ビルド用コンポーネントをインストール
    • WindowsSDKは16299以降のバージョンで利用可能
  • Unity2018.4
    • UWPコンポーネントをインストール
  • git実行環境

WebRTC-Plugin作成

  • ファイルまでのpath名がWindowsの文字数制限255文字以上になってしまう可能性があるので,できるだけルートディレクトリ(C:)にプロジェクトを作成しておいた方がいいです.

  • Cドライブ直下にmr-webrtcフォルダを作成し,以下のコマンドをコマンドプロンプトより実行

    • git clone --recursive https://github.com/microsoft/MixedReality-WebRTC.git -b master C:\mr-webrtc
  • リポジトリのクローンに成功後,Microsoft.MixedReality.WebRTC.slnをビルドすることでUnity用のPluginが作成できます.

  • ソリューション構成をReleaseにしてソリューションプラットフォームをARM,x86,x64に切り替えてそれぞれビルドを行います.

    • ARM -> x64 -> x86の順番でビルドしないとビルドエラーが出る場合があります
  • ビルドに成功すればbinフォルダ内に2DのUWPアプリとUnityでのWebRTCを利用できるプラグインが作成されます.

シグナリングサーバー作成

  • WebRTCにはクライアント同士の接続先情報をやり取りするためのシグナリングサーバーが必要になります.
  • MixedReality-WebRTCではシグナリングサーバーとしてnode-dssを利用しています.
  • node.jsを利用しているためnode.jsをインストール
  • node-dssを以下のコマンドでクローン
    • コマンドプロンプトは外部と通信を行うため「管理者として実行」で実行してください
    • 場所はわかりやすいところ(例えばC:\node-dssなど)で実行
    • git clone https://github.com/bengreenier/node-dss.git
  • クローンに成功したら続けて以下のコマンドでnode-dssを実行します

    1234
    cd node-dss
    set DEBUG=dss*
    npm install
    npm start

  • 実行に成功したら以下の画像のような表示になります.

  • WebRTC実行時にnode-dssを実行しているパソコンのIPアドレスを入力する必要があります.

Testアプリ実行

  • PluginをビルドしたMicrosoft.MixedReality.WebRTC.slnからMicrosoft.MixedReality.WebRTC.TestAppUwpプロジェクトをビルド,実行します.
  1. 実行後SignalingのServer addressの項目にnode-dssを実行しているPCのIPアドレスを入力します.
  2. 入力後 Start pollingボタンを押してサーバーに接続します.
  3. 接続が成功するとnode-dssのコマンドプロンプトに以下のようにUIDが表示されます.(赤線の部分)

    • node-dssではWebRTCでクライアント同士を接続するためにUIDを利用しています.
    • そのため接続したい相手のUIDを知っている必要があります.
    • 表示されているUIDをもう一台のPCでメモをしておきます.
  4. 接続相手のUIDをそれぞれメモを取っておき,再度テストアプリを実行します.

  5. SignalingのRemote peer UIDに接続先のUIDを入力して Start polling します.

  6. ポーリング開始後Connectionから Create offerボタンを押して接続を開始します.

  7. 接続後Channelsの Start local videoでWebRTCによるビデオチャットとメッセージが行えます.

Editorサンプルシーン動作

  • \Microsoft.MixedReality.WebRTC.Unity にUnityのEditorとUWPでの実行が行えるサンプルプロジェクトがあります.
  • Plugin作成が正常に行えていれば \Assets\Plugins ないにPluginがあらかじめ配置されているのでそのままUnityで開きます.
  • Microsoft.MixedReality.WebRTC.Unity.Examples/VideoChatDemo/VideoChatDemo.unityがサンプルシーンになります.
  • 開いたシーンのVideoChatDemo/PeerConnectionのGameObjectにシグナリングサーバーのIPアドレスと接続先UIDの入力欄があります.
  • 入力後PlayボタンでEditor上での実行が行えます.
  • 2DのUWPアプリとの接続も行えます.(メッセージはできない)
  • 設定しているBuild PlatformによってEditor上での挙動が若干異なります
    • PlatformがStandaloneの場合
    • 接続のためCreate offerボタンがある
    • PlatformがUWPの場合
    • HoloLens用のため自動で接続するようになっている

HoloLensサンプルアプリ動作

  • Unity EditorでBuildSettingsのPlatformをUWPに変更することでHoloLensアプリとしてビルドが行えます.
  • この時シグナリングサーバーのIPアドレスと接続相手のUIDの入力はあらかじめ行ってからビルドを行ってください.

コマンドプロンプトを特定の場所で開きたい場合

  • エクスプローラーのPath表示部分に cmd を入力することで開いているフォルダからコマンドプロンプトを実行できます.(移動の手間が省ける)
    • 管理者で実行は行えないため,管理者で実行を行うためにはWindowsキーからcmdを入力して右クリックから行えます

まとめ

  • サポートしているWindowsSDKのバージョンが古いためMixedReality-WebRTCはSurface Hub 2用にビルドできなかった.
  • たぶんHololens 2でも動くかも
  • Public Previewのため今後も変更,修正が行われるはず