ARCore調べてみた

2020.06.22

Lab研究員 中木

もくじ

  1. 1.◆XR
  2. 2.◆AR用フレームワーク
  3. 3.◆ARCoreとは
  4. 4.◆クイックスタートを試してみた

◆XR

さて、世の中には「ほにゃららR」という言葉が沢山登場しています。

ここでの「R」は「Reality」です。

  • VR(Virtual Reality) : 仮想現実
  • AR(Augmented Reality) : 拡張現実
  • MR(Mixed Reality) : 複合現実
  • SR(Substitutional Reality) : 代替現実
  • XR(X Reality) : クロスリアリティ
  • CR(Cinematic Reality)
  • RR(Real Reality)

・・・違い分かります??

VR・AR・MRに加えて、これらの技術を総称する「XR」が登場したようです。
それぞれの技術の違いを図にまとめると

Lab_202006_01.png

こんな感じです。

◆AR用フレームワーク

では、ARエッジデバイス(Android端末)で実装するにはどうすれば良いのでしょう?
ということでAR用のフレームワークを調べてみました。

Lab_202006_02.png

なんと、17種類も見つかりました。
この中で、Androidで使えてリリース後も無料で使用できるのは、ARCoreだけですね。
ということで、ARCoreについて調べました。

◆ARCoreとは

Lab_202006_03.png

Googleが提供するARプラットフォームです。
赤外線奥行きセンサーの様な特殊なデバイスを必要とせずに、スマホの内蔵カメラやモーションセンサーだけでARコンテンツを構築することが出来ます。

開発環境としては下記に対応しています。

  • Androidネイティブ(Java)
  • Unity
  • Unreal
  • iOSネイティブ(Objective-C)
    UnityでもiOSでも使えるというのは嬉しいですね。

機能としては、下記のようなものがあります。

モーショントラッキング
 カメラの画像を分析して、物体の表面とする場所にマーキングし、座標を使って3D空間上に立体的な像を検出することが出来ます。

水平面の検出(認識)
 カメラ映像とIMUセンサーを使用して水平面を検出し、自由に物やキャラクターなどを配置することが出来ます。

Light estimation(光源の推測)
 カメラによって全体の明るさを数値で検出することが出来る機能です。

Augmented Images
 現実に有る物体に合わせてARオブジェクトを動かすことができる機能です。
 マーキングした物体が動いていれば、それに追随してARオブジェクトを動かすことができます。

Augmented Faces API
 カメラで捉えた顔の凹凸を読み取ることができます。
 スノーっぽいことが出来そうですね。

Environmental HDR
 機械学習によって、陰影や反射をARオブジェクトに反映する機能です。
 現実の物体とARオブジェクトを違和感なく並べることが可能です。

Scene Viewer
 ARCore対応のAndroid端末上のブラウザから、ARで現実世界上に3Dオブジェクトを表示することが出来る機能です。
 ウェブサイトにARコンテンツを追加することが出来ます。

Sceneform
 アニメーション機能によってARオブジェクトをジャンプさせたり、スピン、移動することなどができるものです。
 躍動感のあるARコンテンツを実現できいるようになります。

◆クイックスタートを試してみた

では早速、動かしてみましょう!!

というわけで、公式の「Quickstart for Android」を試してみました。
https://developers.google.com/ar/develop/java/quickstart

以下、Quickstart for Androidを順番に読み進めています。

まずはAndroid Studioのインストール

version 3.1以降で、Android SDK Platform version 7.0(API Level 24)以上をインストールしろとのこと。
・・・良くわからないけど、とりあえず最新版インストールしておけば問題ないでしょう。

Android Studioの公式ページからインストーラをダウンロードし、インストールします。
https://developer.android.com/studio/index.html
※ Android Studioは、EclipseのPleiades日本語化プラグインが使えるみたいです。

英語のインターフェイスに不安が有る方は日本語化しましょう。
https://mergedoc.osdn.jp/#pleiades.html#PLUGIN

