ARCore Streetscape Geometry APIとGeospatial APIを試してみた

ARCoreのStreetscapeGeometry APとGeosptatialAPIを試した感想について書いていきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4019/7c58b426-a154-55e7-7af5-cedffe79ed04.png)

# Geospatial APIとは
GoogleがGoogle I/O 2022で発表したVPS（Visual Positioning Service/System）です。VPSは、カメラ映像とスキャン済みの空間情報を照合して、仮想と現実の空間を位置合わせする技術です。

詳細はこちら
- [ARCore Geospatial APIとPLATEAUを使って建物に3D都市モデルのワイヤーフレームを重ねてみた](https://medium.com/tichise/arcore-geospatial-api%E3%81%A8plateau%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E5%BB%BA%E7%89%A9%E3%81%AB3d%E9%83%BD%E5%B8%82%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AE%E3%83%AF%E3%82%A4%E3%83%A4%E3%83%BC%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%82%92%E9%87%8D%E3%81%AD%E3%81%A6%E3%81%BF%E3%81%9F-69ecfd0b553c)
- [ARISE Hackathon with ARCore Geospatial APIに参加した](https://medium.com/tichise/arise-hackathon-with-arcore-geospatial-api%E3%81%AB%E5%8F%82%E5%8A%A0%E3%81%97%E3%81%9F-9461ceb516bc)

Geospatial APIを使うと、こんなものが作れます。
<iframe width="560" height="315" src="https://www.youtube.com/embed/Tb2qlddVK1g" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube.com/embed/j018s2p_2tI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube.com/embed/qQPnf2ktvLI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube.com/embed/FoRS8Wfwntw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube.com/embed/SRBSL8GHn9o" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>


<iframe width="560" height="315" src="https://www.youtube.com/embed/tAzjqw3i80o" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube.com/embed/G7xw76i2rcE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube.com/embed/dAFxJ8MZSYI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube.com/embed/X5UtE_8sKyY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube.com/embed/jr7ID5qaauo" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube.com/embed/0iZUUgVjqYI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube.com/embed/kHDpf2qpHZo" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube.com/embed/BtUDq75CZJ4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube.com/embed/wwsbvU53GbI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube.com/embed/fLpS3cHnXL8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

# Streetscape Geometry APIとは
- [Streetscape Geometry API](https://developers.google.com/ar/develop/java/geospatial/streetscape-geometry)を使用すると、ユーザーの周りの建物のジオメトリを取得できます。
- 2023年公開。
- 半径100メートル以内に3Dメッシュを取得できます。
- Streetscape Geometry API は Android と iOS で利用できます。

## StreetscapeGeometry APIの動作例
StreetscapeGeometry APIを使うとこんなものが作れます。
<iframe width="560" height="315" src="https://www.youtube.com/embed/_QnwOI-WvB4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube.com/embed/jVvSwGdgAPQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube.com/embed/Fu3GP7FIbZc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

# 同じように見えるけど何が違うのか？
## Geospatial API
- VPSなので、正確な現在位置の情報を取得することだけができる。
- 建築物や地形のジオメトリを出現させる場合は、別サービスが提供する建築モデル（国土交通省のPLATEAUなど）と組み合わせる必要がある。
- 建築モデルは位置合わせをして出現させる必要がある。とてもめんどくさい。
- LOD1やLOD2の建築モデルを個別にダウンロードして、位置合わせなどをする必要がある。

## Streetscape Geometry API
- 正確な現在位置を取得し、さらに建築モデルと地形モデルを選択して取得できる。
- APIだけで、半径100mの建築物や地形モデルをバックグラウンドで自動取得できる。
- LOD 2 (一部LOD1)の忠実度の高い屋根形状を反映したジオメトリが取れる。

# まとめ
Streetscape Geometry APIを使うことで、現実建築物の上にさまざまな演出を加えることができます。とても便利なので使っていきましょう。

この記事を読んで、Streetscape Geometryについて気になった方は、ARCore Streetscape Geometry APIを簡単に呼び出せるパッケージライブラリを公開したので使ってみてください。
[tichise/streetscape-geometry: A library for calling the ARCore Streetscape Geometry API.](https://github.com/tichise/streetscape-geometry)