夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

iPhoneでGeoSpatialAPIを試す

本日はiOS枠です。

iOSでGeoSpatialAPIを試していきます。

〇GeoSpatialAPIとは?

GeoSpatialAPIはGoogleが開発した地球規模でのVPS(Visual Positioning Service)です。

VPSとはあらかじめアプリケーションが実行される環境情報を登録することによって現在ユーザーがどの位置にいるのかを判別し自己位置推定を行うサービスのことを指します。

VPSを使用することでARアプリなどで多種デバイス間での正確な互いの位置の共有などが可能です。

GeoSpatialAPIの場合Google Earthを使用して自己位置を推定します。

〇環境

Mac mini (M2)

・Unity2021.3.21f1

・GeoSpatialAPI

Google Cloudでプロジェクトを作成する

①GoogleCloudにログインして新規のプロジェクトを作成します。

console.cloud.google.com

②サイドメニューからAPIとサービスライブラリを選択します。

③上部検索バーにARと入力しARCore APIを検索します。

④ARCoreAPIを有効にします。

認証情報を作成を選択しAPIキーを選択します

ここで発行されたAPIキーを使用します。

〇Unityプロジェクトの作成

①Unityプロジェクトを作成し開きます。

今回はURPテンプレートから作成しました。

〇沼った点

今回は「本日はiOS枠です。

iOSでGeoSpatialAPIを試していきます。

〇GeoSpatialAPIとは?

GeoSpatialAPIはGoogleが開発した地球規模でのVPS(Visual Positioning Service)です。

VPSとはあらかじめアプリケーションが実行される環境情報を登録することによって現在ユーザーがどの位置にいるのかを判別し自己位置推定を行うサービスのことを指します。

VPSを使用することでARアプリなどで多種デバイス間での正確な互いの位置の共有などが可能です。

GeoSpatialAPIの場合Google Earthを使用して自己位置を推定します。

〇環境

Mac mini (M2)

・Unity2021.3.21f1

・GeoSpatialAPI

Google Cloudでプロジェクトを作成する

①GoogleCloudにログインして新規のプロジェクトを作成します。

console.cloud.google.com

②サイドメニューからAPIとサービスライブラリを選択します。

③上部検索バーにARと入力しARCore APIを検索します。

④ARCoreAPIを有効にします。

認証情報を作成を選択しAPIキーを選択します

ここで発行されたAPIキーを使用します。

〇Unityプロジェクトの作成

①Unityプロジェクトを作成し開きます。

今回はURPテンプレートから作成しました。

②PackageManagerを開き+アイコンからGitURLで以下のURLを入れARCore Unity Extentionsを導入します。

https://github.com/google-ar/arcore-unity-extensions.git

SampleタブからGeospatial Sampleを取得します。

BuildSettingsを開きビルドするシーンにSamples/ARCore Extentions/(バージョン名)/Geospatial Sample/Scenes/Geospatialを追加します。

またターゲットプラットフォームをiOSに設定します。

⑤ProjectSettingsを開きXR Plug-in ManagementからiOSのビルド用にARの設定を行います。

ここでは詳細は端折ります。

XR Plug-in Management内のARCore Extentsionsタブを開きます。

ここでの設定は次のようになります。

iOS Support Enabledを有効にする

Android Authentication Strategy および iOS Authentication Strategyを両方API Keyに設定し、取得したAPIキーを入力します。

・Geospatialにチェックを入れます。

以上でUnity側の設定が完了しました。ビルドします。

⑦生成されたUnity-iPhone.xcodeprojXCodeで開きデプロイします。

以上でiPhoneへアプリを展開できました。

〇実機で確認

youtu.be

実機で確認ができました。  一度設定されたアンカーが再度アプリを開きなおしても同じ場所に存在することがわかります。

数センチレベルでずれていますが、この程度であれば許容範囲と言えるでしょう。

街中などでナビゲーションアプリの開発など様々な場所で使用できそうです。

実際にGeospatial APIが使用されているかどうかはGoogle CloudのダッシュボードからAPI呼び出し履歴を確認することで可能です。

〇沼った点

今回はXCodeでビルド時に「Framework 'ARCoreBase.xcframework' not found」というエラーが発生し、どうやっても解消することができませんでした。

具体的にやったこととして以下のissueを参考にpod installなどをやり直しましたがいくらやっても同じエラーが発生してしまいました。

github.com

筆者も経験不足かつ勉強不足ではあったのですがこれはARCoreBaseのフレームワークがデフォルトではないため発生した問題で、通常はCocoaPodsと呼ばれる依存関係管理ツールを使用して、iOSおよびmacOSアプリケーションのプロジェクトでサードパーティのライブラリやフレームワークをインストールすることで解消されます。

〇解消

今回のエラーの原因はUnity-iPhone.xcodeprojXCodeで開いて実行していたためでした。

Unity-iPhone.xcworkspaceXCodeで開いてビルドすることで正常にフレームワークエラーが発生せずに実機にデプロイできました。

簡単なことでしたが、筆者の理解ではUnityからビルドしたアプリはUnity-iPhone.xcodeprojXCodeで開きデプロイするという認識だったのでこれは盲点でした。

〇参考

zenn.dev