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

Mar 27, 2021 - 1 minute read - HoloLens

Azure Object Anchorsのサンプルプロジェクト動作手順

ついにプレビュー版で公開されたAzure Object Anchorの導入方法をまとめました.

プレビュー版のため正式公開時には仕様,サービス内容の変更がある可能性があります.

Azure Object Anchor概要

  • Azure Object AnchorはHoloLensでの3D形状からの物体認識が行うことができるサービスになります.
  • 認識用の学習データを作成するAzureサービス側と学習データモデルからオブジェクト認識を行うHoloLens側SDKで構成されています.
  • 3Dデータ(Scanされたメッシュデータや3DCADデータのfbx,ply,obj,glb,gltf)をAzureサービスへアップロードするとモデルデータが出力され,それをHoloLensで読み込んで利用することでObject Anchorを設置することができるようになります.
  • 用途としては現実空間のの車や構造物などのオブジェクトに対して位置合わせを行い,3Dデータを重ね合わせるなどがあります.
  • リアルタイムのトラッキングには不向きなので対象のオブジェクトは固定した状態で位置合わせを行うと安定します.

https://azure.microsoft.com/ja-jp/services/object-anchors/

https://docs.microsoft.com/ja-jp/azure/object-anchors/

Azure側導入手順

  • AzureからObject Anchorのリソースを作成し,以下の情報を控えておきます.これらの情報は3Dデータを学習モデルに変換する時に必要になります.
    • アカウント ID
    • アカウント ドメイン
    • アクセスキー

サンプルプロジェクト利用方法

  • GitHubからサンプルプロジェクトをCloneしておきます.
  • サンプルプロジェクト内には学習モデル作成用プロジェクトとHoloLens用ObjectAnchorサンプルプロジェクトが入っています.

開発環境

  • VisualStudio 2019
  • Unity 2019.4.23f1

学習モデル作成方法

  • quickstarts/conversion/Conversion.slnをVisualStudioで開きConfiguration.cs内の設定値を入力します.

    • AccountId : アカウント ID
    • AccountKey : アクセスキー
    • AccountDomain : アカウント ドメイン
    • InputAssetPath : 作成する学習用3Dモデルデータのファイルパス
  • 設定値を入力後実行を行い変換が完了すると3Dモデルデータのファイルパスと同じフォルダに*.ouファイルが生成されます.

HoloLens側Unityプロジェクト利用方法

  • Unity用のMRTKを利用したプロジェクトをquickstarts/apps/unity/mrtk/から開きます.
  • サンプルプロジェクトにはAzure Object AnchorのSDKパッケージは含まれていないので,以下の方法でUnityプロジェクトにダウンロード,インポートします.

    1. サイトからパッケージをダウンロードする場合

    2. コマンドラインからダウンロードする場合

      • コマンドラインを開き以下を実行してパッケージファイルをダウンロード.
      • npm pack com.microsoft.azure.object-anchors.runtime --registry https://pkgs.dev.azure.com/aipmr/MixedReality-Unity-Packages/_packaging/Unity-packages/npm/registry/
      • ダウンロードファイルを 1. と同じ手順でUnityにインポートする.
    3. MixedRealityFeatureToolからダウンロードする

      • HoloLens開発で利用できるパッケージをUnityにダウンロード,インポートできるツールMixedRealityFeatureToolをダウンロードします.
      • MixedRealityFeatureToolを展開後ObjectAnchorのUnityプロジェクトを選択し,Microsoft Azure Object Anchorsを選択し,Unityプロジェクトにダウンロード,インポートを行います.
  • Azure Object Anchorsのパッケージをインポート後AOASampleSceneをUWPでビルドしHoloLens用にデブロイします.

  • 上の章で作成した学習モデルはHoloLensのデバイスポータルから,作成したアプリのLocalStateフォルダにアップロードします.

    • LocalStateフォルダはアプリが実行されないと作成されないため,ファイルアップロード前に一度アプリを起動しておきます.
  • 学習モデルアップロード後のアプリ起動でboxが空間に配置されます.(起動位置によってはboxがSpatialMapに埋まってしまうことがあります.)

  • ObjectAnchorを設置したい場所が含まれるようにboxを移動,拡大してStart Searchボタンを押下することで位置合わせを行います.

  • 認識にはHoloLensのSpatialMapを利用しているので,事前にHoloLensの設定/システム/ホログラム/ホログラムを削除を行うことで認識が安定することがあります,

Object Anchor学習モデル作成手順

  • Object Anchor学習モデル作成用の3Dモデルにはスキャンメッシュデータを利用することができます.

    HoloLensのSpatialMap

  • HoloLensのSpatialMapから得られたメッシュデータを利用する場合には,デバイスポータルからView/3D ViewからSpatial mappingのUpdateとSaveからダウンロードが行えます.

  • ダウンロードしたしたSpatialMapのobjファイルは余分な部分も含まれているのでBlender等でトリミングを行うことで精度の良い3Dモデルにすることができます.

iPhoneのLiDAR

  • iPhoneに搭載されているLiDARを利用した3Dスキャンから得られたメッシュデータを利用することもできます.
  • AppStoreで公開されている3Dスキャンアプリからメッシュデータを取得することで学習モデル用のデータとして利用できます.
  • おすすめは 3d Scanner App
  • 3Dスキャン後必要な部分だけトリミングできるのが便利