# Unreal Engine Changelog

[0.19.1] - 2023-12-12

# Added

  • ⚠ Experimental Custom QR Code Tracking Subsystem support and new sample scene.

# Changed

  • The C++ library inside the Android OpenXR loader archive has been changed with a static one to avoid conflicts with potential other plugin archives using the libc++_shared.so file. ⚠ Warning: This might break functionality with the Snapdragon Spaces Services prior to version 0.19.1.
[0.18.0] - 2023-10-31

# Added

# Changed

  • Improved camera frame data exposed.

# Fixed

  • Improved stability of Spaces Launcher.
  • Improved stability of multiple images tracking.
[0.17.0] - 2023-09-28

# Added

  • Exposed reason for anchors failing to persist.
  • Exposed hand joints as sockets.
  • Exposed quality of the camera frame.

# Changed

  • Anchors are created asynchronously for better performance.
  • Improved host controller and Spaces Launcher. Changed activity names from com.qualcomm.snapdragon.spaces.customlauncher.SpacesLauncher to com.qualcomm.snapdragon.spaces.splashscreen.SplashScreenActivity.

# Fixed

  • Added a build option when the app is not launching on viewer and doesn't use host controller.
[0.16.0] - 2023-08-31

# Added

  • Expose camera extrinsic for frame delivery.
  • Camera Frame Access is also available using VR devices.

# Changed

  • Check Installed Runtime is deprecated from the OpenXR base runtime settings
  • Added closing the app functionality with the back button press of the device.
  • Samples - Removed closing the app functionality with a long menu button press.
  • Samples - Anchor can be placed using only the pinch gesture.

# Fixed

  • Improved plugin stability.
  • Removed some dependencies from the Snapdragon Spaces Plugin with the the Snapdragon Spaces Samples plugin.
  • Removed the video image compressed in Camera Frame Access.
[0.15.0] - 2023-07-31

# Added

# Changed

  • The sample's gaze controller has been changed to leverage the Stereo Layers (opens new window) component of Unreal Engine. This will lead to a more stable gaze pointer because no movement induced post-processing is applied to the element.
  • Camera Frame Access OpenXR calls support the latest OpenXR runtime specification.
  • Camera Frame Access is blocked on VRX to further improve the implementation for the device.
  • Samples - Hand Tracking sample has been revamped.
  • Samples - Image Tracking sample's target augmentation has been changed.
  • Samples - Floating panel distance has been changed.

# Fixed

  • Hand interactions are also working without showing the mesh and only joints.
  • Switching between image tracking modes should work without any issues.
  • Hands won't disappear on map change anymore (if they are also active in the new map).
  • Samples - Removed mip map settings from textures in the sample to avoid Vulkan related crashes.
[0.14.0] - 2023-05-31

# Added

  • Extended hand interaction possibilities to support proximal interactions by extending the Spaces Hand Interactable Component and Spaces Hand Interaction Actor.
  • The start-up procedure before launching the main application activity includes a check for the Display over other app setting of the Snapdragon Spaces Services. In case the camera permission was not granted for the runtime or that setting is not enabled, a prompt will be shown that can forward the user to the Snapdragon Spaces Services' configuration page.
  • Spatial Meshing can handle a possible EHMDTrackingOrigin::Stage or EHMDTrackingOrigin::Floor related camera height offset coming from runtime side. Before, the mesh would have appeared at a wrong position.
  • New API to access YUV camera frame data as described in the sample description.

# Changed

  • Samples - UI panels are now always following the gaze.
  • Samples - The path of the samples content has been changed as described in the Unreal Engine setup guide.
  • Samples - Hand rays will always stay visible as opposed to being disabled when there is no interaction.
  • Samples - Gaze interaction reticle distance has been increased.

# Fixed

  • Wrong manifest modification when building an application with the Export Headless option.
  • Samples - Setting the gaze interaction reticle distance via DefaultDistance is working as expected now.
  • Grab interaction with Hand Tracking has been improved.
