はじめまして、ヤプリでAndroidアプリ開発を担当しております、林です。
先日開催されたGoogle I / O 2018でGoogleの拡張現実(AR)プラットフォーム、「ARCore」のアップデートが発表されました。今回のv1.2.0へのバージョンアップでは、以下の新機能が追加されました。
- Vertical plane detection
垂直平面の検出ができるようになりました。 - Augmented Images API
画像を検出することができるようになりました。 - Cloud Anchors API
オブジェクトを複数デバイスで共有できるようになりました。作成した時の情報ではなく、加えられた変更やステータスも共有できます。iOSとAndroidで共有することも可能です。 - Sceneform
OpenGLのような3Dの知識がなくてもARアプリの開発が行えるような機能です。
今回は、新機能のサンプルが公開されていますので、こちらを動かしてみました!
公式サイト:
https://developers.google.com/ar/develop/java/quickstart
サンプル:
https://github.com/google-ar/arcore-android-sdk
https://github.com/google-ar/sceneform-android-sdk
環境は、以下で実行しています。
Android Studio 3.1.2
Galaxy S8 (Android 8.0.0)
iOS 6s Plus (iOS 11.3.1)
Vertical plane detection(垂直平面検出)
平面を検出して、タップすることでドロイド君を表示できます。水平面と垂直平面を同時に検出して両方にドロイド君を表示させてみました。
垂直平面を取れることで、より幅広い表現ができそうです。
Augmented Images API(画像検出)
画像を読み込んで、その画像に対してオブジェクトを配置できます。サンプルは、以下の画像を読み込んで四隅に枠が表示されます。
(対象画像)
(読み込み画面)
Cloud Anchors APIのように変更の共有できませんが、複数端末で同じ見た目のオブジェクトを同じ位置に表示することができますね。
Cloud Anchors API(オブジェクトの共有)
テーブルの上にドロイド君を表示し、複数デバイスで共有してみます。今回はせっかくなので、AndroidとiOSでオブジェクトを共有してみました。
Android 1でHOST(位置をアップロード)し、Android 2とiOSでRESOLVE(位置の取得)をして表示します。(Androidのクイックスタートページには、FireBaseの「Realtime Database」関連の説明がないのですが、設定しないと動かないので注意です!なぜかiOS側には載ってます。)
Android 1
検知した平面をタップしてドロイド君を表示しました。このドロイド君を他のデバイスで共有します。
Android 2
HOSTしたデバイスと別のAndroidでドロイド君が現れました。何度か試したのですが、RESOLVEをする時の方向がHOSTした端末と違うと、表示されるオブジェクトの位置や向きが変わってしまうみたいです。同じ方向から行えば、ほぼ同じオブジェクトが表示されます。
iOS
光沢がないので違うオブジェクトに見えますが、iOSでもドロイド君が表示できました!同じ仕組みでOS間共有できるのはいいですね。サンプルは、一度表示したオブジェクトの共有でしたが、物体の位置の更新やステータスなどを共有できるみたいですので、対戦ゲームなどで利用できます。
Sceneform
サンプルは2つあります。
1つ目は、平面にドロイド君を表示し、回転移動拡大縮小できるというものです。コードを軽く見たのですが、100行弱書くだけこれが実現できます。制限はありそうですが、ありがたい機能ですね。
2つ目は、Sceneformを使って太陽系を表現するものです。コントローラーで速度の変更もできます。こちらは実行のみしてみました。
まとめ
検知できるものが増え、オブジェクトを共有できるようになり、より現実にオブジェクトが存在しているような表現ができるようになりました。さらに、補助機能が増えたことでゲームエンジニアでなくてもARアプリの開発がしやすくなったのは嬉しいですね。
今回はサンプルを動かしただけですので、次はコードを触ってみたいと思います!
また株式会社ヤプリでは、下記ポジションをはじめとする20以上の職種を積極募集中です!ぜひお気軽にオフィスへ遊びに来てください。