環境
MacOS13.0
Unity 2021.3.16f
ARCoreExtentions 1.37.0
ARFoundantion 4.2.8
Cesium 1.3.1
はじめに
5月のGoogleIOでGeospatialAPIのアップデートが発表されました。
そのうちの一つのARCore Geospatial Creatorについて解説します。
Geospatial Creatorとは?
EditorでGoogle Earthのようなものを表示してそれを参考にGeospatialAPIのAnchorを置ける機能です。
導入方法
以下公式ドキュメントを参考に導入していきます。
必要なもの
-
GeospatialAPIのAPIキー、もしくは認証情報
- GeospatialAPIを使うために必要
-
Google Maps Tiles APIのAPIキー
- Google Earth的な表示の元データ(3DTile)を取得するためのAPIキー
-
Cesium
- Google Maps Tiles APIから取得した3DTileを表示するためのツール
- PlateauViewのモデル表示に使われている
GeospatialAPIのAPIキーの取得について
OSによって手順が異なります。
- Androidの場合
- iOSの場合
セキュリティの関係でAndroidの場合キーレス認証、iOSの場合トークン認証を推奨されますが、今回はサンプルを試したいだけなのでAPIKeyを使うことにします。
サンプルを試し終わったらAPIKeyを無効にすることをおすすめします。
APIKeyの取得は以下の記事が参考になります。
取得を終えたらどこかにメモっておきましょう。
Google Maps Tiles APIのAPIキーの取得について
- GCPのプロジェクトを作ってある状態で以下のページにアクセスします
https://console.cloud.google.com/apis/library/tile.googleapis.com?hl=ja - 有効にするをクリックし、MapTilesAPIを有効にします
- しばらくまっているとAPIキーが表示されるのでこちらもメモっておきましょう
GeospatialAPI導入手順
-
Unityのプロジェクトを作り、ARFoundationとARCoreExtensionsをパッケージマネージャーからインストールする
- 詳しくは公式ドキュメントを参考にしてください
https://developers.google.com/ar/develop/unity-arf/getting-started-extensions?hl=ja
- 詳しくは公式ドキュメントを参考にしてください
-
Cesiumをインストールする
- リリースページからtgzをダウンロードし、パッケージマネージャーからインストールする
- 横着してgiturlからインストールをするとエラーが起きるので大人しくtgzからインストールすること
以上でGeospatialAPIの導入ができました。
Geospatial Creatorの導入
先程のGeospatialというシーンの中で作業をしていきます。
- ヒエラルキーで右クリックメニューを出してから XR/ARGeospatialCreatorOriginを選択します
- するとARGeospatialCreatorOriginコンポーネントが生成されるのでAddCesiumGeoreferenceConponentを選択します
- その後APIキーを入力する場所が現れるのでメモをしておいたGoogleMapTilesAPIKeyを入力します
- 入力が終わるとどこかの山が表示されます
(緯度39.736401、経度-105.25737、高さ2250の地点らしいです。おおよそアメリカ大陸の真ん中辺り)
Geospatial Creatorの使い方
表示される場所の変え方
ARGeospatialCreatorOriginオブジェクトのCesiumGeoreferenceのOriginに緯度と経度と高さ(ここでの高さは楕円体高)を入力することによってARGeospatialCreatorOriginの原点がその地点に移動します。
基本的に、Geospatialでオブジェクトを生成したい位置の近くにOriginを持ってくることを推奨します。
あまりに離れすぎると(20kmあたり)誤差が大きくなるそうです。
楕円体高とは?
ジオイド高に標高を加えた高さです。その地点の標高とジオイド高は緯度と経度を入力すると計算できるサイトが存在するのでそちらを参考にすると良いと思います。
※出典 国土地理院
※参考
ジオイド高計算サイト
標高計算サイト
アンカーの置き方
アンカーについて
AltitudeTypeを変えることによって配置する方法を変えられます。
詳しくは公式ドキュメントにかかれていますが、基本的にはTerrainもしくはRooftopを使うのが良いと思います。
AltitudeTypeについて
-
Manual Altitude
WGS84座標系に基づいてアンカー特定の高さに配置します。
先程でてきた楕円体高の座標系であるため0mが標高0mとは限らないため試行錯誤が必要になります。 -
Terrain
指定した緯度経度に対して、地面にアンカーを配置します。
地面の高さはGeospatialAPIのTerrainAnchorを使用します。
例えば、スクランブル交差点の地面に張り付くように設置したい場合以下のようにAltitude Offsetを0にします。
この際、Editor上で地面よりも上に配置していても、AR実行時に先程設定した地面からの高さのOffsetの値が優先されます。 -
Rooftop
Terrainと同じように、指定した緯度経度で建造物の上部に対するアンカーを配置します。
まとめ
ARCore Geospatial CreatorとはGoogleEarthのような空間をUnityEditorで表示し、アンカーを置くことができる機能です。
これを使うことによって今まで3Dスキャンやグーグルマップと重ね合わせながら試行錯誤をしていたオブジェクトの配置がかなり楽になります。