ARCore Geospatial API Terrain anchors(地形アンカー)のサンプルを見る
概要
2022/08/19 に ARCore Geospatial API の Terrain anchors(地形アンカー)が公開されました。
この Terrain anchors によって、今まではアンカーを作成する時に高さ情報が必要でしたが、高さ情報が必要なくなりました。高さは Terrain anchors の API を使用すると、緯度/経度から高さを自動的に入ります。
本記事ではこの Terrain anchors のサンプルを見てみようと思います。
実際に動かしたところ
Geospatial API とは、サンプルの環境構築方法
Unity で環境構築する方法が記事にありますので、こちらを参考にしてください。
こちらと同じ方法で、Terrain anchors の環境構築が可能です。
環境
Unity 2021.3.4f1
AR Fundation 4.2.3
ARCore XR Plugin 4.2.3
ARKit XR Plugin 4.2.3
ARCore Extensions 1.33.0
ドキュメント
公式ドキュメント
GitHub Release
ARCore Extensions for AR Foundation v1.33.0
Terrain anchors の API
ResolveAnchorOnTerrain
Terrain anchorsの使い方
GeospatialController.cs の PlaceGeospatialAnchor() で、Terrain anchors を使用しています。
ここ以外は他と変更なく Terrain anchors を利用できます。つまりAnchorManager.AddAnchor
をAnchorManager.ResolveAnchorOnTerrain
に変更するだけです。
private ARGeospatialAnchor PlaceGeospatialAnchor(
GeospatialAnchorHistory history, bool terrain = false)
{
Quaternion quaternion =
Quaternion.AngleAxis(180f - (float)history.Heading, Vector3.up);
var anchor = terrain ?
AnchorManager.ResolveAnchorOnTerrain(
history.Latitude, history.Longitude, 0, quaternion) :
AnchorManager.AddAnchor(
history.Latitude, history.Longitude, history.Altitude, quaternion);
if (anchor != null)
{
GameObject anchorGO = terrain ?
Instantiate(TerrainPrefab, anchor.transform) :
Instantiate(GeospatialPrefab, anchor.transform);
anchor.gameObject.SetActive(!terrain);
_anchorObjects.Add(anchor.gameObject);
}
return anchor;
}
実際には、AnchorManager.ResolveAnchorOnTerrain(history.Latitude, history.Longitude, 0, quaternion)
の部分で、緯度/経度を引数に渡すと緯度/経度に応じた高さが設定されたアンカーを作成することができます。
以前の API では、AnchorManager.AddAnchor(history.Latitude, history.Longitude, history.Altitude, quaternion);
のようにAltitude
を指定する必要がありましたが、ResolveAnchorOnTerrain
にはありません。
代わりにあるのはaltitudeAboveTerrain
で、緯度/経度に応じた高さからの相対値を指定します。地面/床より 1m 高い位置にアンカーを設置したい場合は 1 を指定します。サンプルは 0 ですので地面/床の高さにアンカーが設置されます。
サンプルアプリの動作
実際に動かすと下図のような画面が表示されます。
SET TERRAIN ANCHORS
をタップすると、Terrain anchors を作成できます。SET ANCHOR
をタップすると、今までのアンカー(スマホの高さ)を作成できます。
まとめ
- 国土地理院などから高さを取得する必要が無くなったのでかなり実装は楽になります。
- 今までの実装とほとんど変更なく Terrain anchors を利用できるのでかなり移行も楽です。
Discussion