もふもふ技術部

IT技術系mofmofメディア

Unity + AR Foundation でiOSのAR世界に豆腐を出現させる

ちょっと仕事で使う予定があったのでUnityでARアプリを作る準備をしてみます。

まずは軽く情報収集してみたところ、Unity上でARを動かすには、VuforiaAR Foundationの二種類の選択肢がある。

参考

サクッと調べた感じでは、これまでは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 FoundationARKit XR Pluginも(Androidで開発する場合は、ARCore XR Plugin)。

Main Cameraを削除してAR SessionAR 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!!!!