Known Issues for AR
There are currently a couple of known issues that may affect the development workflow. These are known issues and will be tackled in future releases of the Unity package or the Snapdragon Spaces Services
runtime.
If an issue is not present, check the overall SDK Known Issues.
Gradle build issue
In some instances, adding a custom controller archive might lead to Gradle caching errors. In that case, removing the temporary Gradle project folder generated in the project folder under Temp > gradleOut might resolve the issue.
Hand Tracking issues
General
- Using the default Hand Interaction profile the OpenXR settings may cause problems on tethered devices like Lenovo Think Reality A3. The host controller data is overriding the left hand interaction data. For those devices, it's recommended to not use the OpenXR Hand Interaction profile.
XRIT related issues
AR Raycast Manager added automatically
With XRIT 2.5.2, if there is an XR Raycast Interactor in the scene, it will programmatically add an AR Raycast Manager to the XR Origin independently from the variable EnableARRaycasting
being set to true or false. This will enable Spatial Meshing when this or Plane Detection features are enabled in the Open XR settings. This could potentially result in a reduction of performance.
AR Foundation related issues
AR Raycast Hit reports wrong trackable ID on success
The ARRaycastHit.trackableId
field will always return the trackableId of 0-0
as the session-unique identifier for the trackable that was hit.
AR Mesh Manager properties
The AR Mesh Manager component has properties that are not supported by the Snapdragon Spaces Unity package's subsystem implementation. Attempting to use any of the unsupported properties will display warnings when a build is run and the Spatial Meshing feature is enabled.
AR Camera Manager and AR Camera Background issues
Enabling the AR Camera Manager in a scene will create a connection to physical cameras to retrieve information about their availability. Moving back and forth between scenes with the AR Camera Manager enabled might affect that connection negatively and cause unexpected results, such as application freezes. Consider disabling the AR Camera Manager where it is not needed.
If an AR Camera Background component is enabled, rendering issues such as a frozen image may be visible in certain devices once the ARCameraManager.frameReceived
event is invoked. It is recommended to disable this component to ensure that Camera Frame Access behaves correctly on all devices.
Using video capture or streaming services simultaneously with the Camera Frame Access feature may lead to rendering artifacts or unhandled exceptions when reading image data through XRCpuImage.GetPlane(int)
. It is recommended to handle both YUY2
and Y'UV420sp
frame formats in the application, as YUY2
may be available instead of Y'UV420sp
in these cases.
Dual Render Fusion Known Issues
App Backgrounding Issues
Apps built with Dual Render Fusion do not run in the background by default. This is a known behavior due to the nature of Dual Render Fusion apps running in the foreground on the smartphone device, and being put in the background when another app is run.
Smartphone Screen is Black
If the smartphone screen is black when attempting to run a Fusion app, validate that the project was built with the recommended Unity OpenXR plugin version set by the Snapdragon Spaces plugin as a dependency. Using a version earlier than 1.6.0 or using version 1.11.0 may cause a black screen.
Companion Controller is launching even with Dual Render Fusion feature enabled
If the companion controller is still auto-launching, then ensure that the Dual Render Fusion feature is checked in the OpenXR Settings and that the Base Runtime Feature settings have Launch App on Viewer unchecked, and Launch Controller on Host unchecked.
Rendering in the glasses appears in a split-screen mode
This is likely a result of an Android Permission not being enabled in Snapdragon Spaces Services. Unfortunately, if an app is running in this state, Snapdragon Spaces Services will need to be uninstalled and reinstalled. Perform this action, then open the Snapdragon Spaces Services app and ensure that the "Display over other apps" permission is enabled, restart the smartphone and try running the app again.
- Uninstall the Snapdragon Spaces Services apk from the phone.
- Turn off the phone (do not restart it) and unplug the glasses.
- Turn on the phone and wait for phone startup to complete.
- Install the Snapdragon Spaces Services apk again by connecting the phone via usb and using the adb install command. Do not use the -g option to auto-grant permissions.
- After installing, open the Snapdragon Spaces Services app and give permissions for Camera and Display over other apps manually.
- Plug the glasses in to the phone and wait for glasses startup to complete.
- Open your application again and the display in the glasses should no longer render in split-screen mode.
Rendering in the glasses appears in a limited horizontal field of view
This is likely a result of an Android Permission not being enabled in Snapdragon Spaces Services when running an app using Dual Render Fusion. Unfortunately, if an app is running in this state, Snapdragon Spaces Services will need to be uninstalled and reinstalled. Perform this action, then open the Snapdragon Spaces Services app and ensure that the "Display over other apps" permission is enabled, restart the smartphone and try running the app again.
- Uninstall the Snapdragon Spaces Services apk from the phone.
- Turn off the phone (do not restart it) and unplug the glasses.
- Turn on the phone and wait for phone startup to complete.
- Install the Snapdragon Spaces Services apk again by connecting the phone via usb and using the adb install command. Do not use the -g option to auto-grant permissions.
- After installing, open the Snapdragon Spaces Services app and give permissions for Camera and Display over other apps manually.
- Plug the glasses in to the phone and wait for glasses startup to complete.
- Open your application again and the display in the glasses should no longer render in split-screen mode.
Running an app with Dynamic Lighting causes crashes
In some cases, running apps that use Dynamic Lighting may cause the app to crash. In those cases, some have found good results with moving away from Dynamic Lighting. Additionally, some post-processing effects may be compatible with the smartphone screen and not the glasses.
Rendering in the glasses appears with varying performance
By default, a Unity in-game render camera renders everything from the point of view of the in-game camera pose. Since Dual Render Fusion renders to multiple cameras, this may incur high performance costs if a scene is overly complex, even if the smartphone screen is covered by a 2D Canvas. When rendering only a canvas, performance can be optimized by setting the Culling Mask value to Nothing in the Camera component that renders to the smartphone. When rendering world space objects, remove all but the objects' layers in the Culling Mask field.
Hand Tracking freeze if glasses are disconnected.
When glasses are disconnected while using Hand Tracking, if the Auto Start toggle in the OpenXR settings for Hand Tracking is disabled, Hand Tracking won't re-start automatically when glasses are reconnected. Setting this toggle to true will restart the subsystems upon glasses re-connection and should re-enable the Hand Tracking features.
Forcing screen orientation to portrait causes glasses to render incorrectly if the application is not using Dual Render Fusion feature
When launching the application straight to the viewer, the Default Orientation of the application must be set to Landscape Left.
See Project Settings > Player > Resolution and Presentation > Orientation > Default Orientation.
Setting Screen.orientation = ScreenOrientation.Portrait;
in script code may cause rendering to display incorrectly on the glasses if the Dual Render Fusion feature is not enabled.
Incorrect rendering can be seen as either a black screen in the glasses, or each eye rendered without stereo vision.
See the Fusion Screen Setup component included in the SDK for an example of how to restrict such calls to only be made when the Dual Render Fusion feature is enabled.
Play in Editor Known Issues
Check the Play in Editor Setup Guide page for information about how to configure a project to use play in editor effectively. See the Unity documentation on using the XR Simulation provider from AR Foundation for further information on how to use XR Simulation.
Memory Leak in Camera Access simulation
When playing in the editor and using the XR Simulator provider from AR Foundation, a memory leak can occur. This memory leak is simulation specific and was fixed in version 5.1.4 of the AR Foundation package.
AR Mesh Manager causes a crash when normals are not enabled
When playing in the editor and using the XR Simulator provider from AR Foundation, the AR Mesh Manager can cause a crash when normals are not enabled. Upgrade to version 5.1.4 of the AR Foundation package, or enable normals in the editor.
QR Code Tracking subsystem is not loaded in simulation
There is no QR Code Tracking Simulation subsystem defined for the QR Code Tracking feature. If a check must be made which depends on the QR Code Tracking subsystem running, it is suggested to bypass those checks in the editor.
SpacesQrCodeManager arQrCodeManager;
...
bool CheckSubsystem()
{
#if UNITY_EDITOR
return arQrCodeManager.subsystem?.running ?? false;
#else
return true;
#endif
}
Saving has no effect - ScriptableSingleton warning
Saving has no effect. Your class 'UnityEditor.XR.Simulation.XREnvironmentViewManager' is missing the FilePathAttribute. Use this attribute to specify where to save your ScriptableSingleton.
If this message appears when playing in editor using the XR Simulator provider from AR Foundation, upgrade to version 5.1.2 of the AR Foundation package.
Dual Render Fusion second display is not interactable
Upgrading to Unity 2022.3.21f1, 2023.2.13f1, 2023.3.0b10 or later will resolve the issue. Alternatively, a workaround exists:
- Add the Spaces XR Simulator component to a root game object in the scene.
- Toggle Invert Sim Camera Display which will flip display 1 and 2.
- This can be toggled while playing in the editor by pressing Alt-Shift-X.
- This workaround may cause rendering issues with additional cameras or canvases which need to target a specific display.
- Using this workaround it is possible to interact with both phone and headset content for Dual Render Fusion, switching the content to take input focus to display 1 when necessary.
- Upgrading to a later version of Unity allows interactions to be processed on both displays without the need for switching.