じゅころぐAR

AR/VRメインのブログ。時々ドローン。

ARCore v1.2でアップデートされた機能をさわってみた

Google I/O 2018の開催に合わせて、ARCoreがv1.2.0になりました。

内容的に注目すべき点が多いアップデートなので、追加された機能について調べていきます。
開発環境は、Unity前提になります。

ARCore1.2で追加された機能

Vertical plane detection

垂直面(壁など)の検知です。 ARKit1.5で既に提供されていたので、今回のアップデートで追従した形。
これは流石に対応してくるかなと思ってました。

実際に動かした感じでは、ARKitと同程度の精度に感じました。

  • ARCore 1.2
  • ARKit 1.5

ARCoreとARKit共通の特徴として、カメラベースなので暗いところでは平面が取れません。
また、無地の壁やカーテン、光が反射する面なども取りにくいです。
凹凸のある面の検知は結構アバウトに平面と検知します。

Augumented Image API

予めアプリに登録しておいた画像を検知することでAnchorを配置し、ARのオブジェクトを重ねることができます。

↓犬の画像がマーカーの役割でARの額縁がぴったり表示されるというサンプルアプリ

アプリに検知させたい画像はUnityエディタで追加できます。

f:id:jyuko49:20180509232059p:plain

実際に使ったことはないのですが、ARKit1.5で追加されていた2D Imagesがこの機能に相当するので、こちらもARCore v1.2で追従した形になるようです。

ARKit 1.5 can detect walls and identify 2D images such as posters, signs & artwork

用途としては、QRコードリーダーみたいなアプリを配布して、広告や展示で使うイメージでしょうか。検知時にAnchorが取れるので、マーカー検知でよくある空間共有のための位置合わせにも使える気がします。

Cloud Anchors API

今回の目玉機能とも言える複数デバイス間での空間共有機能です。
この機能のサンプルアプリはiOS/Androidを問わず共有ができる作りになっています。

チュートリアルを読むと、通信部分はUnity標準のNetworking APIを使っているようです。

Unity - Manual: Multiplayer Overview

Anchorの共有はGoogleのサーバを介しているとのことで、GCPGoogle Cloud Platform)のAPIキーが必要になります。

GCPのアカウントは既に持っていたので、新規プロジェクトのCloud Anchors APIを有効にして、すぐにAPIキーは発行できました。 f:id:jyuko49:20180510001116p:plain

発行したAPIキーは"Project Setting"で設定します。 f:id:jyuko49:20180510005520p:plain

f:id:jyuko49:20180510005537p:plain

iOSでビルドする場合は、ARKit Unity Pluginが必要なので、別途インポートします。アプリ自体の変更は不要で、プラットフォームをiOSに切り替えるてBuild Settingsを行えばOKです。

とりあえず、AndroidiOSで動かしてみました。

一方を"Host"にして、適当にオブジェクトを置きます。

共有するデバイス"Resolve"でHostで作ったRoomのナンバーとIPアドレスを入れます。
接続に成功すると、Hostで配置したオブジェクトが表示されていました。

サンプルを少し動かしただけなので、反映のリアルタイム性や接続が切れた際の挙動などは確認できていません。
この機能に関しては、利用する前により深い調査が必要そうです。

機能以外のアップデート

サポート端末の追加

v1.1からさらにサポート端末が増えていました。
プレビュー版の時点では3機種のみで、v1.0のリリース時も5機種くらいしかなかったことを考えると、v1.1,1.2でかなり増えましたね。

Supported Devices  |  ARCore  |  Google Developers

目立つところでいうとXperiaがサポート端末に入っています。
iPhone人気や海外メーカーに押されていろいろ厳しいようですが、国産メーカーとして人気のブランドでもあるので、がんばって欲しいところです。

以前からの傾向として、Android 7.0以上がARCoreの最低要件という点は変わりないため、Android 7.0のアップデートがない端末はサポートが期待できないと思います。

iOS(ARKit)との共存

ARCoreのCloud Anchorsのサンプルアプリは、ARKitを使うことでiOSでも動かせるようになっています。

Quickstart for iOS  |  ARCore  |  Google Developers

この対応は完全に予想外でしたが、開発者としてはありがたいですね。

所感

昨年はGoogle I/Oで色々発表した後にTangoが終了したりして、あまり期待しすぎないようにしていたのですが、今回のアップデートはかなり良いと思います。
既にARCore v1.2がリリースされているので、やるやる詐欺になる不安もないですしね。

ポイントとしては、

  • Imageの検知、垂直面検知など基本的な機能はARKit1.5に追従した
  • ARCoreだけでiOS/Android両対応でマルチプレイのARコンテンツが作れるようになった

という2点です。

ARCoreはARKitに比べて機能の少なさと対応デバイスの少なさがネックでしたが、機能面はほぼ追いつきましたし、デバイスについてはARKitとの共存戦略でiOSバイスもサポート範囲に含めてきました。
Cloud Anchorを他社に先んじてリリースしたことで、iOSユーザも含めてプラットフォームを握っておこうという意図がありそうです。

これを受けて、6月のWWDCAppleが何を発表するのかも楽しみになってきました。

オマケ(VPS

内部でARCoreを使っているであろう"Google MapのAR機能"も近々リリースされます。

www.rbbtoday.com

上記の記事をよく読むと、VPS(Visual Position System)という単語が!
VPSといえば、昨年のGoogle I/Oで発表され、Tango終了とともに消息を絶ったと思われていたGPSが使えない屋内で位置を特定する仕組み

グーグル、ARを使った最新技術「VPS」発表 屋内空間を把握しリアルタイムにガイドを表示 | Mogura VR - 国内外のVR/AR/MR最新情報

ARCoreで取得できるPoint Cloudを見て、TangoじゃなくてもエリアラーニングやVPSいけるのでは・・・と思っていたので、Google Mapでどう実装されているのか興味はあります。