本日はMixedReality-WebRTCを学んでいきます。
MixedReality-WebRTCはMRTKと同様にMicrosoftによって提供されているパッケージでMixedRealityデバイスにおいてWebRTCを実装するためのパッケージになります。
今回は以下のドキュメントにのっとってUnityプロジェクトを作成していきます。
〇Unityプロジェクトの作成
①新規でUnityプロジェクトを作成します。(余談ですがUnityHub 3.0.1にアップデートしてUIが変わったため慣れるまで使いづらさを感じますね)
次にMRTKを導入します。 MRTKはMixedRealityFeatureToolsを使用することで一括で管理することができます。
②MixedRealityFeatureToolsを起動します。
MixedRealityFeatureToolsの使い方などは過去の記事を参考にしてください。
③以下のツールを導入します。
・MixedRealityToolkit.Examples
・MixedRealityToolkit.Extentions
・MixedRealityToolkit.Faundations
・MixedRealityToolkit.Tools
・MixedReality OpenXR Plugin
・MixedReality-WebRTC
・MixedReality-WebRTC Examples
このうち[MixedReality-WebRTC]がコアなパッケージです。
④最後にUnityのシーンでMRTKの設定を行います。
〇ピアコネクションの作成
新規でゲームオブジェクトを作成し[PeerConnection]コンポーネントを加えます。ここでは[PeerConnection]という名前を付けました。
〇Node-dssの導入実行
WebRTCは通常ブラウザを挟んで通信を行いますが今回はNode.jsを使用してサーバーを建てます。
Node.jsは以下のサイトから入手できます。
ダウンロード後にインストーラーを実行します。
次にNode-dssを使用します。
Node-dssはWebRCT用のツールです。筆者も詳しくは学べていないのですがNode.jsをWebRTCで利用しやすくするためのツールといったところでしょうか?
上記のリンクからリポジトリを入手します。
ダウンロードしたディレクトリから以下のコマンドを実行します。
set DEBUG=dss* npm install npm start
筆者はLinaxあまり理解していないのですがこちらはGitBushでも実行できます。
コンソールウィンドウを閉じずにUnityへ戻ります。
〇シグナラーの作成
新規でゲームオブジェクトを作成し[NodeDssSignaler]コンポーネントを加えます。ここでは[Signaler]という名前を付けました。
[NodeDssSignaler]コンポーネントの[PeerConnection]に[PeerConnection]オブジェクトをドラッグアンドドロップします。
〇WebcamSourceを加える。
新規でゲームオブジェクトを作成し[WebcamSource]コンポーネントを加えます。ここでは[LocalVideoPlayer]という名前を付けました。
〇マイク環境の設定
新規でゲームオブジェクトを作成し[MicrophoneSource *]コンポーネントを加えます。ここでは[LMicrophoneSource **]という名前を付けました。
〇ビデオプレイヤーの追加
[LocalVideoPlayer]オブジェクトに[MeshRenderer]、[MeshFilter]コンポーネントを加え[MeshFilter]のMeshにはQuad、[MeshFilter]のmaterialには[YUVFeedMaterial]をアタッチします。
[YUVFeedMaterial]マテリアルはMixedRealityFeatureToolsでツールをインポートした場合Package内に存在します。
次に[VideoRenderer]コンポーネントを配置します。
この状態でプレイボタンを押すとWebカメラの映像が描画されるようになります。
以上でプロジェクトが完成しました。
次回実機で見ていきます。