クロスプラットフォームなARアプリを開発したいならUnityのAR Foundationを使うのが簡単です。
AR FoundationはUnityのAR開発のためのフレームワークです。
これを使えばiOSにもAndroidにも対応した実用的なARアプリを簡単に開発できます。
この記事ではUnityとAR Foundationを使ったiOS向けARアプリの作り方をご紹介します。
AR Founationとは?
AR Foundationとは、Unityが提供するAR開発のフレームワークです。
一般的なARアプリ開発では、iOSなら「ARKit」、Androidなら「ARCore」というフレームワークを用いてそれぞれのプラットフォーム用にアプリを開発します。
しかし、AR Foundationを使えば、iOS、Android、Hololens、MetaQuestなどのあらゆるXRプラットフォームに向けたARアプリを1つのプロジェクトで開発できます。
内部的にはARKitやARCoreなどの機能を呼び出す形になっているため、それぞれのプラットフォームのフレームワークに互換性があり、安心して開発できます。
各種バージョン情報
この記事で使用する各種ツールは以下のバージョンを使用しています。
- Unity … 2022.3.11f1
- Unity Hub … 3.6.1
- AR Foundation … 5.1.1
- Apple ARKit XR Plugin … 5.1.1
AR Foundationの環境構築
さっそくAR Foundationを使ったARの開発環境を構築しましょう。
Unity Hubを開きます。
「新しいプロジェクト」のボタンをクリックします。
「新しいプロジェクト」のダイアログで「すべてのテンプレート」の中から「3D」を選択、「プロジェクトを作成」をクリックします。
AR Foundationのインストール
次に「Window」→ 「Package Manager」からパッケージマネージャーを開きます。
「Packages」のセレクタを「Unity Registry」に設定し、右側の検索窓で「AR」と検索します。
「Packages」のペインに表示される「AR Foundation(5.1.1)」と「Apple ARKit XR Plugin(5.1.1)」を選択して、それぞれ「Install」をクリックします。
「AR Foundation」がUnityでARを扱うためのパッケージ、「Apple ARKit XR Plugin」がApple製品に対応するためのパッケージです。
インストール後、左側の「Packages」ペインを見たときに「AR Foundation(5.1.1)」と「Apple ARKit XR Plugin(5.1.1)」の両方に緑色のチェックが入っていればOKです。
AR SessionとXR Originの追加
次に「AR Session」と「XR Origin」をシーンに追加します。
「AR Session」はAR機能を有効化するコンポーネントです。
「XR Origin」はiPhoneやiPadなどのデバイスが認識する空間を、Unityの座標系に対応付けるコンポーネントです。
「Hierarchy」の何もないところを右クリックしてコンテキストメニューを開き「XR」→「AR Session」を選択します
同様にコンテキストメニューから「XR」→「XR Origin(Mobile AR)」を選択して追加します。
最終的に「Hierarchy」に「AR Session」と「XR Origin」が追加されていればOKです。
Main Cameraの削除
次に「Hierarchy」直下にもともと存在する「Main Camera」を削除します。
AR開発では先ほど追加した「XR Origin」の中にある「Main Camera」をカメラとして使用するため、初期状態で存在している「Main Camera」が不要になります。
「Hierarchy」直下の「Main Camera」を削除し、次のような「Hierarchy」になればOKです。
これで基本的な設定は完了です。
iOSで立方体をAR表示する
次にiPhoneやiPadで立方体をAR表示できることを確認しましょう。
シーンに立方体を追加
シーンに立方体を設置します。
「Hierarchy」の何もないところを右クリックしてコンテキストメニューを開き、「3D Object」→「Cube」をクリックして追加します。
このように画面内に白い立方体が表示されます。
標準的に追加される立方体(Cube)の大きさは1mです。
このままでは少し大きいので30cmまで小さくします。
「Hierarchy」で「Cube」を選択し、画面右側の「Inspector」を見ます。
「Inspector」にある「Transform」の「Scale」の値を「X」「Y」「Z」ともに「0.3」に設定します。
ここでScaleの単位は「m」なので、0.3にすれば「30cm」になります。
iOSビルドの設定
続いて、iOS向けにビルドする設定をします。
ツールバーで「File」→「Build Settings…」を選択します。
「Platform」のペインで「iOS」を選択して「Switch Platform」をクリックします。
これでiOS向けのビルドファイルを生成できるようになります。
次に「Build Settings」ダイアログの左下にある「Player Settings…」をクリックします。
「Camera Usage Description」にカメラの使用目的を入力します。
ここでは「AR機能を使うためにカメラを使用します」と入力します。
「Target minimum iOS Version」に最低限満たすべきiOSのバージョンを入力します。
ここでは「12.0」とします。
さらに、いま開いている「Project Setting」ダイアログの左側のメニューから「XR Plug-in Management」を 選択して「Apple ARKit」にチェックを入れます。
UnityからXCodeプロジェクトをビルドする
いよいよビルドを実行します。
ツールバーの「File」→「Build Settings…」から「Build Setting」ダイアログを開きます。
「Scenes In Build」のエリアの右下にある「Add Open Scenes」をクリックします。すると、いま開いているシーン(Scenes/SapmpleScene)がビルド対象のシーンとして追加されます。
それから「Build Settings」ダイアログの右下にある「Build」ボタンをクリックします。
ファイルダイアログが表示されるのでビルドファイルを生成する場所を選択します。
今回はDesktopに「AR_iOS」というフォルダを作ってそこにビルドします。
ビルドが完了すると、選択したフォルダの中にXCodeのプロジェクトが生成されます。
これでiOS用にアプリをビルドできます。
XCodeからARアプリをビルドする
生成されたフォルダにある「Unity-iPhone.xcodeproj」ファイルをクリックしてXCodeを開きます。
XCodeを開けたらUSBケーブルでMacとiPhoneを接続します。
iPhone側で「コンピュータを信頼するか」を聞かれたら「信頼する」をタップしてください。
接続が完了すると、XCodeの上部のバーをタップしたときに「iOS Device」の中に「〇〇のiPhone」のように接続中のiOS端末名が表示されます。これを選択します。
選択したら左上にある三角形の再生ボタン(ビルドボタン)をタップします。
はじめてのビルドの際は「”Unity-iPhone” requires a provisioning profile. Select a provisioning profile in the Signing & Capabilities editor.」というエラーが出ます。
XCodeのビルドで開発者用のプロファイルを選択する必要があるためです。
「Unity-iPhone」→「General」タブ→「All」→「Signing」で「Automatically manage signing」にチェックを入れたあと、任意の「Team」を選択してください。
ここでは「Personal Team」を選択しています。
再度、再生ボタン(ビルドボタン)をクリックするとビルドが始まります。
ビルド完了後に「The request to open “com…..” failed」というエラーが出るかもしれません。
そのときは、ダイアログの指示に従い、iOS端末から「設定」→「VPNとデバイス管理」→「デベロッパアプリ」→「信頼されていません」になっているアプリをタップし、「〇〇を信頼」のボタンをタップします。
アプリを信頼したあとで、もう一度XCodeの再生ボタン(ビルドボタン)を押すとアプリが実行されます。
カメラの使用を許可するとカメラ画面が開きます。
空間のどこかを探すと30cmの白い立方体(Cube)が表示されているはずです。
※立方体(Cube)はアプリを起動した位置(原点、(0,0,0)の点)に作られます。アプリを起動した位置から1~2mくらい離れて、起動した際にiPhoneがあった場所を見ると立方体(Cube)があるはずです。
無事に白色のキューブが表示されていますね。
まとめ
この記事では、UnityとAR FoundationでiOS向けのARアプリの開発環境を作る方法を紹介しました。
これでAR開発ができますが、ただ空間上に立方体を表示するだけでは面白くありませんね。
AR Foundationには空間中の平面を検出したり、特徴点を抽出したり、深度画像を取得する機能もあります。
次回の記事ではAR Foundationの機能を使って深度画像を取得し、現実の物体を3Dスキャンして点群データを取得する方法を紹介します。