ちょっと仕事で使う予定があったのでUnityでARアプリを作る準備をしてみます。
まずは軽く情報収集してみたところ、Unity上でARを動かすには、VuforiaとAR Foundationの二種類の選択肢がある。
参考
- UnityでAR入門(AR Foundation編)
- AR Foundation 4 × HoloLens 2 を試そうとして失敗した話
- 最新のAR環境「ARKit3.5」と「AR Foundation4.0」で出来ること
サクッと調べた感じでは、これまではVuforiaがスタンダードだったが、Unity公式のAR Foundationが登場してしばらくたった今では、こっちがデファクトになりつつあるっていう印象。というわけでAR Foundationでやってみる。
公式のセットアップのチュートリアルがあったのでこれを参考にすすめる。
https://learn.unity.com/tutorial/setting-up-ar-foundation#5da503c1edbc2a0020ebe589
セットアップ
UnityとUnity-Hubがインストールされている前提で進めます。どうやら今はUnityプロジェクトの管理はUnity-Hubという別アプリが担っているみたい。どちらもHomebrew
でインストール出来る。
Unity-Hubでプロジェクト作成する。
プロジェクトが開けたらいつものUnityの空が広がる。
Window - Package ManagerからAR Foundation
とARKit XR Plugin
も(Androidで開発する場合は、ARCore XR Plugin
)。
Main Camera
を削除してAR Session
とAR Session Origin
を作成。これらが何者なのかはあまり分かっていない。
豆腐を出現させる
適当なところに豆腐(Cube
)を置いておく。今回はX:-2.46,Y:1.24,Z:-2.04においた。
Build SettingsでiOSにSwitch Platformする。がしかしエラー。
Library/PackageCache/com.unity.xr.arkit@3.1.8/Editor/ARKitBuildProcessor.cs(13,19): error CS0234: The type or namespace name 'iOS' does not exist in the namespace 'UnityEditor' (are you missing an assembly reference?)
以下の記事によると、iOS向けのなんかがインストールされていないから動かないっぽい。Build Settingsからダウンロードしたはずなのにな。
https://qiita.com/OrotiYamatano/items/8ea47071ec8d1faf63db
と思ったらUnityを再起動したら直った。
File - Build and Runしてみるもエラーがしつこい。
BuildFailedException: ARKit requires a Camera Usage Description (Player Settings > iOS > Other Settings > Camera Usage Description) UnityEditor.XR.ARKit.ARKitBuildProcessor+Preprocessor.OnPreprocessBuild (UnityEditor.Build.Reporting.BuildReport report) (at Library/PackageCache/com.unity.xr.arkit@3.1.8/Editor/ARKitBuildProcessor.cs:144) UnityEditor.Build.BuildPipelineInterfaces+<>c__DisplayClass15_0.<OnBuildPreProcess>b__1 (UnityEditor.Build.IPreprocessBuildWithReport bpp) (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildPipelineInterfaces.cs:411) UnityEditor.Build.BuildPipelineInterfaces.InvokeCallbackInterfacesPair[T1,T2] (System.Collections.Generic.List`1[T] oneInterfaces, System.Action`1[T] invocationOne, System.Collections.Generic.List`1[T] twoInterfaces, System.Action`1[T] invocationTwo, System.Boolean exitOnFailure) (at /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildPipelineInterfaces.cs:391) UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr, Boolean&) (at /Users/bokken/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:189)
iOSでカメラを使う利用を入力せねばならぬようだ。めんどくせい。
File - Build Settings - Player Settings - Camera Usage Descriptionを入力。なんでもいいので適当に「for AR」としておいた。
再びBuild And RunするとXCodeが開いてBuild Successと出たものの起動しない。XCode側でも少々設定が必要なようだ。
Signing & CapabilitiesでAutomatically manage signingにチェックを入れて、Teamを選択しておく(Apple Developerの登録と設定が終わっている前提)。
よし、これで行けるはず。iPhone実機にUSBケーブルで接続して実行するも以下のようなエラーが出る。どないやねん。
- AtsushiのiPhone is not available.
- Please reconnect the device.
こういう場合、大抵はXCodeをアップデートしたら直る。今回もやはりXCodeをアップデートしたら直った。
参考: https://qiita.com/john-rocky/items/f6be1778c017a5a0aa6f
再びXCodeからStartしてみたら出来たーーーーー!!
黒い豆腐が左後ろあたりに出現しました!!!!Hello!Tofu!!!!