<?xml version="1.0"?>
<oembed><version>1.0</version><provider_name>Geckode!</provider_name><provider_url>https://www.youbiquo.eu/geckode</provider_url><author_name>Aida Garfami</author_name><author_url>https://www.youbiquo.eu/geckode/author/aida-garfami/</author_url><title>Features - Geckode!</title><type>rich</type><width>600</width><height>338</height><html>&lt;blockquote class="wp-embedded-content" data-secret="zGjsrqNJUb"&gt;&lt;a href="https://www.youbiquo.eu/geckode/en/features-2/"&gt;Features&lt;/a&gt;&lt;/blockquote&gt;&lt;iframe sandbox="allow-scripts" security="restricted" src="https://www.youbiquo.eu/geckode/en/features-2/embed/#?secret=zGjsrqNJUb" width="600" height="338" title="&#x201C;Features&#x201D; &#x2014; Geckode!" data-secret="zGjsrqNJUb" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" class="wp-embedded-content"&gt;&lt;/iframe&gt;&lt;script&gt;
/*! This file is auto-generated */
!function(d,l){"use strict";l.querySelector&amp;&amp;d.addEventListener&amp;&amp;"undefined"!=typeof URL&amp;&amp;(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&amp;&amp;!/[^a-zA-Z0-9]/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret="'+t.secret+'"]'),o=l.querySelectorAll('blockquote[data-secret="'+t.secret+'"]'),c=new RegExp("^https?:$","i"),i=0;i&lt;o.length;i++)o[i].style.display="none";for(i=0;i&lt;a.length;i++)s=a[i],e.source===s.contentWindow&amp;&amp;(s.removeAttribute("style"),"height"===t.message?(1e3&lt;(r=parseInt(t.value,10))?r=1e3:~~r&lt;200&amp;&amp;(r=200),s.height=r):"link"===t.message&amp;&amp;(r=new URL(s.getAttribute("src")),n=new URL(t.value),c.test(n.protocol))&amp;&amp;n.host===r.host&amp;&amp;l.activeElement===s&amp;&amp;(d.top.location.href=t.value))}},d.addEventListener("message",d.wp.receiveEmbedMessage,!1),l.addEventListener("DOMContentLoaded",function(){for(var e,t,s=l.querySelectorAll("iframe.wp-embedded-content"),r=0;r&lt;s.length;r++)(t=(e=s[r]).getAttribute("data-secret"))||(t=Math.random().toString(36).substring(2,12),e.src+="#?secret="+t,e.setAttribute("data-secret",t)),e.contentWindow.postMessage({message:"ready",secret:t},"*")},!1)))}(window,document);
//# sourceURL=https://www.youbiquo.eu/geckode/wp-includes/js/wp-embed.min.js
&lt;/script&gt;
</html><description>Features Features &#x2014; LeonardoXR SDK Features Version 1.0.2 Device: Youbiquo Leonardo XR Base SDK: Snapdragon Spaces 1.0.4 This page documents the features available in the LeonardoXR SDK, organised in two sections: Snapdragon Spaces Features&#xA0;&#x2014; AR/XR functionality provided by the Snapdragon Spaces platform, accessible through AR Foundation. LeonardoXR Features&#xA0;&#x2014; proprietary features specific to Leonardo XR. Snapdragon Spaces Features Local Anchors How to Enable Go to&#xA0;Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Spatial Anchors&#xA0;and enable the feature. Spaces Anchor Store NOTE Look around the environment to generate a better tracking map and reduce save/load times. Saving multiple anchors simultaneously blocks the main thread &#x2014; use the callback to save subsequent anchors sequentially. namespace Qualcomm.Snapdragon.Spaces { public class SpacesAnchorStore { public void ClearStore(); public void SaveAnchor(ARAnchor anchor, string anchorName, Action&lt;bool&gt; onSavedCallback = null); public void SaveAnchorWithResult(ARAnchor anchor, string anchorName, Action&lt;SaveAnchorResult&gt; callback = null); public void DeleteSavedAnchor(string anchorName); public void LoadSavedAnchor(string anchorName, Action&lt;bool&gt; onLoadedCallback = null); public void LoadAllSavedAnchors(Action&lt;bool&gt; onLoadedCallback = null); public string[] GetSavedAnchorNames(); public string GetSavedAnchorNameFromARAnchor(ARAnchor anchor); } } API Reference Method Description ClearStore() Clears the local anchor storage. SaveAnchor(...) Saves an ARAnchor by name or generated hash; optional callback on completion. SaveAnchorWithResult(...) Like SaveAnchor but returns a&#xA0;SaveAnchorResult&#xA0;enum. DeleteSavedAnchor(name) Deletes a saved anchor by name. LoadSavedAnchor(name, ...) Loads an anchor from storage and attempts to localise it; fires&#xA0;anchorsChanged.added. LoadAllSavedAnchors(...) Loads all stored anchors. GetSavedAnchorNames() Returns all saved anchor names. GetSavedAnchorNameFromARAnchor(anchor) Returns the name of a saved anchor from a tracked ARAnchor, or empty string if not saved. SaveAnchorResult Values Value Meaning PENDING Anchor is awaiting save. SAVED Successfully saved. FAILURE_RUNTIME_ERROR Runtime error. FAILURE_STORE_NOT_LOADED Anchor Store failed to load. FAILURE_INSUFFICIENT_QUALITY Environment map quality is insufficient. Hit Testing Enable via&#xA0;Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Hit Testing. Uses the&#xA0;AR Raycast Manager&#xA0;from AR Foundation (XRRaycastSubsystem). Supports continuous hit testing against real-world planes and meshes. The system casts a ray from the camera (or a specified point) and returns intersections with detected surfaces. Each hit contains position, normal and surface type (plane or mesh). List&lt;ARRaycastHit&gt; hits = new List&lt;ARRaycastHit&gt;();if (raycastManager.Raycast(screenCenter, hits, TrackableType.PlaneWithinPolygon)){Pose hitPose = hits[0].pose;// Place AR content at hitPose.position} CAUTION&#xA0;ARRaycastHit.trackableId&#xA0;always returns&#xA0;0-0. (Known Issue) Image Tracking Enable via&#xA0;Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Image Tracking. Uses the&#xA0;AR Tracked Image Manager&#xA0;(XRImageTrackingSubsystem). Supports static and mutable (runtime) reference image libraries. // Mutable library examplevar library = trackedImageManager.CreateRuntimeLibrary() as MutableRuntimeReferenceImageLibrary;await library.ScheduleAddImageWithValidationJob(texture, "image-name", 0.1f); // 0.1f = physical width in metrestrackedImageManager.referenceLibrary = library; Plane Detection Enable via&#xA0;Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Plane Detection. Uses the&#xA0;AR Plane Manager&#xA0;(XRPlaneSubsystem).&#xA0;Use Scene Understanding Backend&#xA0;is enabled by default. arPlaneManager.requestedDetectionMode = PlaneDetectionMode.Horizontal | PlaneDetectionMode.Vertical; CAUTION&#xA0;Plane Detection enters an infinite mesh triangulation loop in AR Foundation 6.0. In Unity 6 + OpenXR 1.15.1, Plane Detection does not work in Dual Render Fusion apps. Camera Frame Access Enable via&#xA0;Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Camera Frame Access. Uses the&#xA0;AR Camera Manager&#xA0;(XRCameraSubsystem). Key capabilities: Raw camera frame access in YUV (Y&#x2019;UV420sp) and YUYV / YUY2 formats. XRCpuImage.GetPlane(int)&#xA0;for CPU-side image access. XRCpuImage.ConvertAsync&#xA0;for asynchronous conversion. GPU-accelerated RGB frame access for AiO devices (via OpenGL). Sensor extrinsics / pose retrieval via&#xA0;InputBindings. NOTE&#xA0;Enable&#xA0;Allow &#x2018;unsafe&#x2019; Code&#xA0;in&#xA0;Player Settings &gt; Android &gt; Other Settings &gt; Script Compilation&#xA0;when using the Camera Frame Access sample. Disable AR Camera Background to avoid rendering issues. void OnCameraFrameReceived(ARCameraFrameEventArgs args){if (cameraManager.TryAcquireLatestCpuImage(out XRCpuImage image)){using (image){XRCpuImage.Plane yPlane = image.GetPlane(0); // Luminance plane// yPlane.data contains the raw data}}} Spatial Meshing Enable via&#xA0;Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Spatial Meshing. Uses the&#xA0;AR Mesh Manager&#xA0;(XRMeshSubsystem). The optional&#xA0;SpacesARMeshManagerConfig&#xA0;component controls mesh characteristics and camera height offsets for&#xA0;TrackingOriginMode.Floor. QR Code Tracking Enable via&#xA0;Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; QR Code Tracking. Uses the custom&#xA0;SpacesQrCodeManager&#xA0;component. Supports multiple tracking modes to control algorithm update frequency. // Editor build workaround (no simulation subsystem for QR Code Tracking) bool CheckSubsystem() { #if UNITY_EDITOR return arQrCodeManager.subsystem?.running ?? false; #else return true; #endif } Hand Tracking Enable via&#xA0;Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Hand Tracking. Hand Tracking is provided by the QCHT (Qualcomm Hand Tracking) plugin packages. LeonardoXR uses the Unity XR Hands package (v1.7.2) as the data access layer for joint data, integrated with QCHT extensions. NOTE&#xA0;For Hand Tracking to work correctly on LeonardoXR, the&#xA0;Hand Tracking Subsystem&#xA0;option must be active in&#xA0;All Features&#xA0;of OpenXR. For full Hand Tracking integration with XR Interaction Toolkit, see the Interaction Package Guides document. Foveated Rendering Enable via&#xA0;Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Foveated Rendering. Reduces GPU load by rendering the visual field periphery at lower resolution. Foveation settings persist after application pause and resume. Level Description None No reduction. Low Light reduction, imperceptible to most users. Medium Good quality/performance trade-off. High Maximum reduction; recommended only for heavily 3D content scenes. LeonardoXR Features The following features are specific to Leonardo XR and are not part of the base Snapdragon Spaces platform. Enable them via&#xA0;Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; LeonardoXR feature group. Dual Camera Access DOCUMENTATION IN PROGRESS&#xA0;This feature provides synchronised access to frames from both Leonardo XR cameras. Detailed API documentation, configuration and samples will be available in a future release. QNN Inference Plugin DOCUMENTATION IN PROGRESS&#xA0;This feature exposes Leonardo XR hardware neural inference capabilities via the Qualcomm Neural Network (QNN) runtime, enabling AI/ML models to run directly on the device NPU. Detailed API documentation, model conversion workflow and samples will be available in a future release. Intercept OpenXR Function DOCUMENTATION IN PROGRESS&#xA0;This advanced feature provides a mechanism to intercept and override low-level OpenXR functions. It is intended for specialised use cases requiring direct control over the OpenXR layer. Detailed documentation will be available in a future release.</description></oembed>
