【Unity】AR Foundation(ARKitとARCoreのマルチプラットフォームAR環境)の超入門
今回はARCoreとAR Kitの両方に対応したマルチプラットフォームAR環境である「AR Foundation」、その最初の一歩として「とりあえず動くもの」の作り方を紹介します。
AR Foundationとは?
マルチプラットフォームAR環境です。現状はAR CoreとAR Kitの両方ですが、今後は他のものが増えるかもしれません。
かなり勘違いしやすいのは、ARCore SDK for UnityとAR Kit Pluginをまとめたものではない という点です。
AR Foundationは、ARKit XR Plugin(com.unity.xr.arkit)とARCore XR Plugin (com.unity.xr.arcore)をまとめたものです。
どちらも最終的にはARKit SDKとARCore SDKは使用しているのですが、C#側で使用するAPIが若干異なるので、そのあたりに注意です。また、AR Kit PluginやARCore SDK for Unity等の、それぞれ特化したプラットフォームと比較して機能が若干貧弱です。
In order to clear up just how things fit together in the @unity3d Handheld #AR ecosystem I also created a block diagram that shows the development path for each platform. I added it to the spreadsheet posted a couple weeks ago #UnityTips #ARCore #ARKit https://t.co/GW8IHb01zj pic.twitter.com/NIvmp8mbzI
— Dan Miller (@DanMillerDev) 2018年11月20日
平面検知は普通に使えるので、それが欲しいなら割と良いです。
なお、現状「ビルドしないと動作しない」です。他のAR Kit PluginsやARCore SDK for Unityが持っているような、スマホを接続してプレビューする的な機能は使えません。ロードマップによるとUnity 2019.1+です。 そういった点で言えば、Vuforia は楽で良いですね。対応するスマホも不要ですし。

使い方
Package ManagerでAR Foundation、ARCore XR Plugin、ARKit XR Pluginをインポートします。
あとPlayerSettingsでiOSでRequest ARKitSupport、AndroidでARCore Supportedを入れる必要があるかもしれません。

ARのセットアップ
セットアップは非常に簡単です。
Main Cameraを削除して、代わりにAR Cameraを導入します。- メニューアイテムの
GameObject > XR > AR Aession Originと、GameObject > XR > AR Sessionを選択します。

現状こんな感じ。

平面の検出をグラフィカルにする
下のような感じで、判定した平面の検出をグラフィカルに表示します。

- メニューアイテムの
GameObject > XR > AR Default Planeを選択して、AR Default Planeを作成、それをPrefab化します。 AR Session OriginオブジェクトにAr Plane Managerコンポーネントを追加します。AR Plane ManagerコンポーネントのPlane Prefabに、1で作成したAR Default Planeをセットします。
これでカメラを地面に写した時、黒い枠が表示されるようになります。


オブジェクトをAR空間に配置する
AR空間に配置するのには、少しだけコードを使用します。
タップした位置を把握するのは origin.Raycast(Input.GetTouch(0).position, hitResultsです。あとは取得した位置にオブジェクトを作るだけです。
下のコードはARSessionOriginコンポーネントと同じオブジェクトに登録します。
あとはタップで生成したいPrefabをSpawnObjectのprefabに登録すれば準備完了です。

なおPrefabが大きすぎると最初からめり込んだ状態で生成され、生成されていないように見えるので、注意です。
完成
ここまで調べる時間を除けば、ほとんど数分で達成できるのは中々良いです。リモートが無いので作る手軽さやワークショップ等ではVuforiaの方が正直楽なんですが、まぁかなり良いんじゃないでしょうか。

あとは周辺の環境と馴染ませたいなら、https://github.com/Unity-Technologies/arfoundation-samples/blob/master/Assets/Scripts/LightEstimation.csとか使うと、結構良い感じにマッチします。

試した環境:2018.3b9
関連
サンプル一覧
AR Foundationのサンプル集です。
AR Foundationのマニュアルです。撮影したカメラの画像とか、一部で需要があるんじゃないかしら
撮影結果をキューブマップに流し込んだり
About AR Foundation | Package Manager UI website