[0.13.0] - 2023-05-04

# Added

  • Samples - Hand Tracking has been enabled as the default input mode.
  • Samples - New Hand Tracking components for distal interactions.
  • Optional image tracking modes can be set for better control over the underlying image tracking algorithm's calculation periods. For more information regarding this change please visit the Image Tracking section.
  • Additional project setting to prevent application screen timeout.
  • The Camera Frame Access feature is calculating the RGB frame asynchronously for better performance.
  • New custom node "Toggle Spaces Feature" to start perception features as an alternative to "Toggle AR Capture".

# Changed

  • Samples - Changed appearance of all the samples.
  • Added screen orientation "Landscape Left" as a mandatory setting again.
  • The "Point" hand gesture was marked as deprecated.
  • Code refinements and updates of the SpacesLauncher.aar and ServicesHelper.aar archives inside the package.
  • Arrow scroll direction inverted in the info panel when using gaze.
  • Hit Testing and Plane Detection lifecycle improvements and changes:
    • Removed the distance limitation that was set internally for AR Raycasts.
    • Plane extents' calculation has been changed and can break backwards compatibility.
  • The Plane Detection, Image Tracking and Hit Testing subsystems will ask for the runtime camera permissions instead of the application camera permissions when the Scene Understanding backend is disabled.

# Fixed

  • Fixed crash when running hand tracking in the editor.
  • Fixed crash when std::join was called outside the application process, e.g. in the Snapdragon Spaces Services process or in 3rd party libraries.
  • Fixed the perception feature loading so that they are only loaded when needed.
  • The underlying Hit Testing, Plane Detection and Spatial Meshing provider stops correctly if it's not needed anymore. In older runtimes, this behavior could break expected application functionality, as the provider can't be started within 20–40 seconds. Therefore, this fix can break backwards compatibility.
  • Fixed memory leak when using Spatial Meshing.
[0.12.1] - 2023-04-03

# Added

  • Hand Tracking mesh has been added as an AR Capture mode and the old way of getting the hand mesh has been deprecated.
  • Support for UE5.0.

# Changed

  • Hit Testing visualization has been refined.

# Fixed

  • Samples - Mentions of ARAnchor and Raycast have been removed from blueprints.
  • Samples - Gaze pointer is always drawn on top of 3D content.
  • Hit Testing isn't causing an issue anymore if the hit distance is set to infinity.
  • Camera Frame Access improvement to prevent crash in certain conditions.
[0.11.1] - 2023-02-14

# Added

  • ⚠ Experimental Spatial Meshing Subsystem support and new sample scene.
  • ⚠ Experimental Camera Frame Access support and new sample scene.
  • Passthrough support for MR devices.
  • Additional options in the plugin settings:
    • Export Headless: Enabling this will export the apk without the launcher tag and make it invisible in the App Launcher.
    • Alternate Start Activity: This value allows setting another activity than the Unreal Engine default one, that should be started from the SpacesLauncherActivity.
    • Skip Permission Checks: Enabling this will skip permission checks done upon startup of the application.
  • New XR controller model including button and joystick animations.
  • Added controller haptics.

# Changed

  • Samples - UI shows a warning message if a perception subsystem hasn't been started or camera permissions are not enabled.
  • Samples - Host controller ray will be reset after switching to it.
  • The default Hit Testing backend has been changed to the XR_APILAYER_QTI_scene_understanding layer from the runtime.
  • The default Plane Detection backend has been changed to the XR_APILAYER_QTI_scene_understanding layer from the runtime.

# Fixed

  • Fixed wrong OpenXR struct initializations in OpenXR features.
[0.9.0] - 2022-11-24

# Added

# Changed

  • Re-Center button of the host controller is resetting the ray to the head pose forward instead of the session origin.
  • Samples - Added Hit Testing for anchor placement in the anchor sample.
  • Samples - Changed rendering mode to forward.
  • Changed input naming and requires to setup input bindings again in the Project Settings.

