その他の問題
現在、開発ワークフローに影響を与える可能性のある既知の問題がいくつかあります。これらは既知の問題であり、UnityパッケージまたはSnapdragon Spaces Servicesランタイムの将来のリリースで対処される予定です。
問題が存在しない場合は、以下の項目を確認してください。
Gradleビルドの問題
カスタムコントローラーのアーカイブを追加すると、Gradleのキャッシュエラーが発生する場合があります。その場合、Temp > gradleOut
のプロジェクトフォルダに生成された一時的なGradleのプロジェクトフォルダを削除することで問題が解決する可能性があります。
OpenXR Pluginの問題
UnityのOpenXR Pluginのバージョン1.9.1をSnapdragon Spacesで使用すると、メモリリークが発生し、不具合が発生します。
Snapdragon Spaces Pluginが依存関係として設定するOpenXR Pluginのバージョンを使用してください。
ハンドトラッキングの問題
全般
OpenXRの設定でデフォルトのHand Interactionのプロファイルを使用すると、問題が発生する可能性があります。ホストコントローラのデータが左手のインタラクションデータを上書きしてしまうためです。この問題が発生する場合は、OpenXR Hand Interactionのプロファイルを使わないことをお勧めします。
XRITに関する問題
AR Raycast Managerの自動追加
XRIT 2.5.2では、シーンにXR Raycast Interactorがある場合、EnableARRaycasting
変数がtrue
またはfalse
に設定されているかどうかに関係なく、プログラムによってXR OriginにAR Raycast Managerが追加されます。これは、Open XRの設定で空間メッシュまたは平面検出の機能が有効になっている場合に有効になります。これにより、パフォーマンスが低下する可能性があります。
AR Foundationに関する問題
平面検出の不具合
AR Raycast Hitが成功時に誤ったトラッキングIDを報告
ARRaycastHit.trackableId
フィールドは、ヒットしたtrackable
のセッション固有識別子として、常に0-0
のtrackableId
を返します。
AR Mesh Managerのプロパティ
AR Mesh Managerコンポーネントには、Snapdragon SpacesのUnityパッケージのサブシステムの実装でサポートされていないプロパティがあります。サポートされていないプロパティを使用しようとすると、ビルドを実行して空間メッシュ機能を有効にした際に警告が表示されます。
AR Camera ManagerとAR Camera Backgroundに関する問題
シーンでAR Camera Managerを有効にすると、物理カメラへ接続され、使用可能なカメラの情報が取得されます。AR Camera Managerを有効にしたままシーンを切り替えると、その接続に悪影響を及ぼし、アプリケーションがフリーズするなど、予期せぬ結果を引き起こす可能性があります。不要なシーンでは、AR Camera Managerを無効にすることを検討してください。
AR Camera Backgroundコンポーネントが有効になっている場合、ARCameraManager.frameReceived
イベントが呼び出されると、特定のデバイスで画像がフリーズするなどのレンダリングの問題が表示されることがあります。すべてのデバイスでカメラフレームへのアクセスが正しく動作するように、このコンポーネントを無効にすることをお勧めします。
カメラフレームへのアクセス機能と同時にビデオキャプチャやストリーミングサービスを使用すると、XRCpuImage.GetPlane(int)
で画像データを読み込む際にレンダリングの誤りや処理されない例外が発生する可能性があります。このような場合、Y'UV420sp
の代わりにYUY2
が使用できる可能性があるため、アプリケーションでYUY2
とY'UV420sp
の両方のフレームフォーマットを処理することをお勧めします。
Dual Render Fusionの既知の問題
アプリのバックグラウンドの問題
Dual Render Fusionでビルドされたアプリは、デフォルトではバックグラウンドで実行されません。これは、Dual Render Fusionのアプリがスマートフォン端末のフォアグラウンドで実行され、他のアプリが実行されるとバックグラウンドになるという性質による既知の動作です。
スマートフォンの画面が黒い
Fusionアプリを実行しようとするとスマートフォンの画面が真っ黒になる場合は、Snapdragon Spaces Pluginが推奨するUnity OpenXR Pluginのバージョン1.10.0でプロジェクトがビルドされていることを確認してください。1.6.0より前のバージョンを使用したり、バージョン1.11.0以降を使用すると、黒い画面が表示されることがあります。
Dual Render Fusion機能を有効にしてもコンパニオンコントローラーが起動する
コンパニオンコントローラがまだ自動で起動する場合は、以下の設定になっていることを確認してください。
- OpenXRの設定でDual Render Fusion機能がチェックされている
- Base Runtime機能の設定で、
- 「Launch App on Viewer」のチェックが外れている
- 「Launch Controller on Host」のチェックが外れている
グラス側のレンダリングが分割表示される
これは、Snapdragon Spaces ServicesでAndroid上の権限が有効になっていない可能性があります。
残念ながら、アプリがこの状態で実行されている場合は、Snapdragon Spaces Servicesをアンインストールして再インストールする必要があります。
この操作を行ってから、Snapdragon Spaces Servicesアプリを開き、「他のアプリの上に重ねて表示」の権限が許可されていることを確認し、スマートフォンを再起動してアプリを再度実行してみてください。
グラス側のレンダリングが限られた水平視野に表示される
これは、Dual Render Fusionを使用してアプリを実行しているときに、Snapdragon Spaces ServicesでAndroid上の権限が有効になっていないことが原因であると考えられます。
残念ながら、アプリがこの状態で実行されている場合は、Snapdragon Spaces Servicesをアンインストールして再インストールする必要があります。
この操作を行ってから、Snapdragon Spaces Servicesアプリを開き、「他のアプリの上に重ねて表示」の権限が許可されていることを確認し、スマートフォンを再起動してアプリを再度実行してみてください。
Dynamic Lightingでアプリを実行するとクラッシュする
場合によっては、Dynamic Lightingを使用するアプリを実行するとアプリがクラッシュすることがあります。そのような場合、Dynamic Lightingを使用しないようにすると、良い結果が得られることがあります。さらに、一部の後処理エフェクトは、スマートフォンの画面と互換性があり、ARグラスと互換性がない場合があります。
グラス側のレンダリングの描画負荷
デフォルトでは、Unityのインゲームのレンダリングカメラは、インゲームのカメラの位置の視点からすべてをレンダリングします。
Dual Render Fusionは複数のカメラにレンダリングするため、スマートフォンの画面が2D Canvasで覆われている場合でも、シーンが複雑すぎる場合は描画負荷が高くなってしまう可能性があります。
Canvasのみをレンダリングする場合、スマートフォンにレンダリングするCameraコンポーネントのCulling Maskの値をNothingに設定することで、パフォーマンスを最適化できます。
ワールド空間のオブジェクトをレンダリングするときは、Culling Maskフィールドでオブジェクトのレイヤー以外を削除します。
グラスを外すとハンドトラッキングがフリーズする
ハンドトラッキングの使用中にグラスが外れたとき、ハンドトラッキングのOpenXRの設定の「Auto Start」が無効になっていると、グラスが再接続されたときにハンドトラッキングは自動的に再スタートしません。このAuto Start」をtrue
に設定すると、グラスの再接続時にサブシステムが再起動し、ハンドトラッキング機能が再び有効になります。
アプリケーションがDual Render Fusion機能を使用していない場合、画面の向きを強制的に縦にすると、グラス内が正しくレンダリングされない
アプリケーションをビューアに直接起動する場合は、アプリケーションの「Default Orientation」を「Landscape Left」に設定する必要があります。
Project Settings > Player > Resolution and Presentation > Orientation > Default Orientation
を参照してください。
スクリプトのコードでScreen.orientation = ScreenOrientation.Portrait;
を設定すると、Dual Render Fusion機能が有効でない場合、グラス上でレンダリングが正しく表示されないことがあります。不正確なレンダリングは、グラスに黒い画面が表示されたり、両眼が立体視されずにレンダリングされたりします。
Dual Render Fusion機能が有効な場合にのみ、このような呼び出しが行われるように制限する方法の例については、SDKに含まれるSpaces Screen Setupコンポーネントを参照してください。
シーンの再生(シミュレーション)の既知の問題
シーンの再生を効果的に使用するためのプロジェクトの設定方法については、シーンの再生(シミュレーション)のページを確認してください。XR Simulationの使用方法の詳細については、AR FoundationのXR Simulationプロバイダの使用に関するUnityドキュメントを参照してください。
カメラアクセスのシミュレーションのメモリーリーク
AR FoundationからXR Simulatorプロバイダを使用してEditorでシーンを再生する場合、メモリリークが発生することがあります。このメモリリークはシミュレーション特有のもので、AR Foundationパッケージのバージョン5.1.4で修正されました。
法線が有効になっていない時にAR Mesh Managerがクラッシュする
AR FoundationのXR Simulatorプロバイダを使用してEditorでシーンを再生する場合、法線が有効になっていないとAR Mesh Managerがクラッシュすることがあります。AR Foundationパッケージのバージョン5.1.4にアップグレードするか、Editorで法線を有効にしてください。
シミュレーションでQRコードトラッキングのサブシステムがロードされない
QRコードトラッキング機能には、QRコードトラッキングのシミュレーションのサブシステムは定義されていません。QRコードトラッキングのサブシステムの実行に依存するチェックが必要な場合は、Editorでそれらのチェックを回避することをお勧めします。
SpacesQrCodeManager arQrCodeManager;
...
bool CheckSubsystem()
{
#if UNITY_EDITOR
return arQrCodeManager.subsystem?.running ?? false;
#else
return true;
#endif
}
保存しても効果がない - ScriptableSingletonの警告
Saving has no effect. Your class 'UnityEditor.XR.Simulation.XREnvironmentViewManager' is missing the FilePathAttribute. Use this attribute to specify where to save your ScriptableSingleton.
AR FoundationからXR Simulatorプロバイダを使用してEditorでシーンを再生する際に、このメッセージが表示される場合は、AR Foundationのパッケージのバージョンを5.1.2にアップグレードしてください。
Dual Render Fusionのセカンドディスプレイが操作できない
Unity Ediotrを2022.3.21f1、2023.2.13f1、2023.3.0b10以降にアップグレードすると、この問題は解決します。
または以下の回避策があります。
- Spaces XR Simulatorコンポーネントをシーンのルートのゲームオブジェクトに追加します。
- Invert Sim Camera Displayをトグルすると、Display 1と2が反転します。
- これは、Editorでシーンを再生中に
Alt + Shift + X
を押すことで切り替えることができます。 - この回避策は、特定のディスプレイをターゲットにする必要がある追加のカメラやCanvasでレンダリングの問題を引き起こす可能性があります。
- この回避策を使用することで、Dual Render Fusionで、スマートフォンとグラスの両方のコンテンツを操作することができます。
- Unity Editorを後のバージョンにアップグレードすると、切り替えの必要なく両方のディスプレイでインタラクションを処理できます。
- これは、Editorでシーンを再生中に