UnityでiOS向けのARアプリを開発する方法 ( AR Foundation + ARKit-XR-Plugin 導入編 )


はじめに

Unity-ARKit-Plugin から AR Foundation への変遷

従来、UnityでARKitプラグインを用いた開発を行う場合、Unity Technologies Inc. が提供している 「Unity-ARKit-Plugin ( Deprecated ) 」 を Unity Assets Store からインストールすれば良かったのですが、2019年6月以降、こちらのプラグインが非推奨 ( Deprecated ) となりました。では今後、iOS ( ARKit ) 向けにARアプリケーションを開発を進めるためにはどうしたら良いのか?実は 「AR Foundation (Preview) 」「ARKit-XR-Plugin」 が Unity Package Manager にて公開されているので、この2つのパッケージをインストールすることで開発を継続することが可能です ( ARKit 3.0 対応済 )

Unityでスマホ向けARアプリケーションを開発する手法 ( Handheld )

主に、以下2種類の方法が存在します ( ※図1、赤枠で囲んだ範囲は既に廃止 )

  • AR Foundation を使って、iOS, Android 向けのアプリケーションを開発する方法
  • ARCore SDK for Unity を使って、iOS, Android 向けのアプリケーションを開発する方法

図1: Unity Handheld's AR Ecosystem より引用。

※ 上記の手法以外に MRTKv2 を使うことも可能ですが、今回は 「AR Foundation / ARKit-XR-Plugin 」 を活用して、iOS ( ARKit ) 向けのARアプリケーション開発を進めていきたいと思います。

開発環境

前提条件として、Unityの基礎知識・操作方法 を理解されている方を対象とします。

  • Surface Book 2 ( Windows 10 pro )
    • Unity 2019.1.7f1
    • AR Foundation / ARKit XR Plugin ( Unity Package Manager )
  • Mac Book Pro ( macOS Mojave )
    • XCode 10.3
  • iPhone XS ( iOS 12.3 )

※ Mac Book 上で Unity を動作させて開発を行うことも可能です。

ARFoundation / ARKit-XR-Plugin 導入編

本セクションでは、arfoundation-samples ( GitHub ) 上にあるサンプルコードを元に、 iPhone XS ( iOS ) 向けにサンプルをデプロイするまでの一連の流れをご紹介したいと思います。大まかな作業内容を以下の通りです。( ※ 各パッケージ、Unity等のバージョン違いで動作しない問題があるので注意してください。)

0. 手順 ( 概要 )

  1. GitHub 上より ソースコードを Clone する
  2. Unity プロジェクトを開き、パッケージをインストールする
  3. Unity プロジェクトのビルド設定を変更する
  4. XCode で対象プロジェクトを開き、端末にデプロイする

1. GitHub 上よりソースコードを Clone する。

Unity Techonologies Inc. が提供する arfoundation-sample を git clone します。

$ git clone https://github.com/Unity-Technologies/arfoundation-samples.git

ARKit 3.0 へのサポートについて

git clone でローカルにダウンロードされるファイルは、masterブランチに存在するソースコードです。しかし、masterブランチは既に、ARKit 3.0 に対応済みで iOS 13 beta 5 ( ※インストールには、Apple Developer Program への登録が必要 !? ) が必要になりますが、今回は対応端末が手元に無いため、ARKit 3.0 に対応する前の2.1 ブランチで検証を進めたいと思います。

// リモートブランチをチェックアウト (tag:2.1)
$ git checkout -b arkit2 origin/2.1

// ブランチが切り替わったことを確認する
$ git branch
* arkit2
  master

ローカルにディレクトリが追加されていることが確認できます。

続いて、上記ディレクトリを Unity プロジェクトで開き、サンプルシーンをビルドしてみたいと思います。

2. Unity プロジェクトを開き、パッケージをインストールする

先ほどのディレクトリを Unity プロジェクトとして開きます。

Package Manager を使って、Unity Technologies Inc. が提供する以下2つのパッケージをインストールします。

  • ARKit XR Plugin ( preview.5 - 2.1.0 )
  • AR Foundation ( preview.3 - 2.1.0 )

2-1. Unity Package Manager 使い方

[Windows] > [Package Manager] を開き、対象のパッケージを名を検索します。


対象パッケージを選択し、 [Install] ボタンを押下します。

2-2. Preview パッケージをインストールする方法

[Windows] > [Package Manager] > [Advanced] > [Show Preview Packages] を押下。
( Previw パッケージ 表示有効化 )

2-3. 「Unity-ARKit-Plugin」を試す方法 ( Deprecate )

