HoloLens 2のUnityアプリ内でWebViewを動かす

HoloLens 2のOSがWindows 11になったことで、Unityアプリ内でWebViewが使えるようになったらしいのでサンプルを試してみました。

これまではUnity内でWebブラウザを表示することは非常に難しいので、別プロセスでEdgeを起動する方法で回避していましたが、使い勝手がイマイチなのでUnity内でのWebViewは待望の機能になります。

サンプルプロジェクトのダウンロード

まずサンプルプロジェクトをダウンロードします

Microsoft Edge WebView2 samples. Contribute to MicrosoftEdge/WebView2Samples development by creating an account on GitHub.
MRFTで関連ライブラリを導入

Mixed Reality Feature Toolをダウンロードします。(既にダウンロードしてある場合は不要)

MRFTを起動して、先ほどのサンプル内のUnityプロジェクト
WebView2Samples > GettingStartedGuides > HoloLens2_GettingStarted > HoloLens2GetStartedApp に対して、「Restore Features」を行います。

なお、MRFTが上手く動作しなかったので対処方法を教えてもらいました(感謝)

サンプルシーンを開く

Unityで上記プロジェクトを開きます。関連ライブラリの展開に時間がかかります。
Scenes > SampleSceneを開くと、WebViewプレファブが配置されたシーンが開きます。実行するとMSのページが表示されます。構造としてはシンプルですね。

実機ビルドする

いつものHoloLensアプリのようにビルドを行います。デバイスにはWindows11(Windows Holographic バージョン 23H1)が導入されている必要があります。

ブラウザ内の操作について

サンプルを実行してみると、「Back」やURL指定しての「Go」などは動作するのですが、肝心のブラウザ内での操作(スクロールやリンクのクリック)などは全く動作しません。あらためてシーンの構造を見てみると、ブラウザの表示部分はただのQuadにマテリアルが設定されたものなので、これでは当然何の操作もできません。

改めて最初の公式ドキュメントを読んでみると

WebView2 は Unity の入力システムを認識していないので、Unity シーンとは異なる座標系を持つ可能性があります。 
その結果、ポインターダウン イベントがある場合、その座標を WebView2 コントロールの座標系に変換する必要があります。 
さらに、ポインターダウン イベントを適切な WebViewMouseEventData イベントの種類に変換する必要があります。

とあるように、Quad上でクリックやドラッグされたイベントを、WebViewの座標系とイベントに変換して送り込み、その結果を受け取るという実装を自分で書かないといけなさそうです。さすがにこれは大変なので、このあたりを含めたサンプルが出るのを期待しています<他力本願

—2023/7/24追記
他力本願していたら、アキヒロさんが早速作ってくれました。流石です!
これでHoloLens 2 内でブラウザが操作できるようになりました。

HoloLens 2 の Unity アプリ内で WebView が利用できるようになりました。
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク