ARCore/ARKitをビルドしたら、真っ暗だしクラッシュする(泣)
Zenn初投稿です。
AR FoundationでARアプリを作ろうとしたら、起動したあと画面が真っ暗だし、クラッシュするし、最悪だ!😭
どうすればいいんだよ😭
という方向けです。
⚠️留意事項
あなたのデバイスが、ARCore/ARKitによってサポートされていない可能性があります。詳しくは、こちらを見てください。
この記事は、基本的にAndroid向けですが、一応iOS版のトラブルシュートをしたい方でもわかるように書いてはいます。ですが、iOSの問題が修正されるかは保証できません。
環境
- Unity 2019.4.11f1(2019.4.9f1動作確認済。2019.4以上であれば動くっぽい?)
- Android Logcat 1.2.0
- AR Foundation 4.0.8
- ARCore XR Plugin 4.0.8
- ARKit XR Plugin 4.0.8
- Universal RP 7.3.1
原因
残念ながら詳しくは調べていないのでわかりませんが、対応デバイスではない・使うバージョンが間違っていて、Session was passed null
が出る等があるようです。
解決方法
必要なパッケージをインストールする
- (必要であれば)新規プロジェクトを作成します
- Window > Package Managerを開きます
-
Android Logcat
、AR Foundation
、ARCore XR Plugin(Androidであれば)
、ARKit XR Plugin(iOSであれば)
、Universal RP
をインストールします。その際、下記の画像のとおりに左の三角を押して展開し、最新のバージョンを選択してください[1]。verified
は無視して構いません。
初期設定を行う
-
Edit > Project Settingsを開きます
-
Playerを押して、Other Settingsを開きます
-
Graphics APIsからVulkanを削除します
-
Minimum API Levelを
Android 7.0 (27)
に変更します(ここはお好きなものに設定してください。)
-
Scripting Backendを
IL2CPP
、Target ArchitecturesのARM64
に設定します。
-
左のタブからXR Plug-in Managementを開き、Android/iOSのマークを押してPlug-in ProvidersのARCore/ARKitをチェックしておきます。
オブジェクトを配置する
次のように、AR Session
とAR Session Origin
を配置してください。AR Session Origin
の中には、AR Camera
が自動的に生成されています。
Universal RPを配置する
準備
-
下にあるProjectタブ(個人差あり)のAssetsフォルダに、Renderingフォルダを追加します。
-
Renderingフォルダの中で、右クリック > Create > Rendering > Universal Render Pipeline > Pipeline Asset (Forward Renderer)を押して、名前を変えずにEnterを押します。
-
UniversalRenderPipelineAsset_Rendererを押して、Add Renderer FeatureからAR Background Renderer Featureを選択します。
-
Edit > Render Pipeline > Universal Render Pipeline > Upgrade Project Materials to UniversalRP Materialsを押して、出てきたプロンプトに従いProceedを押し、Assetを変換します。
設定
- Edit > Project Settingsの、Graphicsの一番上にあるScriptable Render Pipeline Settingsのフィールドにある一番右のボタンを押し、出てきたウィンドウにある
UniversalRenderPipeelineAsset (UniversalRenderPipeelineAsset)
を押します。
いざビルド
- 上記のすべての項目が終わったら、File > Build SettingsにあるPlatform内のAndroidを押し、Switch Platformを押して少し待ちます。
- Switch Platformが終わったら、スマートフォンにUSBをつなぎ、Build And Runを押しましょう。
- ビルドが終わり次第、スマートフォンの画面がついていれば自動的にアプリが実行されますので、電源はつけたままにしておいてください。
テスト & トラブルシュート
アプリのビルドが終わり、実行されたにもかかわらず、黒い画面がでる・クラッシュするなどの問題が出るときは、まず最初に入れたAndroid Logcatのウィンドウが表示されているので、そちらを見てください。赤い文字で表示されているところに、
- Session was passed null
が表示されている場合は、なんらかの手順を間違っているか、もしくはバージョンなどの互換性があっていない場合があります。バージョンを合わせてみるか、他のバージョンを試して試行錯誤してみてください。
ログの特徴としては、同じログが何度も何度も流れます。
xxxx/xx/xx Error xxxxxxxxxxxxx: Session was passed null
xxxx/xx/xx Error xxxxxxxxxxxxxxxx: Session was passed null
xxxx/xx/xx Info xxxxxxx anything happened
xxxx/xx/xx Error xxxxxxxxxxxxx: Session was passed null
xxxx/xx/xx Error xxxxxxxxxxxxxxxx: Session was passed null
xxxx/xx/xx Info xxxxxxx anything happened
のような感じです。
- Unable to obtain device profile from the content provider: NOT_FOUND: Device is not supported.
が表示されている場合は、残念ながらお使いのデバイスが対応していません。他のデバイスを探してみてください。
ログの特徴としては、同じようなログが2回ほど流れますが、1つの範囲が大きいメッセージが表示されます。
============================================================================
xxxx/xx/xx Error native session_create_implementation_shared.cc:1799 Unable to obtain device profile from the content provider: NOT_FOUND: Device is not supported.
xxxx/xx/xx Error native session_create_implementation_shared.cc:2121 Failed to create calibration config and device profile.
Stacktrace:
xxxxxxxxxxxxxxxxxxxxxxxxxx (xxxxxxxxxx)
xxxxxxxxxxxxxxxxxxxx (xxxxxxxx)
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (xxxxxxx)
============================================================================
xxxx/xx/xx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
============================================================================
xxxx/xx/xx Error native session_create_implementation_shared.cc:1799 Unable to obtain device profile from the content provider: NOT_FOUND: Device is not supported.
xxxx/xx/xx Error native session_create_implementation_shared.cc:2121 Failed to create calibration config and device profile.
Stacktrace:
xxxxxxxxxxxxxxxxxxxxxxxxxx (xxxxxxxxxx)
xxxxxxxxxxxxxxxxxxxx (xxxxxxxx)
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (xxxxxxx)
============================================================================
のような感じです。
参考
How To Fix Black Screen Issue When Using AR Foundation And Universal Rendering Pipeline in Unity?
https://youtu.be/QcYlLI4KZOs
締め
Unity等に関しては本当に入門したばかりなため、なにか間違いがあればご指摘ください。
ご質問に関してなんでも受け付けているので、コメント欄やTwitter経由で、気軽にご相談ください!ただし明確な答えを出せるかは状況次第です!
-
ここでは4.0.8になっていますが、バージョンアップで変わる可能性があります。 ↩︎
Discussion