・続いてサンプルプロジェクトを開く

githubからダウンロード

Lab_202006_04.png

samplesフォルダ内に、HelloARプロジェクトがあるので、それを開けとのこと。

Lab_202006_05.png

・・・hello_ar_java ですかね。

・次に、デバイスまたはエミュレーターの準備

https://developers.google.com/ar/discover/supported-devices
サポートされている端末 ↑ 又は Androidエミュレーターで動かせます、と。

ただし、エミュレーターで動かす場合は、Google Play Storeにサインインするか、Google Play Services for AR を手動でアップデートする必要があるとのこと。
・・・これはエミュレーターが起動してからの作業ですね。

いよいよ、サンプルの実行

Deployment targetを選んで Runボタンで実行できるとのこと。

Lab_202006_06.png

ツールバーの真ん中辺りに Runボタンありますね。
その左横のドロップダウンでターゲットを選びます。

Lab_202006_07.png

・・・はい。Android端末も接続しておらず、エミュレーターの設定もしていないため、ターゲットに選択できるアイテムがありません
→ AVDマネージャで仮想デバイスを作成します。
AVD:Android Virtual Device

Lab_202006_08.png

「仮想デバイスの作成」をクリックします。

Lab_202006_09.png

独断と偏見による推測ですが、Pixel 3 を選べば大丈夫でしょう。
先程、Google Play Storeにサインインする必要がある、と書いてあったので、「Playストア」列にマークが付いているものを選びました。

Lab_202006_10.png

これも先程 API Level 24 以上 との記述があったので、一番新しそうリソース名:Q を選択しました。

※ 初回はイメージのダウンロードが必要です。リソース名列に「Download」と書いてあるイメージは未ダウンロードです。「Download」の文字をクリックするとイメージのダウンロードが出来ます。

Lab_202006_11.png

問題なさそうなので、そのまま「完了」

Lab_202006_12.png

仮想デバイス一覧に登録されました。
AVDマネージャの画面を閉じて、Runボタン横のドロップダウンを確認します。

Lab_202006_13.png

今作った仮想デバイスが選択されていますね。
この状態でRunボタンをクリックします。

Lab_202006_14.png

Androidエミュレーターが起動し、実行したアプリも起動しました。

・・・が、Google Play Services for ARを最新にしろと出てますね。
とりあえず、「CONTINUE」をタップ。
Google Play Storeに飛ばされるのでサインイン。

Lab_202006_15.png


Google Play Services for AR のページに来ましたが、、、、あれ?
「Your device isn’t compatible with this version.」
日本語にすると「お使いのデバイスはこのバージョンと互換がありません。

・・・クイックスタートの最初の方で、「Google Play Services for AR を手動でアップデートする」との記述が有ったのを思い出したので、その方法を確認します。https://developers.google.com/ar/develop/java/emulator#update-arcore

ふむふむ。

1. GitHubのリリースページから最新の「Google_Play_Services_for_AR_1.17.0_x86_for_emulator.apk」をダウンロード
https://github.com/google-ar/arcore-android-sdk/releases

2. ダウンロードしたAPKを、起動中のエミュレーターにD&D
 すると、アプリ一覧に「Google Play Services for AR」が登場する。

Lab_202006_16.png

これでもう一度サンプルプログラムを実行

Lab_202006_17.png

起動しました!!!

画面真ん中に写っているのは、エミュレーターの操作方法の説明。
背景に写っているのは、カメラで撮影している部屋の映像です。
エミュレーターなので、部屋もバーチャルです

部屋の中を動いて、まずは平面の検出をします。

Lab_202006_18.gif

次にARオブジェクトを置きます。

Lab_202006_19.gif

少し視線を移動させてみます。

Lab_202006_20.gif

ちゃんと動いていますね。

今回は「水平面の検出(認識)」の機能使って紹介しました。
次は実機で動かしてみて、他のARCoreの機能を試してみたいと思います。

それでは、最後までお読みいただきありがとうございました。

  • LINE
  • Mail