おもちゃラボ

Unityで遊びを作ってます

【AR Foundation】セットアップから平面検出まで

これまでUnityからARKitを使いたい場合は、Unity ARKIt Pluginを使うのが一般的でした。ただ、Unity2019からはUnity ARKIt Pluginに変わってAR Foundationが公式でサポートされるようになりました。そのため、これからUnityでARを始めたい人は、AR Foundationを使うのが一般的になるでしょう。

そこで、この記事ではUnityでAR Foundationを使うための基本的なセットアップ方法を紹介します。また、初回の今回はAR Foundationを使って平面検出を行ってみます。

f:id:nn_hokuson:20200707221306j:plain:w650

AR Foundationを使った平面検出の流れは次のとおりです。

プロジェクトの作成

UnityでAR関連のアプリを作りたい場合は、Templeteから3Dのプロジェクトを作成します。プロジェクト名や保存場所は任意のもので構いません。

f:id:nn_hokuson:20200706160128p:plain:w500

AR Foundationのインストール

AR Foundationはパッケージという形で配布されています。したがって、UnityからAR Foundationを使うにはPackage Managerからインストールする必要があります。

メニューバーのWindow→Package Managerを選択して下さい。パッケージマネージャのPackages欄で「All」を選択した上で、検索欄にAR Foundationと入力します。すると、左カラムにAR Foundationのパッケージが表示されるので、インストールしたいバージョンを選択して、右下のインストールボタンをクリックして下さい。

f:id:nn_hokuson:20200706160515p:plain:w500

これにより、AR FoundationとAR Subsystemsのパッケージがインストールされます。次に、ARKitを使いたい場合は追加でARKIt XR PluginとARKit Face Tracking(顔検出を使いたい場合のみ)、ARCoreを使いたい場合はAR Core XR Pluginのパッケージをインストールして下さい。このとき、ARKIt XR PluginとAR Foundationのバージョンは揃えておくことをおすすめします。


AR Sessionを作成する

AR Foundationではセッションという単位でARの挙動を定義します。そのセッションの動きを管理するのがAR SessionとAR Session Originのオブジェクトです。

これらのオブジェクトをシーンに追加しましょう。ヒエラルキーウインドウの「+」をクリックして「XR→AR Session Origin」と「XR→AR Session」を追加して下さい。

f:id:nn_hokuson:20200706161216p:plain:w300 f:id:nn_hokuson:20200706161241p:plain:w300

AR Sessinはその名の通りセッションを管理するためのもので、AR Session OriginはAR座標系の原点とカメラの挙動を管理するためのものです。AR Session Originの子要素にはAR用のカメラが追加されているため、最初からあるMain Cameraは不要です。削除しておきましょう。

平面検出を行う

基本的にはAR Session Originオブジェクトに、様々なARのコンポーネント追加していきます。今回は平面検出をしたいので、AR Session Originオブジェクトを選択して、インスペクタのAdd Componentボタンをクリックし、AR Plane Managerコンポーネントをアタッチします。

f:id:nn_hokuson:20200706161519p:plain:w300

AR Plane ManagerのDetection Mode欄では、検出する面の方向(水平面・垂直面)を指定できます。選択できる項目の意味は次のようになります。

項目 意味
Everything 全ての平面を検出
Horizontal 水平面のみ検出
Vertical 垂直面のみ検出

また、Plane Prefabに平面のPrefabを設定することで、検出した平面を視覚化することができます。平面のPrefabを作って、検出した平面を視覚化してみましょう。

ヒエラルキーウインドウの「+」から「XR→AR Default Plane」を選択して下さい。

f:id:nn_hokuson:20200706161850p:plain:w300

作成したAR Default Planeオブジェクトをプロジェクトウィンドウにドラッグ&ドロップしてPrefabを作成します。作成したPrefabをAR Plane ManagerのPlane Prefabの欄にドラッグしてくだい。ヒエラルキーウインドウにあるAR Default Planeは削除しておいて下さい。

f:id:nn_hokuson:20200706162840j:plain

ビルドする

最後にiOS用にビルドしてみましょう。iOSのビルドには次の設定が必要になります。

  • Player Settings
  • XR/ARKit Build Settings
  • Plug-in Providers

Player Settingsの設定

メニューバーから「File → Build Setting 」を選択してBuild Settingsパネルを開き、ビルドターゲットをiOSに変更して下さい。次に「 Player Settings」ボタンをクリックして、Player項目のOhter Settingsの欄を次のように設定して下さい。

Bundle Identifire 任意の文字列
Camera Usage Description 任意の文字列
Target minimum iOS Version 13.0

f:id:nn_hokuson:20200706163129p:plain:w400

XR/ARKit Build Settingsの設定

また、Project Settingsのウインドウの左カラムからXR/ARKit Build Settingsを選択して、右カラムでCreateボタンをクリックします。

f:id:nn_hokuson:20200706163412p:plain:w400

XR Plug-in Managementの設定

最後に左カラムのXR Plug-in Managementを選択して、右カラムのiOSタブを選択、iOSタブをクリックして、Plug-in ProvidersのARKitにチェックを入れてください。

f:id:nn_hokuson:20200706163439p:plain:w400

実行してみる

Build Settingsのウインドウに戻ってBuild And Runのボタンを押して端末にインストールして下さい。アプリを起動してカメラを左右に動かすと平面が検出されて、検出された平面が黄色で表示されます。

f:id:nn_hokuson:20200707221903g:plain:w600