# Fixed

  • Samples - Fixed the hit testing offset when pawn is teleported in real time.
  • Samples - Fixed display overlap issue.
[0.8.0] - 2022-10-13

# Added

  • Samples - New legend panel in the anchor sample scene to clarify what the different gizmo visualizations mean.

# Changed

  • Application lifecycle improvements allow Spaces apps to be started sequentially without the need of force stopping the Snapdragon Spaces Services.
  • ⚠ Experimental Spaces Anchor Store load and save calls are multithreaded now. Loading saved anchors don't block the main thread anymore.
  • Host controller archive was updated with better touchpad visuals.

# Fixed

  • Removed warnings regarding missing engine version
  • Removed unused references to SteamVR in example project
  • Samples - Hit Testing behaves correctly when Pawn position has been moved
[0.7.0] - 2022-08-31

# Added

# Changed

  • Host controller archive was updated with a light/dark mode setting and a haptic feedback toggle.
  • Samples - Raycast Subsystem supports continuous hit testing with updated sample scene.
  • Samples - Component version panel includes a scroll view now to account for more components in the future.
  • Updated Snapdragon Spaces Services included in the developer package.

# Fixed

  • Build issues with incremental builds have been fixed.
[0.6.1] - 2022-07-22

# Added

  • Added camera permission check for the Snapdragon Spaces Services on application launch, with a prompt to enable it in the Snapdragon Spaces Services Android settings (if it wasn't given before).
[0.6.0] - 2022-07-21

# Added

  • Image Tracking support and new sample scene.
  • ⚠ Experimental Raycast support and new sample scene.
  • Samples - Component version info accessible through the main menu.
  • Samples - Controller type (gaze or device pointer) is being saved across app starts and scene switches.

# Changed

[0.5.0] - 2022-06-01

# Added

  • Plane Detection support and new sample scene.
  • Launch Spaces Controller and Use Custom Controller options added to the plugin settings.
  • Added Custom Controller Package folder with an Android Studio project for building custom Android archives into the developer package.

# Changed

  • Host controller was moved out of Snapdragon Spaces Services and into the Unreal Engine plugin as an Android archive.
  • Updated Snapdragon Spaces Services included in the developer package.

# Fixed

  • Jitter issue for head locked content.
  • Samples - Floating UI panels correctly keep their distance, when moving towards them.
  • Samples - Refined GazeInteractor calculation to get the horizontal half independent of platform.
[0.4.1] - 2022-04-28

# Fixed

  • Updated Snapdragon Spaces Services included in the developer package, which fixed reading wrong values from config for ThinkReality A3.
[0.4.0] - 2022-04-28

# Added

  • Added support for motorola edge+, motorola edge 30 pro.
  • Samples - A quit button was added to the main menu to quit the application.
  • The application correctly launches on the viewer device without the need for an adb launch command.

# Changed

  • Host controller updated with new UI.
  • Former SM8450 QRD device not supported anymore.
  • Updated OpenXR runtime with plane detection tracking layer.

# Fixed

  • Samples - Gaze pointer size was decreased.
[0.3.0] - 2022-03-15

# Added

  • ARPin support and new sample map.
  • Host controller support.
  • Samples - Screen timeout is disabled in the BP_Pawn through the ControlScreensaver node.
  • Samples - The Tracking Origin is reset on every map change. This is a value that can be set in the BP_Pawn component.

# Changed

  • Updated OpenXR runtime with anchor layer.
  • Samples - The Interaction sample map is enabled again.
  • Samples - The Head Tracking Sample was renamed to Positional Tracking Sample.

# Fixed

  • Samples - Player mesh used in Positional Tracking Sample was fixed.
  • Samples - Additional cosmetic improvements.
[0.2.0] - 2022-02-01

# Added

  • The Snapdragon Spaces plugin (which requires the OpenXR plugin).
  • Samples - Main menu and sample map for demoing 6DoF head movement.
  • Samples - (Disabled) sample map for demoing interaction with 3D objects and 2D UI.