はじめに
3DoFと6DoF
Nreal Airは3DoF(視線方向の回転や傾き検知)ができますが、Nreal Lightの6DoF
nのように「移動」を検知できません。
ですから、360°空間に配置した仮想オブジェクトがそこにあるように魅せることはできますが、そのオブジェクトに近づいたり後ろに回り込んだりのような動きは検知できません。
ARFoundationで不足分を補う
そこで、UnityにあるARFoundationを使ってスマホの位置測定および位置移動を取得してNreal Airに足りない移動検知のための+3DoFを取得して合成することでNreal Airでも6DoF的なアプリがつくれるのではないかと考えました。
まずは、ARFoundationの使い方を覚えよう
そこで、まずはARFoundationだけを使ったAndroidアプリをUnityで作成して、ARFoundationの使い方を調べてみます。
準備
開発環境
- Unity 2021.3.15f1
- Visual Studio 2022 (Community 2019なども可)
新規プロジェクト作成
新規作成
Unity Hubを起動して[プロジェクト]→[新規作成]をクリックして、プロジェクトの新規作成を行います。
テンプレートの指定
テンプレートとして[3D]を選択して、プロジェクト名を指定したら[作成]をクリックします。
プラットフォームの変更
Unityを起動してUnityの新規プロジェクトが作成されたら、[File]-[Build Settings]メニューから設定画面を開きます。
プラットフォームを「Android」に変更して[Switch Platform]をクリックします。
はじめてのARFoundationアプリ開発
ARFoundationパッケージの導入
Unityの[Window]-[Pakage Manager]メニューで[パッケージマネージャー]ウィンドウを開きます。
[パッケージマネージャー]ウィンドウで「Packages]の場所を「Unity Registry」に切り替えます。
そして、「AR Foundation」と「ARCore XR Plugin」を指定して、ウィンドウ右下の[Install]ボタンでインストールします。
Main Cameraの削除
「MainCamera」は不要なので「Hierarchy」から削除します。
オブジェクト追加
「Hierarchy」を右クリックして、[XR]-[AR Session]メニューをクリックしてAR Sessionを追加します。
同様に[XR]-[AR Session Origin]メニューをクリックしてAR Session Originを追加します。
平面検知の追加
ARFundationで現実空間の平面を検知するには「AR Session Origin」に「ARPlane Maneger」を追加するだけで自動的に平面検知が行えます。
「Hierarchy」で「AR Session Origin」を選択し、「Inspector」で「ARPlane Maneger」を追加します。
検知した平面に平面を表示する
「ARPlane Maneger」が検知した平面は、そのままでは人が見える形で何か表示がされるわけではありません。
そこで、検知した平面に平面を表示するように設定します。
どのような表示かは、「ARPlane Maneger」の「Plane Prefab」に指定した内容できまります。
表示用プレハブフォルダの設置
「Project」に「Prefab」フォルダを作成します。
表示オブジェクトの用意
「Hierarchy」を右クリックして、[XR]-[AR Default plane]メニューであらかじめ用意されている平面オブジェクトを追加します。
表示オブジェクトをプレハブ化
「Hierarchy」に追加された「AR Default plane」を「Project」-「Prefab」フォルダにドラッグ&ドロップしてプレハブ化します。
「Hierarchy」上の「AR Default plane」は不要なので削除しておきます。
AR Session Originに表示用プレハブを指定
Cubeの配置
[Hierarchy]で「AR Session Origin」を右クリックして[3D Object]-[Cube]メニューでCubeをARFoundationの管理下で配置します。
Positionは(0, 0, 1)、Rotationは(30, 30, 0)、Scaleは(0,2, 0.2, 0.2)として、1m先に少し回転した立方体を配置します。
Player Settingsの設定
[Fille]-[Build Settings]-[Player Settings]で設定ウィンドウを開いたら、Androidの[Other Settings]の中にある設定を変更します。
Graphics APIs から Vulkan を削除
[Graphics APIs」から「Vulkan」を削除します。
XR Plug-in Managementの設定
[Edit]-[Project Settings]で設定ウィンドウを開いたら、[XR Plug-in Management]で[ARCore]にチェックを入れてARCoreの初期化するように指定します。