2019.5 まで運用されていた ( ※現在は廃止 ) Unity-ARKit-Plugin を検証する方法です。2019.6.3 に Deprecated されており、今後のサポートは見込まれないので、今から開発を検討される場合は、「AR Foundation / ARKit-XR-Plugin」を活用する方向で進めるのが良いと思います。

GitBucketのコミットログを確認しても、[2019.6.3] に Deprecated の記載が追記されています。

3. Unity プロジェクトのビルド設定を変更する

ショートカット ( Ctrl + Shift + B )を使って、Build Settings を開きます。Build対象プラットフォームが「PC, Mac & Linux Standalone ( Default ) 」に設定されているので、「iOS」を選択し、「Switch Platform」ボタンを押下します。

変更完了後、左下にある「Player Settins ...」ボタンを押下し、プレイヤー設定を行います。Player Settings では、Build時に必要となるアプリケーションの設定を編集することが可能です。( アプリケーションの名前、アイコン設定、Target Device, Target SDK etc.. )

今回は変更しないでそのまま閉じます。そして、Build Settings を開き、Scenes In Build リストの任意のシーン名にチェックを入れ、「Build」ボタンを押下します。

「Build」ボタンを押下すると、アウトプット先にディレクトリの選択を求められますが、「iOS」というディレクトリを新規作成し、Buildを実行すると良いと思います。 ( ※ 2回目のビルド以降、同一フォルダを指定すると差分ビルドとなり、Build時間を短縮することが可能です。 )

4. XCode で対象プロジェクトを開き、端末にデプロイする

対象プロジェクト ( Unity-iPhone.xcodeproj ) を XCode で開き、iPhone XS にアプリケーションをデプロイします。

  1. XCode上でプロジェクトが開くと、右上の「Unity-iPhone」を押下します。
  2. Bundle Identifier はそのままだとエラーが出るので、[ 任意の値 ] へ変更しておきます。
  3. デプロイ先となる端末を Mac Book にUSB接続します。
  4. Signing > Team リストから3.で接続した端末を選択します。
  5. 右上の再生ボタンを押せば、Build&Run が実行されます。

さらに詳しい手順は、以下@ITさんの記事に詳しい内容が書かれているので、初めての方は下記をご覧ください。

信頼されていないデベロッパ

Apps Store 以外の方法でインストールしたアプリケーション ( 発行元不明 ) は、「信頼されていないデベロッパ」と表示され、アプリケーションを起動することはできません。( iPhone XS の場合 ) 設定 > 一般 > プロファイルとデバイス管理 > デベロッパAPP > デベロッパ ( Apple ID ) を信頼を選択後、アプリケーションを起動することが可能となります。

詳しくは、以下のQiita記事に丁寧に記載されているので、そちらをご参照ください。

検証編

ビルドに成功したので、iPhone XS 上でアプリケーションを実行してみます。
今回試したのは arfoundation-sample に含まれる 「SampleUXScene」 です。

Unity 公式ブログで紹介されていた「ARFoundation: Overview」という動画の中でも登場するデモの1つです。

以下、実際に起動してみたアプリケーションの様子です。


説明
図 (上) 起動直後、空間を認識している様子
図 (下) 空間認識後、球体を表示 ( 空間位置固定 )

動作しているアプリケーションの動画は、以下をご覧ください。

所感

Unity-ARKit-Plugin と ARFoundation の関係性、ロードマップを理解できれば、アプリを動かすことは比較的容易にできると思います。普段 HoloLens を触っているせいか空間を認識する精度は思ったより低いなという印象を受けましたが、垂直面(壁)、水平面(床)を手軽に検出できるのは凄く良いと思いました。また、HoloLensも同様ですが、真っ白な壁は特徴点が皆無に近く、認識できないのでアプリケーションを起動する場所をユーザーに知らせるための工夫は今後必要になってくると思います。いずれにせよ、どのようなアプリケーションにもAR対応の波が押し寄せてくると思うので、今から取り組んでおくと良いと思います。ちなみに、arfoundation-samples は、既にARkit 3.0に対応しているので、自分のiPhone XS ( iOS 12.4 ) が iOS 13 にアップデートされれば、試してみようと思います。( 今GIZMODEさんのニュースを調べたら9月10日じゃないかと言われています。 )

参考文献

本記事を執筆するにあたり、参考にさせていただいたサイトをまとめました。
筆者のみなさんありがとうございます。

AR Foundation を用いた Unity AR アプリケーション開発について

ARKit編 ( iOS )

ARCore編 ( Android )