はじめに
こんにちは。
先日、Unity6とARFoundationでスマホ(とりあえずはiOS)用のアプリを作ろうとした際に、カメラ出力が真っ黄色になってしまう症状が発生しました。これについて解決法を見つけたのでここでご紹介します。同じような症状でお困りの方の参考になると幸いです。
ちなみに、本記事は私の初投稿記事になります。読みやすさなど至らない点があるかと思いますがどうかご容赦ください。
動作環境
- Unity 6000.0.29f1(Apple Silicon)
- AR Foundation 6.0.3
- Apple ARKit XR Plugin 6.0.3
- OpenXR Plugin 1.13.2(UnityEditor上での動作確認用)
お急ぎの方へ/概略
この問題を解決していきます。
「入門とか大丈夫。問題の解決方法のみ知りたい!」という方は一面黄色の解決法までどうぞ。
導入
ついでなのでUnity6におけるAR Foundationの入門からやっていこうと思います。
iOS用のセットアップをご紹介しますので、Android用のセットアップを確認したい方は他の記事を見に行っていただけるとやりやすいかと思います。
Unityプロジェクトの作成
Unity6をインストールしていない場合はUnity Hubからインストールしてください。
プロジェクトをUniversal 3D
で作成してください。
プロジェクトを作成したら以下のような画面になりますが、URPのテンプレートは今回使わないのでRemove Readme Assets
で消してしまってください。
パッケージのインストール
メニューバーからWindow
> Package Manager
を開きます。
パッケージマネージャーを開いたら、左側のサイドバーからUnity Registry
> Features
の「AR」を選択し、Packages Included
から必要なパッケージを個別でインストールしてください。
ARパッケージ全体でインストールしないでください。
記事執筆時点(2024/12/02)でMagic Leap
プラグインを導入するとエラーが発生してプロジェクトが動かなくなります。ARパッケージを全体でインストールするとMagic Leap
もインストールされてしまうので、Packages Included
から必要なARパッケージを個別でインストールしてください。
今回は動作環境にもあるように
- AR Foundation
- Apple ARKit XR Plugin
- OpenXR Plugin
の3つをインストールしますが、必要に応じて他パッケージもインストールしましょう。
ビルド設定
メニューバーからFile
> Build Profiles
を開きます。iOSを選択しSwitch Platform
を押してビルド対象を変更します。ビルド対象を変更したら、Player Settings
を押してください。
開いたら下にスクロールして、Requires ARKit support
にチェックを入れてください。
またUnity6ではBundle Identifier
の初期値が(おそらく)すべて同じでXCodeでエラーを吐くので、Override Default Bundle Indentifier
のチェックを一度外してまた付けて、Bundle Identifier
を固有の値に変更してください。
Bundle Identifierは全世界で重複できません。そのためプロジェクトで固有の値を設定する必要があります。UnityにおけるBundle Identifier
の設定方法は他にもありますがここでは詳しくは触れません。
次に、XR Plug-in Management
に進んでください。
以下の画像の通りにチェックを入れてください。「XR Simulation」はエディター上での実行に必要です。
以上でビルド設定は終了です。
シーン設定
ここからARのためのシーンを作っていきます。難しそうに思えますがめちゃくちゃ簡単です。
まず最初にシーンからMain Camera
とlobal Volume
を削除します。
次に、ヒエラルキー上で右クリックをして、XR
からAR Session
とXR Origin(Mobile AR)
を追加してください。
実はこれだけで、ARを実行する準備は整ったのです!
では試しにエディター上で実行してみましょう!
OpenXR
の導入とビルド設定で行ったXR Simulation
へのチェックのおかげでPC上でも擬似的に実行できます。
実行...あれ?!
...出ました。今回の記事のトピック、「一面真っ黄色」です。実機でもこうなります。こいつのせいで私は多くの時間を消費したのです。
一面黄色の解決法
まず、「URP」という名前で(他の名前でもいいですがRender関係であることがわかるように)フォルダを作成してください。
続いて、作成したフォルダ内で右クリックをしURP Asset(with Universal Renderer)
を作成してください。
2つファイルが作成されますが、そのうち「<指定した名前>_Renderer(Universal Renderer Data)」にインスペクターのAdd Renderer Feature
からAR Background Renderer Feature
を追加してください。
URPの設定が終わったら、メニューバーからEdit
> Project Settings
を開きます。
Graphics
を開き、Default Render Pipeline
を先ほど作成したものに変更します(枠一番右の二重丸をクリックすると選択できます)。
先ほどと同様に、Render Pipeline Asset
を変更します。
これで完了です!
もう一度実行!
黄色が消えました!
実機でのテストは省略しますが、正常に動作します。
まとめ
以上、カメラ出力が黄色になってしまうときの対処法でした。ドキュメントとサンプルプロジェクトと私の環境とでにらめっこしながら頑張りました(^^)
この方法は参考にしたAR Foundationのドキュメントでは必要に応じてする操作とされているのですが、私の環境では必須でした。なので他の方の環境ではわかりませんが、もはやチュートリアルの一環と言ってもいいのではないでしょうか。
皆さんのお役に立てたら幸いです。
それでは、良きAR開発ライフを!
参考