今回は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