ついにプレビュー版で公開された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プロジェクトにダウンロード,インポートします.
サイトからパッケージをダウンロードする場合
- https://dev.azure.com/aipmr/MixedReality-Unity-Packages/_packaging?_a=feed&feed=Unity-packagesから
com.microsoft.azure.object-anchors.runtime 0.8.0
を選択し,com.microsoft.azure.object-anchors.runtime-0.8.0.tgz
をダウンロード. - UnityのPackageManagerを開き
+
ボタンからAdd package from tarball...
を押下しダウンロードしたファイルを選択してインポートする.
- https://dev.azure.com/aipmr/MixedReality-Unity-Packages/_packaging?_a=feed&feed=Unity-packagesから
コマンドラインからダウンロードする場合
- コマンドラインを開き以下を実行してパッケージファイルをダウンロード.
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にインポートする.
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スキャン後必要な部分だけトリミングできるのが便利