見出し画像

[Unity]ARCore Geospatial APIを使ってみた

こんにちは! エンジニアの宮Pです😎
今回は、ARCore Geospatial APIを使って位置情報を確認するアプリを動かしてみます🙂

ARCore Geospatial APIとはGoogleの発表したVPS(Visual Positioning Service/System)です。

「VPSって何?」という方は、位置情報を利用したスマホゲームを思い出してみてください。
現実の道路や河川などの位置情報を元にしてアプリ内でファンタジー世界の町を構築したり、実際に高層ビルがある場所に魔法の塔を出現させたり……こんな処理を実行するために用いられるのが、このARCore Geospatial APIです。
これを極めれば位置ゲーを作れるようになるかも😁
ということで、APIの導入までテストしてみます。


GCPを設定する

早速始めていきましょう。
VPSを使用するためにGCP(Google Cloud Platform)を設定します。

Google Cloud Platformの利用規約」と「適用されるサービスとAPI」を良く読んで、内容に同意できる場合はチェックを入れます。
通知メールについては、ニーズに合わせてチェックを入れてください。

[同意して実行]をクリックすると、プロジェクトの設定画面が表示されます。任意のプロジェクト名を入力して[作成]ボタンをクリックしてください。

プロジェクト名は任意のものに変更してください

左横のメニューからAPIとサービス → ライブラリの順に選択します。
APIとサービスを検索」欄に「ARCore API」と入力して検索、結果の中から「ARCore API」を選択します。

[有効にする]ボタンをクリックすると、このARCore APIが有効になります。

ボタンが「有効にする」から「管理」に変化します

次は認証情報の設定です。
左横のメニューからAPIとサービス → 認証情報の順に選択します。

画面上部の[+認証情報を作成]をクリックして、APIキーを選択します。
作成されたAPIキーは、Unity側でビルドする際に使いますので、テキストファイルなどにコピペしておくと便利です。

Unityプロジェクトを新規作成

Unityで新規プロジェクトを作成します。
今回は「AR」テンプレートを使ってみます。

Unityが起動したらBuild Settingsを開いて、プラットフォームをAndroidに変更します。
次にWindowメニューからPackage Managerを開き、Google ARCore Extensions for AR Foundationをインストールします。
ダイアログ左上の[+]ボタンをクリックして「Add package from git URL...」を選び、https://github.com/google-ar/arcore-unity-extensions.gitと入力してください。

[Add]ボタンをクリックするとインストールが始まります。

インストールが終わったら、ARCore ExtentionsダイアログのSamplesを展開して、Geospatial Sampleをインポートします。

プロジェクトの詳細を設定していきます。
EditメニューのProject Settingsを選択して、ダイアログの下の方にあるXR Plug-in Managementの内容を表示させ、ARCoreにチェックを入れます。

一覧からARCore Extentionsを選び、Authentication StrategyAPI Keyに変更して、今回の記事の最初のほうで作ったAPIキーを入力します。
さらにGeospatialにチェックを入れてください。

はい、ここまでがProject Settingsの変更でした。
ARアプリを作るときって、こういう初期設定が多くて大変ですね🤨

ビルドの設定

Projectビューで Assets/Samples/ARCore Extensions/1.40.0/Geospatial Sample/Configurations/GeospatialConfig を開き、Geospatial ModeEnabledに変更します。

Assets/Samples/ARCore Extensions/1.40.0/Geospatial Sample/Scenes の中に「Geospatial」というシーンが入っています。
ダブルクリックして、このシーンを表示させてください。
Hierarchyビューを見ると、GeospatialControllerというオブジェクトが見つかります。
このアプリの機能を調整するには、この部分を色々と変更することになるのですが、今回は初期状態のままでビルドします。

FileメニューからBuild Settingsを開きます。
[Add Open Scenes]ボタンをクリックすると、先ほど開いていたGeospatialシーンが追加されます。
アプリ内でデバッグ情報を見るために、Development Buildにチェックを入れておきます。
[Build]ボタンでビルドします。

アプリの実行

apkをAndroidへインストールして起動します。
初回のみ次の画面が表示されますので、[Get Started]をタップして先に進みます。

アプリが正常に開始されると、詳細な位置情報が画面に表示されます。
この写真は弊社の前で撮影しているので、最初の行のLatitude / Longitude(経度/緯度)は弊社の位置を示しています。

位置情報の取得が安定すると、画面右下に「ANCHOR SETTING」というテキストが表示されます。
この状態で画面をタップすると、任意の場所にアンカーを表示させることができます😉

タップした座標にアンカーが出現します

以前の記事で、タップした場所に3Dオブジェクトを表示させるアプリを作ったことがありました。

このときは「認識された平面」の上にオブジェクトを生成していましたが、今回のアプリではタップされた位置から経度・緯度を算出し、その座標にオブジェクトを生成しています。
一見すると挙動は似ていますが、内部ではかなり異なる処理が実行されています🙂

まとめ

今回のアプリの処理を改造すると、指定した経度・緯度に任意のオブジェクトを出現させることもできます。
道案内の看板や矢印を空間内に出現させたり、ある建物の前にゲームのチェックポイントを設けたりもできそうです。
次回はそんな「位置情報を活かしたAR」のサンプルを作ってみようと思います😄

私たちは、お客様のご要望にあわせて様々なVR、ARアプリを制作いたします。
ご質問やご要望は、<お問い合わせページ>よりお送りください。


この記事が気に入ったらサポートをしてみませんか?