Known Issues for Unity
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.
Projects that updated from Snapdragon Spaces SDK 0.15.0
The TRIM_MEMORY flag that handled the lifecycle on Think Reality A3 when backgrounding an app was removed after 0.15.0. If a developer used the 0.15.0 SDK in their project and then updated the Spandragon Spaces plugin to a later version, the setting from 0.15.0 would be cached by Unity for subsequent builds. This may cause crashes or black screens. To avoid this issue do a clean build instead of an incremental build or delete the project's library folder.
Hand Tracking issues
General
- Head movement may induce hand movement.
UX limitations
- Releasing object can only be performed with the Open Hand gesture.
- In some conditions, occlusion between hands may result in hand inversion between left and right.
- If the hand avatar is displayed, some jitter may be perceived on the finger tips. Displaying an avatar in an AR context is not recommended in general.
AR Foundation related issues
AR Raycast Hit reports wrong trackable ID on success
If Use Scene Understanding Plane Detection is enabled in the Plane Detection feature settings, the ARRaycastHit.trackableId
field will always return the trackableId of 0-0
as the session-unique identifier for the trackable that was hit. If Use Scene Understanding Plane Detection is disabled, the ARRaycastHit.trackableId
will return the trackableIds of the planes that the raycast has 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 (Experimental) feature is enabled. It is recommended to use the Spaces AR Mesh Manager Config as described in the perception sample description.
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.
From Snapdragon Spaces SDK version 0.20.0 , 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, ensure that the Dual Render Fusion feature is checked in the OpenXR Settings and that the smartphone device is running Snapdragon Spaces Services 0.13.0 or later. Additionally, validate that the project was built with OpenXR 1.6.0 or later.
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 (Experimental) 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 (Experimental) 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 (Experimental) feature is enabled.