うさがにっき

読書感想文とプログラムのこと書いてきます

Android EmulatorでARCoreを動かしてみた

概要

  • ARCoreが1.0になってEmulatorで動くようになったので試してみた
  • Emulatorなので以下のような様々な制約があるが、とりあえず試してみるには良いがこれだけで開発は無理
    • AndroidStudio(AndroidNative)で動作する、Unityでは無理(Unrealは試してない)
    • PCカメラを使った平面認識は無理(特徴点検出はできた)
    • Emulatorに用意されているvirtualSceneであれば平面認識まで可能(UnityでのTangoのデバッグ時に出てくる部屋みたいなやつ)

詳細

開発環境

  • AndroidStudio3.1(2018/2/27時点でBeta)
    • Emulatorなど全部入っているのでとりあえずこれ落としておけばOK
    • 実はARCoreを動かすだけなら3.0以上で良いのだがEmulatorを使う場合は3.1が必要

開発環境構築

AndroidStudio 3.1(beta)のダウンロード

Get the Android Studio Preview | Android Studio

からダウンロードしたいのだが日本語だと3.1がなぜか表示されないので言語を英語にする
ページの一番下で言語を変更、日本語からEnglishに

f:id:tiro105:20180227161601p:plain:w450

すると以下の画面が表示されるので3.1をDL

f:id:tiro105:20180227161657p:plain:w450

インストール

  • ダウンロードしたzipを解凍し、良き場所に配置して起動

サンプルプロジェクトダウンロード, import

  • ARCore SDKをDL
    github.com
  • File > Openから/samples/hello_ar_javaを開く
    f:id:tiro105:20180227163919p:plain:w450

  • ビルドするときにSDK Managerから足りないものあれば指摘されるので良きようにDL、もしわからなければこちらを参考に
    多分7.0が入ってなければDL(Emulator使うなら8.1も必要だけど後述)、最新のSDKにアップデートなどが走る
    IDE および SDK ツールの更新 | Android Studio

Emulator環境構築

  • サンプルプロジェクトを動かすEmulator環境を構築する、動作対象端末を持ってる人は端末使ったほうが早いのでそちら推奨

必要なものDL

  • AndroidStudioのメニューからTools > SDK Manager
  • SDK Platformsタブで右下の「Show Package Details」にチェック、Android8.1(Oreo)のGoogle APIs Intel x86 Atom System Image (Level 27, Version 4).を選択、OKでインストール
    f:id:tiro105:20180227172927p:plain:w450

  • SDK ToolsタブからAndroid Emulator (Version 27.1.10).を選択、ダウンロード
    f:id:tiro105:20180227173134p:plain:w450

EmulatorとなるVirtual Device作成

  • AndroidStudioのメニューからTools > AVD Manager
  • 左下のCreate Virtual Device
    f:id:tiro105:20180227173736p:plain:w450

  • Pixel or Pixel2選択
    f:id:tiro105:20180227173801p:plain:w450

  • OSはOreo: API Level 27: x86: Android 8.1 (Google APIs)
    f:id:tiro105:20180227173830p:plain:w450

  • Show Advanced SettingsからCamera BackをVirtualSceneに設定(WebcamにしたらPCのカメラが使える、PCカメラに設定した場合私の環境だと特徴点検出はできたが平面検出はできなかった)
    f:id:tiro105:20180227173849p:plain:w450
    f:id:tiro105:20180227173859p:plain:w450

  • 私の環境だけなのかわからないのだが、$ANDROID_SDK_ROOTを設定していないとEmulatorが起動しなかった、必要な場合は以下を参照 stackoverflow.com

Emulatorで実行

  • 作成したEmulatorを指定してimportしたプロジェクト実行
    f:id:tiro105:20180227174852p:plain:w450

  • こんな感じで仮想空間が広がる
    f:id:tiro105:20180227175213p:plain

  • 最初に操作方法が出るが、Alt押しながらマウスとかキーボードさわれば視点の回転や移動ができる、詳しくは以下を参照
    Run AR Apps in Android Emulator  |  ARCore  |  Google Developers
    Control the AR Simulation参照

感想

  • 今ARCoreを動かせる端末が少ないのでとりあえず動かすには良い
  • AndroidSDKとAndroidIDEをAndroidStudioとして一括で扱うのは便利な面もあり、Emulator動かすだけなのに新しいバージョンのAndroidStudio必要なのが不思議だったりした(やってないけどSDK Managerから必要なEmulatorだけDLすれば3.0系でも動くのか?)
  • Emulator起動してUnityから繋げばUnityでも使えるんじゃね?と思ったが実行すると「DllNotFoundException: arcore_unity_api」となった、近いうちに対応してくれると嬉しい
  • たまにカメラ権限を与えるにもかかわらずカメラが使えないよエラー(ログ取り忘れた)が帰ってくるがエミュレーターを再起動すれば正常動作する、再起動はエミュレータに表示されてる電源ボタン長押し

参考