Spectator View(ArUcoマーカー版)を実行する

前回、Spectator Viewを、位置合わせにAzure Spatial Anchors(ASA)を使って実装する方法で試しました。

MRTKv2版のSpectator Viewの導入メモです。 Spectator Viewそのものについての解説や、QRコードを使った...

ASAを使う利点としては、HoloLens 1と2で同じコードで動くということでした。ただ、ASAに対して課金されるのと、企業内ネットワークで完結するQRコードで位置合わせを行う方法についても需要があるので調査してみました。今回は、HoloLens 1とiOSを対象にしています。

QRコードを使用する場合、HL1とHL2では実装方法が異なります。HL2は、環境認識カメラでQRコードを読み取る仕組みが存在するのに対して、HL1はOpenCV等を使って構築する必要があり、手順が多くなっています。

手順については、今回もアキヒロさんのブログが非常に詳しいので参照してください。

MRTKv2から新たに提供されたMixedReality-SpectatorViewの導入方法を紹介します.(QRコード編) 今回動作確認ができたのはbeta版のQRコードモードになります.

ただ、自分で試した時になかなかうまくいかなかったので改めて手順をメモしておきます。

今回は、「サンプルを動かす」ことを目的としていますので、既存のプロジェクトに組み込む場合は少し手順が異なります。前回、ASAを使ったときに行った手順の前半を参考にしてください。

サンプルのダウンロード
Mixed reality spectator experiences. Contribute to microsoft/MixedReality-SpectatorView development by creating an account on GitHub.

上記リポジトリの最新版(投稿時release/1.1.0)を下記コマンド等で取得します。

> git clone https://github.com/microsoft/MixedReality-SpectatorView.git
> cd MixedReality-SpectatorView/
> git fetch origin release/1.1.0
> git checkout release/1.1.0
セットアップスクリプトの実行

コマンドプロンプトやPowerShellでcloneしたディレクトリ(MixedReality-SpectatorView)に移動し、下記コマンドを実行すると、各種サブモジュールがダウンロードされ、シンボリックリンクが作成されます。

> .\tools\Scripts\SetupRepository.bat
対象となるサンプルの確認

今回動かすサンプルのUnityプロジェクトの場所は下記になります。

MixedReality-SpectatorView\samples\SpectatorView.Example.Unity\Assets

上記ディレクトリをUnityで開きます。今回はUnity 2018.4.14f1を使用しました。
開いた時にDirectoryNotFoundExceptionが出る場合はパスが長すぎる可能性があるので、ディレクトリ自体をC:¥の直下などに移動してパスを短くしてください。

OpenCVのビルド

コマンドプロンプトやPowerShellなどを開き、MixedReality-SpectatorView\external に移動し、下記のコマンドを実行します。
external以下にvcpkgをcloneしてビルドを行っています。

> git clone https://github.com/Microsoft/vcpkg
> cd vcpkg
> .\bootstrap-vcpkg.bat
> .\vcpkg.exe integrate install
> .\vcpkg.exe install protobuf:x86-windows
> .\vcpkg.exe install opencv[contrib]:x86-uwp --recurse

ビルド中に

Warning: The following VS instances are excluded because the English language pack is unavailable.

というエラーが発生する場合は、Visual Studio Installerから、言語パックの英語をインストールしてください。(2017と2019の両方がインストールされている場合はどちらかで構いません)

OpenCVのDLL作成
MixedReality-SpectatorView\src\SpectatorView.Native\SpectatorView.Native.sln

をVisual Studio(前のステップで英語の言語パックをインストールした方)で開きます。

ソリューション構成(プルダウン)をRelease x86にして、ソリューションエクスプローラーの「SpectatorView.OpenCV.UWP」を右クリックし、「ビルド」を選択します。
ビルドに成功するとDLLが生成されます。次に、

> .\tools\Scripts\SetupRepository.bat

を実行すると、UnityのディレクトリにDLLがコピーされます。
(うまくいかない場合は前述のアキヒロさんのブログを参照してください)

ARKitプラグインの配置

上記からARKitプラグインをzipダウンロードして別の場所で解凍しておきます。

ARKitプラグインのコピーは、Unity経由でなく、エクスプローラーで直接行ってください。

zipでダウンロードしたARKitプラグインの中身を全て

MixedReality-SpectatorView\external\ARKit-Unity-Plugin

以下にコピーします

HoloLens 1向けシーンのビルド

Unityで、

Assets\MixedReality-SpectatorView\SpectatorView\Scenes\SpectatorView.HoloLens

シーンを開きます。

HierarchyのSpectatorViewを選択すると、Inspectorに「Platform Switcher」がありますので、HoloLensボタンをクリックすると、ビルドターゲットがHoloLens向けに切り替わります。

Unityのメニューの Spectator View > Update All Asset Caches を選択します。
Build Settingsからビルドを行い、HoloLens 1で実行します。

iOS向けシーンのビルド
Assets\MixedReality-SpectatorView\SpectatorView\Scenes\SpectatorView.iOS

シーンを開きます。

同じくHierarchyのSpectatorViewを選択 > Inspectorの「Platform Switcher」の「iOS」をクリックし、Build SettingsからiOS向けのビルドを行いますが、ビルド対象のシーンは下記のように、SpectatorView.iOSを0、SpectatorView.HoloLensを1としてください。

作成されたプロジェクトをMacにコピーし、pod installを行います。今回、QRコードを使用するのでASAに関するpodは機能的に不要なはずですが、コード的には存在するので必要になります。また、パーミッション変更を行います(詳細は前回の記事を参照ください)

正常に動作すると、下記のように、カメラの画像が表示され、HoloLensのIPアドレスを入力する画面になります。

HoloLensのIPアドレスを入力して通信が成立すると、QRコードが表示されます。

このQRコードをHoloLensで読み取ることにより位置合わせが行われ、HoloLensで見ているものがiOSでも見ることができるようになります。

スポンサーリンク

シェアする

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

フォローする

スポンサーリンク