shuhelohelo’s blog

Xamarin.Forms多めです.

Xamarin.AndroidでARCoreのサンプルを動かす

環境

  • Windows10 Pro 1903
  • Visual Studio 2019
  • Visual Studio 2019にXamarin開発ワークロードを追加済み
  • ARCore対応端末:Pixel 3a

ソースコードを入手

ARCoreのサンプルをGitHubからcloneします。

サンプルのソースコードはこちら。

github.com

必要なのはこのARCoreフォルダ以下だけなので、以下の記事を参考にしてsvnコマンドでダウンロードしてください。 masterブランチのARCoreフォルダです。

shuhelohelo.hatenablog.com

サンプルコードをVisual Studioで開く

ダウンロードしたフォルダ内にあるARCore.slnファイルをVisual Studioで開きます。

ダブルクリックするだけです。

この時点ではまだビルドが通らない状態です。

必要なファイルをダウンロード

実はこのプロジェクトは、特定のファイルについてはビルド時に指定したバージョンをダウンロードするようになっているため、必要なファイルが存在しません。

そのファイルとは以下の2つです。

  • arcore.aar
  • obj.jar

ですので、ビルドするためにはこの2つのファイルをダウンロードし、所定のフォルダに保存しておく必要があります。

不足ファイルのダウンロード

GitHubからダウンロードしたARCoreフォルダ内にbuild.cakeというファイルがあります。 ビルドのための設定がここに書かれています。

これを見てみると、まず、8~10行目に2つのファイルのダウンロード先が書かれています。

それぞれ、バージョン1.9とバージョン0.3のファイルのURLが指定されています。

var AAR_VERSION = "1.9.0";
var AAR_URL = string.Format("https://dl.google.com/dl/android/maven2/com/google/ar/core/{0}/core-{0}.aar", AAR_VERSION);
var OBJ_VERSION = "0.3.0";
var OBJ_URL = string.Format("https://oss.sonatype.org/content/repositories/releases/de/javagl/obj/{0}/obj-{0}.jar", OBJ_VERSION);

{0}の部分にそれぞれのファイルのバージョンが入ります。

つまりは以下のURLを表しています。

https://dl.google.com/dl/android/maven2/com/google/ar/core/1.9.0/core-1.9.0.aar
https://oss.sonatype.org/content/repositories/releases/de/javagl/obj/0.3.0/obj-0.3.0.jar

ブラウザに上記のURLを入力して、ファイルをダウンロードします。

ダウンロードしたファイルを配置

次にbuild.cakeファイルの32~42行目には、このbuild.cakeファイルと同じフォルダにexternalsフォルダを作成し、その中に上記の2つのファイルをダウンロードしてそれぞれarcore.aarobj.jarというファイル名で保存するように指定されています。

 var AAR_FILE = "./externals/arcore.aar";
    var OBJ_JAR_FILE = "./externals/obj.jar";

    if (!DirectoryExists ("./externals/"))
        CreateDirectory ("./externals");

    if (!FileExists (AAR_FILE))
        DownloadFile (AAR_URL, AAR_FILE);

    if (!FileExists (OBJ_JAR_FILE))
        DownloadFile (OBJ_URL, OBJ_JAR_FILE);

ということで、build.cakeと同じフォルダにexternalsフォルダを作成し、その中に先程ダウンロードした2つのファイルをそれぞれarcore.aarobj.jarとリネームして保存します。

ARCore
├─externals
       ├─arcore.aar
       └─obj.jar

これでビルドが通ります。

実行

実機をつないで配置すると、アプリが起動します。

起動するとカメラからの映像がディスプレイに表示され、画面下には「searching for surface..」と表示されます。

しばらく床などの平らな面を移していると、下のスクリーンショットのように床の一部に光る網目が表示されます。

f:id:shuhelohelo:20190707150245j:plain

これがアプリによって認識された平面で、このエリアをタップすると、ドロイドくんが配置されます。

f:id:shuhelohelo:20190707150320j:plain

後ろにも回り込めます。

f:id:shuhelohelo:20190707150358j:plain

おまけ

Visual Studioに実機を接続して、認識させるには。

ソリューション構成マネージャーで、プロジェクトが配置用に選択されていることを確認してください。

www.lisz-works.com

うーん、実機つないでいるけれど表示されないな。 f:id:shuhelohelo:20190705005912p:plain

端末のほうでデバッグモードにしなきゃだった!

でた。

f:id:shuhelohelo:20190705010348p:plain