ARCore Geospatial Creator for Unityを使ってみる
概要
Unity Editor内でGoogle Mapを見ながらGeospatialの設定が行えるARCore Geospatial Creatorがリリースされました
この機能を使うことにより、ノーコードでGeospatial APIを使ったコンテンツが作成可能になりましたGeospatial APIの基礎的な使い方はこちらの記事を参照してください
環境構築
Google Cloud Platform上でAPI KEYを取得する必要があります
↓の手順に従ってAPI KEYを取得してください
さらに今回はMap Tiles APIも有効にする必要があります
Unityのセットアップも以前と同様にGoogle ARCore Extensions for AR Foundationをインストールします
追加してCesium for Unityのインストールが必要になりました
com.cesium.unity-x.y.z.tgz
をダウンロードします
Package Managerの Add package from tarball
で先ほどダウンロードした.tgz
ファイルを指定します
Edit Project Settings->ARCore Extensions->Optional FeaturesでGeospatial
とGeospatial Creator
にチェックを入れ有効にします
Geospatial Creator
にチェックを入れたときにダイアログが出てくるのでFinishで処理を完了します
これで下準備は完了です
Editor上でGeospatial Creatorを使う
まずサンプル内のGeospatial
シーンを開きます
次に右クリックメニューのXR->AR Geospatial Creator Originを選択します
AR Geospatial Creator Origin
ができたらAdd Cesium Georeference Component
をクリックします
するとMap Tiles API KEYを入力できるフォームが出てくるので、ここに取得したMap Tiles APIのキーを入力します
入力後しばらく待つと、Scene上にマップが現れます
黄色の枠線の部分に緯度(Latitude)・経度(Longitude)・高さ(Height)を入れるとマップも変化します
デフォルトだとかなり高い位置に設定されているので、Heightは20~50くらいに設定すると見やすくなります
また、LayersからUIの表示を消すとScene ViewでUIが表示されなくなるので見やすくなります
アンカーを設定する
右クリックメニューのXR->AR Geospatial Creator Anchorからアンカーを作成します
アンカーは緯度経度を指定して位置を設定することもできますし、シーン上でGameObjectを移動して位置調整することもできます
高さの設定については公式ドキュメントを参照すると
アンカーの緯度と経度を微調整するときに、近くにある場所を選択して、実行時に正しい場所にあることを確認できるようにします。地理空間クリエイター アンカーの高さを設定する場合、次の 3 つのオプションがあります。
[Manual Altitude]は、WGS84 座標系に基づいて、アンカーを特定の高さ(メートル単位)に配置します。WSG84 の高さ「0」は必ずしも海面平均を表すものではなく、GPS の高度とも一致しない可能性があるため、この方法でオブジェクトを配置するにはある程度の試行錯誤が必要になります。また、レンダリングされた 3D タイルの緯度と経度は正確ですが、3D タイルを基準として地面に配置しようとすると、高さが最大数メートルになる場合があります。
[Terrain] では、指定した緯度と経度で地面に対してアンカーが配置されます。地面レベルは Visual Positioning System によって実行時に決定されます。ARCore の Geospatial API の使用経験がない場合は、まず「Terrain」を選択することをおすすめします。アンカーは垂直方向に高い精度で地面に直接解決されるためです。[高度オフセット] フィールドを使用すると、アンカーを地面より上下に固定できます。たとえば、オフセットを「1.0」に指定すると、アンカーが地形から 1 メートル上に「浮いている」ことになります。
Rooftop では、特定の緯度と経度で、建造物の上部の高さに対するアンカーが配置されます。地形アンカーの場合と同様に、[高度オフセット] フィールドを使用して、アンカーを屋根の位置に対して上下に移動できます。
https://developers.google.com/ar/geospatialcreator/unity/quickstart?hl=ja#add_and_place_a_geospatial_creator_anchor
となっています。地表に置きたい場合はTerrain
を指定しておくのがいいでしょう
そして、アンカーの子供に表示したいオブジェクトを追加します
ここまでできたらビルドします
なお、Cubeを回転させるのに下記のコードを使用しています
using UnityEngine;
public class Rotate : MonoBehaviour
{
void Update()
{
this.transform.localRotation *= Quaternion.AngleAxis(360 * Time.deltaTime, Vector3.up);
}
}
ビルド出来たら指定した場所の近くまで行ってアプリを起動します
うまく行けば指定した位置にオブジェクトが表示されます
なおマップを表示していた>AR Geospatial Creator Anchor
はAR中は消えるようになっているようです
Discussion