テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】AR Foundation(ARKitとARCoreのマルチプラットフォームAR環境)の超入門

今回はARCoreとAR Kitの両方に対応したマルチプラットフォームAR環境である「AR Foundation」、その最初の一歩として「とりあえず動くもの」の作り方を紹介します。

AR Foundationとは?

マルチプラットフォームAR環境です。現状はAR CoreとAR Kitの両方ですが、今後は他のものが増えるかもしれません。

blogs.unity3d.com

かなり勘違いしやすいのは、ARCore SDK for UnityAR 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等の、それぞれ特化したプラットフォームと比較して機能が若干貧弱です。

平面検知は普通に使えるので、それが欲しいなら割と良いです。

なお、現状「ビルドしないと動作しない」です。他のAR Kit PluginsやARCore SDK for Unityが持っているような、スマホを接続してプレビューする的な機能は使えません。ロードマップによるとUnity 2019.1+です。 そういった点で言えば、Vuforia は楽で良いですね。対応するスマホも不要ですし。

f:id:tsubaki_t1:20181121204720j:plain

使い方

Package ManagerでAR FoundationARCore XR PluginARKit XR Pluginをインポートします。

あとPlayerSettingsiOSRequest ARKitSupportAndroidARCore Supportedを入れる必要があるかもしれません。

f:id:tsubaki_t1:20181121202521j:plain

ARのセットアップ

セットアップは非常に簡単です。

  1. Main Cameraを削除して、代わりにAR Cameraを導入します。
  2. メニューアイテムのGameObject > XR > AR Aession Originと、GameObject > XR > AR Sessionを選択します。

f:id:tsubaki_t1:20181121203130j:plain

現状こんな感じ。

f:id:tsubaki_t1:20181121203335j:plain

平面の検出をグラフィカルにする

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

f:id:tsubaki_t1:20181121203542j:plain

  1. メニューアイテムの GameObject > XR > AR Default Planeを選択して、AR Default Planeを作成、それをPrefab化します。
  2. AR Session OriginオブジェクトにAr Plane Managerコンポーネントを追加します。
  3. AR Plane ManagerコンポーネントPlane Prefabに、1で作成したAR Default Planeをセットします。

これでカメラを地面に写した時、黒い枠が表示されるようになります。

f:id:tsubaki_t1:20181121203857g:plain

f:id:tsubaki_t1:20181121213515j:plain

オブジェクトをAR空間に配置する

AR空間に配置するのには、少しだけコードを使用します。

タップした位置を把握するのは origin.Raycast(Input.GetTouch(0).position, hitResultsです。あとは取得した位置にオブジェクトを作るだけです。
下のコードはARSessionOriginコンポーネントと同じオブジェクトに登録します。

gist.github.com

あとはタップで生成したいPrefabをSpawnObjectprefabに登録すれば準備完了です。

f:id:tsubaki_t1:20181121205432j:plain

なおPrefabが大きすぎると最初からめり込んだ状態で生成され、生成されていないように見えるので、注意です。

完成

ここまで調べる時間を除けば、ほとんど数分で達成できるのは中々良いです。リモートが無いので作る手軽さやワークショップ等ではVuforiaの方が正直楽なんですが、まぁかなり良いんじゃないでしょうか。

f:id:tsubaki_t1:20181121210315g:plain

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

f:id:tsubaki_t1:20181121210545g:plain

試した環境:2018.3b9

関連

サンプル一覧

AR Foundationのサンプル集です。

github.com


AR Foundationのマニュアルです。撮影したカメラの画像とか、一部で需要があるんじゃないかしら
撮影結果をキューブマップに流し込んだり

About AR Foundation | Package Manager UI website


www.youtube.com