Google I/O 2018の開催に合わせて、ARCoreがv1.2.0になりました。
内容的に注目すべき点が多いアップデートなので、追加された機能について調べていきます。
開発環境は、Unity前提になります。
ARCore1.2で追加された機能
Vertical plane detection
垂直面(壁など)の検知です。 ARKit1.5で既に提供されていたので、今回のアップデートで追従した形。
これは流石に対応してくるかなと思ってました。
実際に動かした感じでは、ARKitと同程度の精度に感じました。
- ARCore 1.2
暗くてわかりにくいけど、平面検知はARKit1.5と同等くらいの精度ですかね。#ARCore pic.twitter.com/HZaAWvwLFQ
— jyuko (@jyuko49) 2018年5月9日
- ARKit 1.5
ARKitとの比較用。 pic.twitter.com/IPYjuobkm3
— jyuko (@jyuko49) 2018年5月9日
ARCoreとARKit共通の特徴として、カメラベースなので暗いところでは平面が取れません。
また、無地の壁やカーテン、光が反射する面なども取りにくいです。
凹凸のある面の検知は結構アバウトに平面と検知します。
Augumented Image API
予めアプリに登録しておいた画像を検知することでAnchorを配置し、ARのオブジェクトを重ねることができます。
↓犬の画像がマーカーの役割でARの額縁がぴったり表示されるというサンプルアプリ
Augmented Imageはマーカーじゃなくて普通の画像を検知できるんですね。
— jyuko (@jyuko49) 2018年5月9日
これはこれで使いやすそう。#ARCore pic.twitter.com/AIxCJOfnSq
アプリに検知させたい画像はUnityエディタで追加できます。
実際に使ったことはないのですが、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のサーバを介しているとのことで、GCP(Google Cloud Platform)のAPIキーが必要になります。
GCPのアカウントは既に持っていたので、新規プロジェクトのCloud Anchors APIを有効にして、すぐにAPIキーは発行できました。
発行したAPIキーは"Project Setting"で設定します。
iOSでビルドする場合は、ARKit Unity Pluginが必要なので、別途インポートします。アプリ自体の変更は不要で、プラットフォームをiOSに切り替えるてBuild Settingsを行えばOKです。
とりあえず、Android ⇔ iOSで動かしてみました。
一方を"Host"にして、適当にオブジェクトを置きます。
Android7.0のZenfone ARをHostにしてAndy君を置いた。 pic.twitter.com/GrnJz1P2Zq
— jyuko (@jyuko49) 2018年5月9日
共有するデバイスは"Resolve"でHostで作ったRoomのナンバーとIPアドレスを入れます。
接続に成功すると、Hostで配置したオブジェクトが表示されていました。
iOS11.3のiPhone SEでResolveするとAndy君がいた。 pic.twitter.com/8DWmMTkaLx
— jyuko (@jyuko49) 2018年5月9日
サンプルを少し動かしただけなので、反映のリアルタイム性や接続が切れた際の挙動などは確認できていません。
この機能に関しては、利用する前により深い調査が必要そうです。
機能以外のアップデート
サポート端末の追加
v1.1からさらにサポート端末が増えていました。
プレビュー版の時点では3機種のみで、v1.0のリリース時も5機種くらいしかなかったことを考えると、v1.1,1.2でかなり増えましたね。
ARCore supported devices | Google Developers
目立つところでいうとXperiaがサポート端末に入っています。
iPhone人気や海外メーカーに押されていろいろ厳しいようですが、国産メーカーとして人気のブランドでもあるので、がんばって欲しいところです。
以前からの傾向として、Android 7.0以上がARCoreの最低要件という点は変わりないため、Android 7.0のアップデートがない端末はサポートが期待できないと思います。
iOS(ARKit)との共存
ARCoreのCloud Anchorsのサンプルアプリは、ARKitを使うことでiOSでも動かせるようになっています。
https://developers.google.com/ar/develop/unity/quickstart-ios
この対応は完全に予想外でしたが、開発者としてはありがたいですね。
所感
昨年はGoogle I/Oで色々発表した後にTangoが終了したりして、あまり期待しすぎないようにしていたのですが、今回のアップデートはかなり良いと思います。
既にARCore v1.2がリリースされているので、やるやる詐欺になる不安もないですしね。
ポイントとしては、
- Imageの検知、垂直面検知など基本的な機能はARKit1.5に追従した
- ARCoreだけでiOS/Android両対応でマルチプレイのARコンテンツが作れるようになった
という2点です。
ARCoreはARKitに比べて機能の少なさと対応デバイスの少なさがネックでしたが、機能面はほぼ追いつきましたし、デバイスについてはARKitとの共存戦略でiOSデバイスもサポート範囲に含めてきました。
Cloud Anchorを他社に先んじてリリースしたことで、iOSユーザも含めてプラットフォームを握っておこうという意図がありそうです。
これを受けて、6月のWWDCでAppleが何を発表するのかも楽しみになってきました。
オマケ(VPS)
内部でARCoreを使っているであろう"Google MapのAR機能"も近々リリースされます。
上記の記事をよく読むと、VPS(Visual Position System)という単語が!
VPSといえば、昨年のGoogle I/Oで発表され、Tango終了とともに消息を絶ったと思われていたGPSが使えない屋内で位置を特定する仕組み。
グーグル、ARを使った最新技術「VPS」発表 屋内空間を把握しリアルタイムにガイドを表示 | Mogura VR
ARCoreで取得できるPoint Cloudを見て、TangoじゃなくてもエリアラーニングやVPSいけるのでは・・・と思っていたので、Google Mapでどう実装されているのか興味はあります。