iOSで動作するSpectatorViewを試してみる

こんにちは。コンサルティング&テクノロジー部xRエンジニアの酒井(@saka_it)です。

MRTK 2017.4.0でiOS端末で動作する新しいSpectatorViewが追加されました。 動作させたときの動画はこちらです。

今回はこのSpectatorViewを試した際の手順を説明します。

動作イメージ


SpectatorViewとは?

HoloLensで見ている動画をディスプレイなどで表示する方法として、Device PortalやHoloLens(UWP)アプリのLive preview機能がありますが、タイムラグがある、HoloLens側のFPSに制限がかかる、画質が低いといった欠点があります。

これを別デバイスで表示することで解決するのがSpectatorViewというプラグインで、従来は、HoloLens+カメラ+PCを接続することで実現していました。しかし、デバイスが多く、事前のキャリブレーションが面倒なこともあって、あまり使いやすいものでありませんでした。

5月末に公開されたMRTK 2017.4.0に、Previewとして追加されたSpectatorViewは、同じ機能をiOS端末で実現する機能となります。まだ、Previewということもあってか事前準備は面倒ですが、実際に動作させる際のお手軽さはかなり高まっています。

必要なもの

  • SpectatorViewとOpenCVのDLL
    • この後の手順で作成します
  • UnityARKitPlugin
    • 公式ドキュメントには必要と書かれていますが、実際にはMRTKに(改造されたものが)含まれているので不要です
  • HoloLens
  • Windows 10 PC
    • Visual Studio 2017
      • HoloLens用のオプションのほかにC++のビルドオプションが必要です
    • Unity 2017.2.1p2以上
      • UWPプラグインのほか、iOS用プラグインも必要です
      • 今回の手順はUnity 2017.4.5f1で実行しています
  • iOS11以上が動作する端末
  • Mac
    • xcode 9.2 以降

Vcpkgをビルド・インストール

適当なディレクトリに「 https://github.com/Microsoft/vcpkg 」をクローンします。クローン出来れば、管理者権限のコマンドプロンプトを開き下記のコマンドを順に実行します。

  1. .\bootstrap-vcpkg.bat
  2. .\vcpkg integrate install
  3. .\vcpkg install opencv[contrib]:x86-uwp --recurse
    • 依存関係にあるライブラリをインストールするため、かなり時間が掛かります
    • 下記のようなエラーが出る場合はVisual Studio Installerで言語パック-英語を追加します

Vcpkg OpenCV インストール時エラー

SpectatorViewPluginをビルドする

適当なディレクトリに「 https://github.com/Microsoft/MixedRealityToolkit.git 」をクローンします。クローン出来れば、「MixedRealityToolkit\SpectatorViewPlugin\SpectatorViewPlugin\SpectatorViewPlugin.sln」をVisual Studioで開き、「Release」「x86」でビルドをします。

SpectatorViewPluginビルド設定

ビルドが完了すれば、下記のDLLが生成されるのでコピーしておきます。

  • opencv_aruco341.dll
  • opencv_calib3d341.dll
  • opencv_core341.dll
  • opencv_features2d341.dll
  • opencv_flann341.dll
  • opencv_imgproc341.dll
  • zlib1.dll
  • SpectatorViewPlugin.dll

SpectatorViewPluginビルド結果

Unityプロジェクトの事前準備

新規Unityプロジェクトを作成し、下記3つのUnityパッケージをMRTKのリリースページからダウンロードして、インポートします。

  • HoloToolkit
  • HoloToolkit-PreviewFeatures
  • HoloToolkit-Example

UnityプロジェクトにMRTKをインポート

さらにPluginディレクトリを作成し、SpectatorViewのDLLをインポートします。

UnityプロジェクトにSpectatorViewPluginのDLLをインポート

「Assets/HoloToolkit-Examples/SpectatorView/Scenes」にあるサンプルシーンを開きます。

シーンを開く

通常のHoloLensアプリと同じくUWPのプロジェクト設定を行います。

Project設定

また、Compatibilityは下記にチェックを入れておきます。

  • Webcam
  • Private Network Client Server

UWPCapability設定

HoloLens用アプリをビルド

シーン内のSpectatorViewを選択し、InspectorのPlatform SwitcherのHololensボタンをクリックします。

HoloLens Platform Switcher切替

後は通常通りビルドしてHoloLensにデプロイおこないます。 ここで、デプロイ完了後もiOS用アプリのビルドまでUnityを終了させないでください!Unityのセッションが変わると状態の同期に問題が発生することがあります。

iOS用アプリをビルド

シーン内のSpectatorViewを選択し、InspectorのPlatform SwitcherのIPhoneボタンをクリックします。

iPhone Platform Switcher 切替

下記のモジュールがiOSビルドに対応していないためディレクトリごと削除します(Assembly Definition Filesなどで切り替える方法でも可能です)。

Assets/HoloToolkit/Utilities/Scripts/GLTF

GLTFディレクトリ削除

また、「Assets/HoloToolkit/Input/Scripts/InputSources/DictationInputManager.cs」スクリプトでエラーが発生するため、FinishStopRecordingメソッド(210行目~216行目)を下記のように置き換えます。

private IEnumerator FinishStopRecording() { #if UNITY_WSA || UNITY_STANDALONE_WIN while (dictationRecognizer.Status == SpeechSystemStatus.Running) { yield return null; } PhraseRecognitionSystem.Restart(); isTransitioning = false; #else yield return null; #endif }

コードのエラーがなくなれば、iOS用のPlayer Settingsを設定しビルドを行います。

  • Bundle Identifierに適当な名称を設定する
  • Camera Usage Descriptionに適当なメッセージを設定する
  • Target minimum iOS Versionを「11.0」に設定する

iOS設定

HoloLensビルドの項目でも記載しましたが、Windows上でHoloLensアプリのビルドと同じセッション(Unityを落とさないまま)で行うようにして下さい。

なお、ビルド時に下記のエラーが発生することがあるようです。

iOSビルドエラー

発生した場合はエラーの出ているファイルのImportSettingsでiOSタブの「Override for iOS」にチェックを入れてください。

iOSビルドエラーの対策 Override for iOSにチェック

出力されたプロジェクトをMacに移動し、xcodeで実機にデプロイすれば完了です。

サンプルを実行する

※HoloLens、iOS端末ともに同じネットワークに接続すること

  1. HoloLens :アプリを起動する
  2. iOS:アプリを起動する
  3. iOS:しばらく周囲をカメラで写して空間認識をさせる
  4. iOS:空間認識が完了するとマーカーが表示される
  5. HoloLens :iOS側の空間認識が完了するとHoloLensのカメラが起動するので、iOS端末上のマーカーを見る
  6. iOS:同期が完了するとSpectatorView表示が開始される

HoloLensとiOSで星(?)が同じ位置に表示され、アニメーションが同期していることが確認できます

動作イメージ


ネクストスケープ企業サイトへ

NEXTSCAPE

検索する

タグ

メタデータ

投稿のRSS