Unity と AR Foundation 5 で平面検出

Create with AR: Markers and Planes - Unity Learn

元々は上記のコースをやっていたのですが、途中で微妙に躓いてしまいチュートリアルで使っていた 2021 系ではなく、 Unity の 2022 バージョンをインストールして再度やってみようとしたところ、AR Foundation のバージョンも上がり色々変わってしまっていたので、そもそもの最初からやってみようとなったのでした。

環境

プロジェクト作成

普通の 3D テンプレートを使いました。

Package の追加

AR Foundation 5.0.3

いきなり Warning がでた。。

が、Input System が新しくなったので変更するよということのようです。

【Unity】Input Systemの使い方入門 | ねこじゃらシティ

UE も Enhanced Input に変わりましたし既視感ありますね。

Apple ARKit XR Plugin 5.0.3

特に問題なくインストールできました。

オブジェクト初期設定

Main Camera の削除

デフォルトで入っている Main Camera を削除します。この後で追加する XR Origin に AR Camera が入っているためです。

XR Origin と AR Session の追加

XR カテゴリに両方入っています。

Cube の追加

まずは動作確認をするために Cube を追加します。Scale だけ 0.1 にしておきます。

最初の動作確認

XR Simulation で確認

Project Settings で以下の設定を行います。XR Simulation にチェックを入れます。

この時点で Play し、Game 画面で以下のような表示が確認できれば OK です。

iPhone 実機での確認

実機に転送する設定は終わっているものとします。

同じく Project Settings で以下の設定を行います。

設定しないとエラーになると思いますが、Player の設定 Camera Usage Description に文字列を入れます。

編集中のシーンを選択し、iOS でビルドし実行します。

この段階で空中に Cube が見えるようになれば成功です。

平面検出の設定をする

まずは AR Default Plane の Prefab を作成します。

続いて XR OriginAR Plane Manager Component を追加して、先ほど作成した AR Default Plane の Prefab を指定します。

今回は Horizontal な平面のみを対象にするよう設定しています。

Plane の Material を URP で作成する

URP のインストール

Universal RP を追加します。

URP Asset (With Universal Renderer)

Project に適当なフォルダを作成して以下を作成します。

Universal Render Pipeline AssetUniversal Render Pipeline Asset_Renderer の 2 つが作成されます。

AR Background Renderer Feature の作成

Add Render Feature をクリックし、AR Background Renderer Feature を追加します。

URP を使うように設定を変更

以下の 2 箇所です。

GraphicsScriptable Render Pipeline Settings.

QualityRendering -> Render Pipeline Asset.

AR camera Manager の設定変更

私の環境ではここまでの設定では XR Simulation 、実機環境共にカメラが動作しませんでした。

Bug - AR Foundation pre 5.0 and URP Background not rendering - Unity Forum

上記の記事の中から以下の設定を採用したところうまくいっています。XR Origin の孫に位置する Main Camera の Inspector から設定可能です。

URP に関しての参考

マテリアルの作成

不透明な緑のマテリアルを作成しています。

平面検出の動作確認

XR Simulation

iPhone 実機

ここまでで

ようやく一つ目のチュートリアルと同じところまで来ました。。 Set up a scene with plane detection - Unity Learn

ここからはチュートリアルのアセットも出てくるのですが、とりあえずそこで使われていた URP の初期設定までできたのでスムーズに進むことを祈ります 😅

参考にさせていただいたもの