LoginSignup
1
0

More than 1 year has passed since last update.

【備忘録】Geospatial API のサンプルを動かすまで

Posted at

ARCore Geospatial API 使うためのメモ

Geospatial APIを試したくてGoogle CloudやUnity 上で設定とサンプルをとりあえず動かすまでの手順の備忘録。
基本的には以下を参照した。

環境

  • Unity 2021.3.4f1
  • ARCore Extensions 1.31.0
  • ARCore XR Plugin 4.2.3
  • XR Plugin Management 4.2.1

サンプルはARCore ExtentionsのGeospatial Sampleを手元にあったAndroidでとりあえず試す。

手順

手順は基本的に上記のサイトベースで実施

  1. Google Cloud プロジェクトを設定する
  2. Unityで空プロジェクトを用意してARCore,ARCore Extensionの設定
  3. 認可設定
    認可設定はkeyless認証で設定(Androidはこちらが推奨)

1.Google Cloud プロジェクトを設定する

Google Cloud Platformにアクセスして新しいプロジェクトを作成する(すでに作っていれば、それを利用してもOK)
image.png

先のプロジェクトを選択しメニューから[APIとサービス]-[ライブラリ]を選択
image.png

ARCore APIを検索して有効にする。
image.png

2. Unityで空プロジェクトを用意してARCore,ARCore Extensionの設定

Unity Hubを開き、新しいプロジェクトを作成する。
image.png

[File]-[Build Settings]でビルド設定を開き、プラットフォームをAndroidに設定する。
image.png

[Build Settings]の左下にある[Player Settings]を押して設定を開く。
[Other Settings]-[Rendering]の設定を変更。

  • Auto Graphics APIのチェックを外す
  • Graphics APIsからValkunを削除
    image.png

更に[Identification],[Configuration]も変更。デプロイするAndroidに合わせてアーキテクチャを変更しておく。

  • Minimum APi LevelをAPI Level 25以上に設定
  • Scripting BackendをIL2CPPに変更
  • Target ArchitecturesをARM64に変更
    image.png

[Player Settings]-[XR Plugin Management]を選択し[Install XR Plugin Management]を押してパッケージをインポートする
image.png

[Android]タブが選択上になっていることを確認し[ARCore]にチェックを入れる
image.png

メニューから[Window]-[Package Manager]を開く
左上の[+]ボタン押してメニューから[Add package from git URL...]を選択
URLにARCore ExtensionのGitHubのURLを入力する。

image.png

追加された[ARCore Extensions]を選択しSampleからGeospatial Sampleをインポートする。
image.png

最後に、[Build Settings]の[Scene In Build]に[Samples/ARCore Extensions/1.31.0/Geospatial Sample/Scenes/Geospatial.unity]を追加する。

これでパッケージの設定はいったん完了

3. 認可設定

ARCore APIは普通にAPIKeyでも利用可能ですが、最近はKeylessで設定するのが推奨されているらしい(Androidの場合)。
[Project Settings]-[XR Plug-in Management]-[ARCore Extentions]を選択し、[Android Authenication Strategy]を[Keyless(recommended)]に変更する。
image.png

SHA-1 フィンガープリント署名鍵の作成としてサービスに登録する。
[Project Settings]-[Publishing Settings]-[Keys store Manager]を押してKeystore Managerを開く
一番の上のプルダウンから[Create New]-[Anywhere]を選択し、任意のKeystoreを作成する。
image.png

以下の値を設定してキーを作成する

  • [Password]
  • [Confirm password]
  • [New key values]-[Alias]
  • [New key values]-[Password]
  • [New key values]-[Confirm password]

image.png

コマンドプロンプトを開き以下のコマンドを使う。コマンドを入力するとパスワードを聞かれるので先ほど設定したkeystoreのパスワードを入力するとフィンガープリントが表示される。コマンドにはJDKが必要だが、わざわざ入れなくてもUnity Editorのインストール時に入れていれば、それをそのまま使える。
image.png

コマンドを入力すると次のような感じになる。

PS D:\WorkSpaces\HogeHoge> C:\Unity\Editor\2021.3.4f1\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK\bin\keytool -list -keystore [先ほど作ったkeystoreファイル]
PS D:\WorkSpaces\HogeHoge> C:\Unity\Editor\2021.3.4f1\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK\bin\keytool -list -keystore hogehoge.keystore
キーストアのパスワードを入力してください:
キーストアのタイプ: jks
キーストア・プロバイダ: SUN

キーストアには1エントリが含まれます

geospatialapi,2022/06/19, PrivateKeyEntry,
証明書のフィンガプリント(SHA1): XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX

このフィンガープリントと[Project Settings]-[Player]-[Other Settins]-[Package Name]をコピーしておく。

Google Cloud Platformに戻って、先ほど作ったプロジェクトを選択し、[APIとサービス]-[認証情報]を選択する。
image.png

メニューから[認証情報の作成]-[OAuth クライアントID]を選択する。
image.png

アプリケーションの種類をAndroidに変更し、必要な情報を入力する。
image.png

これでデプロイして実行すると、現実空間にアンカーを設置しその位置にマーカーが設置される。サンプルではこういったオブジェクトが表示されるようになっているが、これを何かに別の物体に置き換えるだけでも、現実空間に装飾して遊ぶアプリ作れます。
image.png

唐突に思い出したAzure Spatial Anchorsとの違い

そういえばAzure Spatial Anchorsにもcoarse relocationという機能があったことをふと思い出した。あの機能もGPSは利用可能で、現実空間の中にアンカーを置いてデジタル情報を出すという観点では両者がやっていること自体はそこまで大きな違いはない気がするけどデータの管理方法や精度に差がありそう。
仕組みが違うからそらそうだろうという面もありそうですが。。。

Geospatial APIも他のVPSのサービスも基本的には方角や位置を特定するために照合するデータはサービス側が持っていて位置合わせする。
一方、Azure Spatial Anchorsはデバイスでスキャンした空間の特徴とアンカーをサービスに登録して位置合わせをする。
ImmersalはVPSできるけど、利用者がサービスに登録する点はASAと同じ。ただ、デバイスのスキャン精度は専用機使えばASAよりあげられるからちょうど中間っぽい位置にいてるのかも。
プラットフォーマーが照合データを用意していない場所についてはVPS使えないというのは実際あるので、このあたりがサービスの使い分けの1つになるのかもしれない。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0