{"id":701,"date":"2026-10-09T13:39:04","date_gmt":"2026-10-09T11:39:04","guid":{"rendered":"https:\/\/www.youbiquo.eu\/leonardoxr\/?page_id=701"},"modified":"2026-10-09T13:40:33","modified_gmt":"2026-10-09T11:40:33","slug":"features-leonardoxr-sdk","status":"publish","type":"page","link":"https:\/\/www.youbiquo.eu\/leonardoxr\/en\/leonardo-xr-manuali-duso\/features-leonardoxr-sdk\/","title":{"rendered":"Features \u2014 LeonardoXR SDK"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"701\" class=\"elementor elementor-701\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-85281d7 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"85281d7\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d04b0b7 elementor-widget elementor-widget-heading\" data-id=\"d04b0b7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Features \u2014 LeonardoXR SDK<\/h2>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-541389f e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"541389f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-df9a2de e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"df9a2de\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-69e47bc elementor-widget__width-initial elementor-toc--minimized-on-tablet elementor-widget elementor-widget-table-of-contents\" data-id=\"69e47bc\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;headings_by_tags&quot;:[&quot;h3&quot;,&quot;h4&quot;,&quot;h5&quot;,&quot;h6&quot;],&quot;exclude_headings_by_selector&quot;:&quot;footer&quot;,&quot;marker_view&quot;:&quot;bullets&quot;,&quot;icon&quot;:{&quot;value&quot;:&quot;far fa-dot-circle&quot;,&quot;library&quot;:&quot;fa-regular&quot;,&quot;rendered_tag&quot;:&quot;&lt;svg class=\\&quot;e-font-icon-svg e-far-dot-circle\\&quot; viewBox=\\&quot;0 0 512 512\\&quot; xmlns=\\&quot;http:\\\/\\\/www.w3.org\\\/2000\\\/svg\\&quot;&gt;&lt;path d=\\&quot;M256 56c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m0-48C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 168c-44.183 0-80 35.817-80 80s35.817 80 80 80 80-35.817 80-80-35.817-80-80-80z\\&quot;&gt;&lt;\\\/path&gt;&lt;\\\/svg&gt;&quot;},&quot;no_headings_message&quot;:&quot;Non sono state trovate intestazioni in questa pagina.&quot;,&quot;minimize_box&quot;:&quot;yes&quot;,&quot;minimized_on&quot;:&quot;tablet&quot;,&quot;hierarchical_view&quot;:&quot;yes&quot;,&quot;min_height&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"table-of-contents.default\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-toc__header\">\n\t\t\t\t\t\t<h2 class=\"elementor-toc__header-title\">\n\t\t\t\tFeatures \u2014 LeonardoXR SDK\t\t\t<\/h2>\n\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-toc__toggle-button elementor-toc__toggle-button--expand\" role=\"button\" tabindex=\"0\" aria-controls=\"elementor-toc__69e47bc\" aria-expanded=\"true\" aria-label=\"Open table of contents\"><svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-chevron-down\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\"><\/path><\/svg><\/div>\n\t\t\t\t<div class=\"elementor-toc__toggle-button elementor-toc__toggle-button--collapse\" role=\"button\" tabindex=\"0\" aria-controls=\"elementor-toc__69e47bc\" aria-expanded=\"true\" aria-label=\"Close table of contents\"><svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-chevron-up\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z\"><\/path><\/svg><\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<div id=\"elementor-toc__69e47bc\" class=\"elementor-toc__body\">\n\t\t\t<div class=\"elementor-toc__spinner-container\">\n\t\t\t\t<svg class=\"elementor-toc__spinner eicon-animation-spin e-font-icon-svg e-eicon-loading\" aria-hidden=\"true\" viewBox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M500 975V858C696 858 858 696 858 500S696 142 500 142 142 304 142 500H25C25 237 238 25 500 25S975 237 975 500 763 975 500 975Z\"><\/path><\/svg>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-677117a e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"677117a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1a4d842 elementor-widget elementor-widget-text-editor\" data-id=\"1a4d842\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h2 id=\"features--leonardoxr-sdk\" class=\"code-line\" dir=\"auto\" data-line=\"0\">Features \u2014 LeonardoXR SDK<\/h2>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"2\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"2\"><strong>Version:<\/strong> 1.0.2 <strong>Target Device:<\/strong> Youbiquo Leonardo XR<br \/><strong>Base SDK:<\/strong> Snapdragon Spaces 1.0.4<\/p>\n<\/blockquote>\n<p class=\"code-line\" dir=\"auto\" data-line=\"6\">This page documents the features available in the LeonardoXR SDK, organized into two sections:<\/p>\n<ul class=\"code-line\" dir=\"auto\" data-line=\"8\">\n<li class=\"code-line\" dir=\"auto\" data-line=\"8\"><strong>Snapdragon Spaces Features<\/strong> \u2014 AR\/XR features provided by the Snapdragon Spaces platform and accessible via AR Foundation.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"9\"><strong>LeonardoXR Features<\/strong> \u2014 proprietary features specific to Leonardo XR.<\/li>\n<\/ul>\n<hr class=\"code-line\" dir=\"auto\" data-line=\"11\" \/>\n<h3 id=\"snapdragon-spaces-features\" class=\"code-line\" dir=\"auto\" data-line=\"13\">Snapdragon Spaces Features<\/h3>\n<h4 id=\"local-anchors\" class=\"code-line\" dir=\"auto\" data-line=\"15\">Local Anchors<\/h4>\n<h5 id=\"come-abilitare\" class=\"code-line\" dir=\"auto\" data-line=\"17\">How to Enable<\/h5>\n<p class=\"code-line\" dir=\"auto\" data-line=\"19\">Navigate to <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android tab) &gt; OpenXR Feature Groups &gt; Snapdragon Spaces &gt; Spatial Anchors<\/strong> and enable the feature.<\/p>\n<h5 id=\"spaces-anchor-store-script\" class=\"code-line\" dir=\"auto\" data-line=\"21\">Spaces Anchor Store (Script)<\/h5>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"23\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"23\"><strong>Warning:<\/strong> Look around the environment to generate a better tracking map and reduce save\/load times. Saving multiple anchors simultaneously blocks the main thread \u2014 use the callback to save anchors sequentially.<\/p>\n<\/blockquote><p class=\"code-line\" dir=\"auto\" data-line=\"25\">This component requires an <strong>AR Anchor Manager<\/strong> (automatically added if missing). Add <strong>Spaces Anchor Store<\/strong> together with <strong>AR Anchor Manager<\/strong> to save anchors locally for future sessions.<\/p>\n<pre><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"27\"><span class=\"hljs-keyword\">namespace<\/span> <span class=\"hljs-title\">Qualcomm.Snapdragon.Spaces<\/span>\n{\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">SpacesAnchorStore<\/span>\n    {\n        <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">ClearStore<\/span>()<\/span>;\n\n        <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">SaveAnchor<\/span>(<span class=\"hljs-params\">ARAnchor anchor, <span class=\"hljs-built_in\">string<\/span> anchorName, Action&lt;<span class=\"hljs-built_in\">bool<\/span>&gt; onSavedCallback = <span class=\"hljs-literal\">null<\/span><\/span>)<\/span>;\n        <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">SaveAnchor<\/span>(<span class=\"hljs-params\">ARAnchor anchor, Action&lt;<span class=\"hljs-built_in\">bool<\/span>&gt; onSavedCallback = <span class=\"hljs-literal\">null<\/span><\/span>)<\/span>;\n        <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">SaveAnchorWithResult<\/span>(<span class=\"hljs-params\">ARAnchor anchor, <span class=\"hljs-built_in\">string<\/span> anchorName, Action&lt;SaveAnchorResult&gt; onSavedCallback = <span class=\"hljs-literal\">null<\/span><\/span>)<\/span>;\n        <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">SaveAnchorWithResult<\/span>(<span class=\"hljs-params\">ARAnchor anchor, Action&lt;SaveAnchorResult&gt; onSavedCallback = <span class=\"hljs-literal\">null<\/span><\/span>)<\/span>;\n\n        <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">DeleteSavedAnchor<\/span>(<span class=\"hljs-params\"><span class=\"hljs-built_in\">string<\/span> anchorName<\/span>)<\/span>;\n\n        <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">LoadSavedAnchor<\/span>(<span class=\"hljs-params\"><span class=\"hljs-built_in\">string<\/span> anchorName, Action&lt;<span class=\"hljs-built_in\">bool<\/span>&gt; onLoadedCallback = <span class=\"hljs-literal\">null<\/span><\/span>)<\/span>;\n        <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">LoadAllSavedAnchors<\/span>(<span class=\"hljs-params\">Action&lt;<span class=\"hljs-built_in\">bool<\/span>&gt; onLoadedCallback = <span class=\"hljs-literal\">null<\/span><\/span>)<\/span>;\n\n        <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-built_in\">string<\/span>[] <span class=\"hljs-title\">GetSavedAnchorNames<\/span>()<\/span>;\n        <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-built_in\">string<\/span> <span class=\"hljs-title\">GetSavedAnchorNameFromARAnchor<\/span>(<span class=\"hljs-params\">ARAnchor anchor<\/span>)<\/span>;\n    }\n}\n<\/code><\/pre><h5 id=\"api-reference\" class=\"code-line\" dir=\"auto\" data-line=\"50\">API Reference<\/h5>\n<table class=\"code-line\" dir=\"auto\" data-line=\"52\">\n<thead class=\"code-line\" dir=\"auto\" data-line=\"52\">\n<tr class=\"code-line\" dir=\"auto\" data-line=\"52\">\n<th>Method<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"code-line\" dir=\"auto\" data-line=\"54\">\n<tr class=\"code-line\" dir=\"auto\" data-line=\"54\">\n<td><code>ClearStore()<\/code><\/td>\n<td>Clears the local anchor storage.<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"55\">\n<td><code>SaveAnchor(...)<\/code><\/td>\n<td>Saves an <code>ARAnchor<\/code> by name or generated hash; optional callback on completion.<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"56\">\n<td><code>SaveAnchorWithResult(...)<\/code><\/td>\n<td>Like <code>SaveAnchor<\/code> but returns a <code>SaveAnchorResult<\/code> enum.<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"57\">\n<td><code>DeleteSavedAnchor(name)<\/code><\/td>\n<td>Deletes a saved anchor by name.<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"58\">\n<td><code>LoadSavedAnchor(name, ...)<\/code><\/td>\n<td>Loads an anchor from storage and attempts to localize it; fires <code>ARAnchorManager.anchorsChanged.added<\/code>.<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"59\">\n<td><code>LoadAllSavedAnchors(...)<\/code><\/td>\n<td>Loads all stored anchors.<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"60\">\n<td><code>GetSavedAnchorNames()<\/code><\/td>\n<td>Returns all saved anchor names.<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"61\">\n<td><code>GetSavedAnchorNameFromARAnchor(anchor)<\/code><\/td>\n<td>Returns the name of a saved anchor from a tracked <code>ARAnchor<\/code>, or an empty string if not saved.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h5 id=\"valori-di-saveanchorresult\" class=\"code-line\" dir=\"auto\" data-line=\"63\">Values of <code>SaveAnchorResult<\/code><\/h5>\n<table class=\"code-line\" dir=\"auto\" data-line=\"65\">\n<thead class=\"code-line\" dir=\"auto\" data-line=\"65\">\n<tr class=\"code-line\" dir=\"auto\" data-line=\"65\">\n<th>Value<\/th>\n<th>Meaning<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"code-line\" dir=\"auto\" data-line=\"67\">\n<tr class=\"code-line\" dir=\"auto\" data-line=\"67\">\n<td><code>PENDING<\/code><\/td>\n<td>The anchor is pending saving.<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"68\">\n<td><code>SAVED<\/code><\/td>\n<td>Saved successfully.<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"69\">\n<td><code>FAILURE_RUNTIME_ERROR<\/code><\/td>\n<td>Runtime error.<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"70\">\n<td><code>FAILURE_STORE_NOT_LOADED<\/code><\/td>\n<td>The anchor store failed to load.<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"71\">\n<td><code>FAILURE_INSUFFICIENT_QUALITY<\/code><\/td>\n<td>Environmental map quality is insufficient.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr class=\"code-line\" dir=\"auto\" data-line=\"73\" \/>\n<h3 id=\"hit-testing\" class=\"code-line\" dir=\"auto\" data-line=\"75\">Hit Testing<\/h3>\n<p class=\"code-line\" dir=\"auto\" data-line=\"77\">Enable via <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android tab) &gt; Snapdragon Spaces &gt; Hit Testing<\/strong>.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"79\">Uses AR Foundation&#8217;s <strong>AR Raycast Manager<\/strong> (<code>XRRaycastSubsystem<\/code>). Supports continuous hit testing against real-world planes and meshes.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"81\"><strong>How it works:<\/strong> The system casts a ray from the camera (or a specified point) and returns intersections with surfaces detected in the environment. Each hit contains position, normal, and surface type (plane or mesh).<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"83\"><strong>Typical usage:<\/strong><\/p>\n<pre><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"84\"><span class=\"hljs-comment\">\/\/ Add ARRaycastManager to the scene via XR Origin<\/span>\n<span class=\"hljs-comment\">\/\/ Then perform the raycast:<\/span>\nList&lt;ARRaycastHit&gt; hits = <span class=\"hljs-keyword\">new<\/span> List&lt;ARRaycastHit&gt;();\n<span class=\"hljs-keyword\">if<\/span> (raycastManager.Raycast(screenCenter, hits, TrackableType.PlaneWithinPolygon))\n{\n    Pose hitPose = hits[<span class=\"hljs-number\">0<\/span>].pose;\n    <span class=\"hljs-comment\">\/\/ Position AR content at hitPose.position<\/span>\n}\n<\/code><\/pre>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"95\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"95\"><strong>Known Issue:<\/strong> <code>ARRaycastHit.trackableId<\/code> always returns <code>0-0<\/code>.<\/p>\n<\/blockquote>\n<hr class=\"code-line\" dir=\"auto\" data-line=\"97\" \/>\n<h3 id=\"image-tracking\" class=\"code-line\" dir=\"auto\" data-line=\"99\">Image Tracking<\/h3>\n<p class=\"code-line\" dir=\"auto\" data-line=\"101\">Enable via <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android tab) &gt; Snapdragon Spaces &gt; Image Tracking<\/strong>.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"103\">Uses AR Foundation&#8217;s <strong>AR Tracked Image Manager<\/strong> (<code>XRImageTrackingSubsystem<\/code>). Supports static and mutable (runtime) reference image libraries. Optional tracking modes control the computation frequency.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"105\"><strong>Static image library:<\/strong> configured in the Inspector via an <code>XRReferenceImageLibrary<\/code> asset. Images are compiled into the build.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"107\"><strong>Mutable library:<\/strong> use <code>MutableRuntimeReferenceImageLibrary<\/code> to add images at runtime:<\/p>\n<pre><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"108\"><span class=\"hljs-keyword\">var<\/span> library = trackedImageManager.CreateRuntimeLibrary() <span class=\"hljs-keyword\">as<\/span> MutableRuntimeReferenceImageLibrary;\n<span class=\"hljs-keyword\">await<\/span> library.ScheduleAddImageWithValidationJob(texture, <span class=\"hljs-string\">\"image-name\"<\/span>, <span class=\"hljs-number\">0.1f<\/span>); <span class=\"hljs-comment\">\/\/ 0.1f = physical width in meters<\/span>\ntrackedImageManager.referenceLibrary = library;\n<\/code><\/pre>\n<hr class=\"code-line\" dir=\"auto\" data-line=\"114\" \/><h3 id=\"plane-detection\" class=\"code-line\" dir=\"auto\" data-line=\"116\">Plane Detection<\/h3>\n<p class=\"code-line\" dir=\"auto\" data-line=\"118\">Enable via <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android tab) &gt; Snapdragon Spaces &gt; Plane Detection<\/strong>.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"120\">Use AR Foundation&#8217;s <strong>AR Plane Manager<\/strong> (<code>XRPlaneSubsystem<\/code>). The <strong>Use Scene Understanding Backend<\/strong> option is enabled by default. Supports detection modes to control behavior. Convex hull planes can be enabled or disabled via the optional <code>SpacesARPlaneManagerConfig<\/code> component.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"122\"><strong>Available detection modes:<\/strong><\/p>\n<ul class=\"code-line\" dir=\"auto\" data-line=\"123\">\n<li class=\"code-line\" dir=\"auto\" data-line=\"123\"><code>PlaneDetectionMode.Horizontal<\/code> \u2014 detects horizontal surfaces only.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"124\"><code>PlaneDetectionMode.Vertical<\/code> \u2014 detects vertical surfaces only.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"125\"><code>PlaneDetectionMode.Horizontal | PlaneDetectionMode.Vertical<\/code> \u2014 detects both.<\/li>\n<\/ul>\n<p class=\"code-line\" dir=\"auto\" data-line=\"127\"><strong>PlaneManager Configuration:<\/strong><\/p>\n<pre><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"128\">arPlaneManager.requestedDetectionMode = PlaneDetectionMode.Horizontal | PlaneDetectionMode.Vertical;\n<\/code><\/pre>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"132\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"132\"><strong>Known Issue:<\/strong> Plane Detection enters an infinite mesh triangulation loop in AR Foundation 6.0.<br \/><strong>Known Issue (Unity 6 + OpenXR 1.15.1):<\/strong> Plane Detection does not work in Dual Render Fusion apps.<\/p>\n<\/blockquote>\n<hr class=\"code-line\" dir=\"auto\" data-line=\"135\" \/>\n<h3 id=\"camera-frame-access\" class=\"code-line\" dir=\"auto\" data-line=\"137\">Camera Frame Access<\/h3>\n<p class=\"code-line\" dir=\"auto\" data-line=\"139\">Enable via <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android tab) &gt; Snapdragon Spaces &gt; Camera Frame Access<\/strong>.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"141\">Use AR Foundation&#8217;s <strong>AR Camera Manager<\/strong> (<code>XRCameraSubsystem<\/code>). Key features include:<\/p>\n<ul class=\"code-line\" dir=\"auto\" data-line=\"143\">\n<li class=\"code-line\" dir=\"auto\" data-line=\"143\">Access to raw camera frames in YUV (<code>Y'UV420sp<\/code>) and YUYV \/ YUY2 formats.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"144\"><code>XRCpuImage.GetPlane(int)<\/code> for CPU-side image access.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"145\"><code>XRCpuImage.ConvertAsync<\/code> for asynchronous conversion.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"146\"><code>ARCameraManager.currentConfiguration<\/code> \/ <code>GetConfigurations<\/code> for resolution queries.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"147\"><code>ARCameraFrameEventArgs.displayMatrix<\/code> for display transformation.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"148\">GPU-accelerated RGB frame access for All-in-One devices (via OpenGL).<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"149\">Retrieval of sensor extrinsics \/ pose via InputBindings.<\/li>\n<\/ul><blockquote class=\"code-line\" dir=\"auto\" data-line=\"151\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"151\"><strong>Important:<\/strong> Enable <strong>Allow &#8216;unsafe&#8217; Code<\/strong> in <code>Player Settings > Android > Other Settings > Script Compilation<\/code> when using the Camera Frame Access sample. Disable <code>AR Camera Background<\/code> to avoid rendering issues.<\/p>\n<\/blockquote>\n<p class=\"code-line\" dir=\"auto\" data-line=\"153\"><strong>YUV Frame Access Example:<\/strong><\/p>\n<pre><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"154\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">OnCameraFrameReceived<\/span>(<span class=\"hljs-params\">ARCameraFrameEventArgs args<\/span>)<\/span>\n{\n    <span class=\"hljs-keyword\">if<\/span> (cameraManager.TryAcquireLatestCpuImage(<span class=\"hljs-keyword\">out<\/span> XRCpuImage image))\n    {\n        <span class=\"hljs-keyword\">using<\/span> (image)\n        {\n            <span class=\"hljs-comment\">\/\/ Access the Y plane (luminance)<\/span>\n            XRCpuImage.Plane yPlane = image.GetPlane(<span class=\"hljs-number\">0<\/span>);\n            <span class=\"hljs-comment\">\/\/ yPlane.data contains the raw data<\/span>\n        }\n    }\n}\n<\/code><\/pre>\n<hr class=\"code-line\" dir=\"auto\" data-line=\"169\" \/>\n<h3 id=\"spatial-meshing\" class=\"code-line\" dir=\"auto\" data-line=\"171\">Spatial Meshing<\/h3>\n<p class=\"code-line\" dir=\"auto\" data-line=\"173\">Enable via <strong>Project Settings > XR Plug-in Management > OpenXR (Android tab) > Snapdragon Spaces > Spatial Meshing<\/strong>.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"175\">Use AR Foundation&#8217;s <strong>AR Mesh Manager<\/strong> (<code>XRMeshSubsystem<\/code>). The optional <code>SpacesARMeshManagerConfig<\/code> component controls mesh characteristics and manages camera height offsets for <code>TrackingOriginMode.Floor<\/code>.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"177\"><strong>Configurable parameters via <code>SpacesARMeshManagerConfig<\/code>:<\/strong><\/p>\n<ul class=\"code-line\" dir=\"auto\" data-line=\"178\">\n<li class=\"code-line\" dir=\"auto\" data-line=\"178\">Mesh density and granularity.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"179\">Management of the camera&#8217;s vertical offset in Floor mode.<\/li>\n<\/ul><blockquote class=\"code-line\" dir=\"auto\" data-line=\"181\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"181\"><strong>Note:<\/strong> Some properties of <code>AR Mesh Manager<\/code> are not supported and generate runtime warnings.<\/p>\n<\/blockquote>\n<hr class=\"code-line\" dir=\"auto\" data-line=\"183\" \/>\n<h3 id=\"qr-code-tracking\" class=\"code-line\" dir=\"auto\" data-line=\"185\">QR Code Tracking<\/h3>\n<p class=\"code-line\" dir=\"auto\" data-line=\"187\">Enable via <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android tab) &gt; Snapdragon Spaces &gt; QR Code Tracking<\/strong>.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"189\">Use the custom <code>SpacesQrCodeManager<\/code> component. It supports multiple tracking modes to control the algorithm&#8217;s computation frequency.<\/p>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"191\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"191\"><strong>Note:<\/strong> There is no editor simulation subsystem for QR Code Tracking. Bypass subsystem checks in editor builds:<\/p>\n<pre><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"193\"><span class=\"hljs-function\"><span class=\"hljs-built_in\">bool<\/span> <span class=\"hljs-title\">CheckSubsystem<\/span>()<\/span>\n{\n<span class=\"hljs-meta\">#<span class=\"hljs-keyword\">if<\/span> UNITY_EDITOR<\/span>\n    <span class=\"hljs-keyword\">return<\/span> arQrCodeManager.subsystem?.running ?? <span class=\"hljs-literal\">false<\/span>;\n<span class=\"hljs-meta\">#<span class=\"hljs-keyword\">else<\/span><\/span>\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-literal\">true<\/span>;\n<span class=\"hljs-meta\">#<span class=\"hljs-keyword\">endif<\/span><\/span>\n}\n<\/code><\/pre>\n<\/blockquote>\n<hr class=\"code-line\" dir=\"auto\" data-line=\"204\" \/>\n<h3 id=\"hand-tracking\" class=\"code-line\" dir=\"auto\" data-line=\"206\">Hand Tracking<\/h3>\n<p class=\"code-line\" dir=\"auto\" data-line=\"208\">Enable via <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android tab) &gt; Snapdragon Spaces &gt; Hand Tracking<\/strong>.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"210\">Hand Tracking is provided by the QCHT (Qualcomm Hand Tracking) plugin packages. For LeonardoXR, the <strong>XR Hands<\/strong> package (v1.7.2) from Unity is used as the joint data access layer, integrated with QCHT extensions.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"212\">The <strong>Auto Start<\/strong> toggle in the OpenXR feature settings controls whether Hand Tracking automatically restarts when the headset reconnects after a disconnection.<\/p>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"214\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"214\"><strong>Warning:<\/strong> To ensure Hand Tracking works correctly on LeonardoXR, the <strong>Hand Tracking Subsystem<\/strong> option must be enabled in <strong>All Features<\/strong> within OpenXR.<\/p>\n<\/blockquote>\n<p class=\"code-line\" dir=\"auto\" data-line=\"216\">For complete Hand Tracking integration with the XR Interaction Toolkit, see the <a href=\"https:\/\/file+.vscode-resource.vscode-cdn.net\/Users\/eleonora\/Downloads\/SDKGuide\/06-interaction-package-guides.md\" data-href=\"06-interaction-package-guides.md\">Interaction Package Guides<\/a>.<\/p>\n<hr class=\"code-line\" dir=\"auto\" data-line=\"218\" \/>\n<h3 id=\"foveated-rendering\" class=\"code-line\" dir=\"auto\" data-line=\"220\">Foveated Rendering<\/h3>\n<p class=\"code-line\" dir=\"auto\" data-line=\"222\">Enable via <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android tab) &gt; Snapdragon Spaces &gt; Foveated Rendering<\/strong>.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"224\">Foveated rendering reduces GPU load by rendering the peripheral field of view at a lower resolution, concentrating resolution at the center of gaze. Foveation settings persist after pausing and resuming the application.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"226\"><strong>Available foveation levels:<\/strong><\/p>\n<ul class=\"code-line\" dir=\"auto\" data-line=\"227\">\n<li class=\"code-line\" dir=\"auto\" data-line=\"227\"><code>None<\/code> \u2014 no reduction.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"228\"><code>Low<\/code> \u2014 light reduction, imperceptible to most users.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"229\"><code>Medium<\/code> \u2014 good balance between quality and performance.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"230\"><code>High<\/code> \u2014 maximum reduction, recommended only for scenes with heavy 3D content.<\/li>\n<\/ul>\n<hr class=\"code-line\" dir=\"auto\" data-line=\"232\" \/>\n<h3 id=\"leonardoxr-features\" class=\"code-line\" dir=\"auto\" data-line=\"234\">LeonardoXR Features<\/h3>\n<p class=\"code-line\" dir=\"auto\" data-line=\"236\">The following features are specific to Leonardo XR and are not part of the base Snapdragon Spaces platform.<\/p><p class=\"code-line\" dir=\"auto\" data-line=\"238\">Enable LeonardoXR features via <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android tab) &gt; LeonardoXR feature group<\/strong>.<\/p>\n<hr class=\"code-line\" dir=\"auto\" data-line=\"240\" \/>\n<h4 id=\"dual-camera-access\" class=\"code-line\" dir=\"auto\" data-line=\"242\">Dual Camera Access<\/h4>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"244\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"244\"><strong>\u26a0\ufe0f Documentation in preparation.<\/strong><\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"246\">This feature enables synchronized access to the frames from the Leonardo XR device&#8217;s two cameras. Detailed documentation on the API, configuration, and sample code will be available in a future version of the guide.<\/p>\n<\/blockquote>\n<hr class=\"code-line\" dir=\"auto\" data-line=\"248\" \/>\n<h4 id=\"qnn-inference-plugin\" class=\"code-line\" dir=\"auto\" data-line=\"250\">QNN Inference Plugin<\/h4>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"252\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"252\"><strong>\u26a0\ufe0f Documentation in preparation.<\/strong><\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"254\">This feature exposes the hardware neural inference capabilities of the Leonardo XR via the Qualcomm Neural Network (QNN) runtime. It enables running AI\/ML models directly on the device&#8217;s NPU. Detailed documentation on the API, model conversion workflow, and sample code will be available in a future version of the guide.<\/p>\n<\/blockquote>\n<hr class=\"code-line\" dir=\"auto\" data-line=\"256\" \/>\n<h4 id=\"intercept-openxr-function\" class=\"code-line code-active-line\" dir=\"auto\" data-line=\"258\">Intercept OpenXR Function<\/h4>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"260\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"260\"><strong>\u26a0\ufe0f Documentation in preparation.<\/strong><\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"262\">This advanced feature provides a mechanism to intercept and override low-level OpenXR functions. It is intended for specialized use cases requiring direct control over the OpenXR layer. Detailed documentation on usage will be available in a future version of the guide.<\/p>\n<\/blockquote>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Features \u2014 LeonardoXR SDK Features \u2014 LeonardoXR SDK Features \u2014 LeonardoXR SDK Version: 1.0.2 Target Device: Youbiquo Leonardo XRBase SDK: Snapdragon Spaces 1.0.4 This page documents the features available in the LeonardoXR SDK, organized into two sections: Snapdragon Spaces Features \u2014 AR\/XR features provided by the Snapdragon Spaces platform and accessible via AR Foundation. LeonardoXR Features \u2014 proprietary features specific to Leonardo XR. Snapdragon Spaces Features Local Anchors How to Enable Navigate to Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android tab) &gt; OpenXR Feature Groups &gt; Snapdragon Spaces &gt; Spatial Anchors and enable the feature. Spaces Anchor Store (Script) Warning: Look around the environment to generate a better tracking map and reduce save\/load times. Saving multiple anchors simultaneously blocks the main thread \u2014 use the callback to save anchors sequentially. This component requires an AR Anchor Manager (automatically added if missing). Add Spaces Anchor Store together with AR Anchor Manager to save anchors locally for future sessions. 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 SaveAnchor(ARAnchor anchor, Action&lt;bool&gt; onSavedCallback = null); public void SaveAnchorWithResult(ARAnchor anchor, string anchorName, Action&lt;SaveAnchorResult&gt; onSavedCallback = null); public void SaveAnchorWithResult(ARAnchor anchor, Action&lt;SaveAnchorResult&gt; onSavedCallback = 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(&#8230;) Saves an ARAnchor by name or generated hash; optional callback on completion. SaveAnchorWithResult(&#8230;) Like SaveAnchor but returns a SaveAnchorResult enum. DeleteSavedAnchor(name) Deletes a saved anchor by name. LoadSavedAnchor(name, &#8230;) Loads an anchor from storage and attempts to localize it; fires ARAnchorManager.anchorsChanged.added. LoadAllSavedAnchors(&#8230;) Loads all stored anchors. GetSavedAnchorNames() Returns all saved anchor names. GetSavedAnchorNameFromARAnchor(anchor) Returns the name of a saved anchor from a tracked ARAnchor, or an empty string if not saved. Values of SaveAnchorResult Value Meaning PENDING The anchor is pending saving. SAVED Saved successfully. FAILURE_RUNTIME_ERROR Runtime error. FAILURE_STORE_NOT_LOADED The anchor store failed to load. FAILURE_INSUFFICIENT_QUALITY Environmental map quality is insufficient. Hit Testing Enable via Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android tab) &gt; Snapdragon Spaces &gt; Hit Testing. Uses AR Foundation&#8217;s AR Raycast Manager (XRRaycastSubsystem). Supports continuous hit testing against real-world planes and meshes. How it works: The system casts a ray from the camera (or a specified point) and returns intersections with surfaces detected in the environment. Each hit contains position, normal, and surface type (plane or mesh). Typical usage: \/\/ Add ARRaycastManager to the scene via XR Origin \/\/ Then perform the raycast: List&lt;ARRaycastHit&gt; hits = new List&lt;ARRaycastHit&gt;(); if (raycastManager.Raycast(screenCenter, hits, TrackableType.PlaneWithinPolygon)) { Pose hitPose = hits[0].pose; \/\/ Position AR content at hitPose.position } Known Issue: ARRaycastHit.trackableId always returns 0-0. Image Tracking Enable via Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android tab) &gt; Snapdragon Spaces &gt; Image Tracking. Uses AR Foundation&#8217;s AR Tracked Image Manager (XRImageTrackingSubsystem). Supports static and mutable (runtime) reference image libraries. Optional tracking modes control the computation frequency. Static image library: configured in the Inspector via an XRReferenceImageLibrary asset. Images are compiled into the build. Mutable library: use MutableRuntimeReferenceImageLibrary to add images at runtime: var library = trackedImageManager.CreateRuntimeLibrary() as MutableRuntimeReferenceImageLibrary; await library.ScheduleAddImageWithValidationJob(texture, &#8220;image-name&#8221;, 0.1f); \/\/ 0.1f = physical width in meters trackedImageManager.referenceLibrary = library; Plane Detection Enable via Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android tab) &gt; Snapdragon Spaces &gt; Plane Detection. Use AR Foundation&#8217;s AR Plane Manager (XRPlaneSubsystem). The Use Scene Understanding Backend option is enabled by default. Supports detection modes to control behavior. Convex hull planes can be enabled or disabled via the optional SpacesARPlaneManagerConfig component. Available detection modes: PlaneDetectionMode.Horizontal \u2014 detects horizontal surfaces only. PlaneDetectionMode.Vertical \u2014 detects vertical surfaces only. PlaneDetectionMode.Horizontal | PlaneDetectionMode.Vertical \u2014 detects both. PlaneManager Configuration: arPlaneManager.requestedDetectionMode = PlaneDetectionMode.Horizontal | PlaneDetectionMode.Vertical; Known Issue: Plane Detection enters an infinite mesh triangulation loop in AR Foundation 6.0.Known Issue (Unity 6 + OpenXR 1.15.1): Plane Detection does not work in Dual Render Fusion apps. Camera Frame Access Enable via Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android tab) &gt; Snapdragon Spaces &gt; Camera Frame Access. Use AR Foundation&#8217;s AR Camera Manager (XRCameraSubsystem). Key features include: Access to raw camera frames in YUV (Y&#8217;UV420sp) and YUYV \/ YUY2 formats. XRCpuImage.GetPlane(int) for CPU-side image access. XRCpuImage.ConvertAsync for asynchronous conversion. ARCameraManager.currentConfiguration \/ GetConfigurations for resolution queries. ARCameraFrameEventArgs.displayMatrix for display transformation. GPU-accelerated RGB frame access for All-in-One devices (via OpenGL). Retrieval of sensor extrinsics \/ pose via InputBindings. Important: Enable Allow &#8216;unsafe&#8217; Code in Player Settings > Android > Other Settings > Script Compilation when using the Camera Frame Access sample. Disable AR Camera Background to avoid rendering issues. YUV Frame Access Example: void OnCameraFrameReceived(ARCameraFrameEventArgs args) { if (cameraManager.TryAcquireLatestCpuImage(out XRCpuImage image)) { using (image) { \/\/ Access the Y plane (luminance) XRCpuImage.Plane yPlane = image.GetPlane(0); \/\/ yPlane.data contains the raw data } } } Spatial Meshing Enable via Project Settings > XR Plug-in Management > OpenXR (Android tab) > Snapdragon Spaces > Spatial Meshing. Use AR Foundation&#8217;s AR Mesh Manager (XRMeshSubsystem). The optional SpacesARMeshManagerConfig component controls mesh characteristics and manages camera height offsets for TrackingOriginMode.Floor. Configurable parameters via SpacesARMeshManagerConfig: Mesh density and granularity. Management of the camera&#8217;s vertical offset in Floor mode. Note: Some properties of AR Mesh Manager are not supported and generate runtime warnings. QR Code Tracking Enable via Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android tab) &gt; Snapdragon Spaces &gt; QR Code Tracking. Use the custom SpacesQrCodeManager component. It supports multiple tracking modes to control the algorithm&#8217;s computation frequency. Note: There is no editor simulation subsystem for QR Code Tracking. Bypass subsystem checks in editor builds: bool CheckSubsystem() { #if UNITY_EDITOR return arQrCodeManager.subsystem?.running ?? false; #else return true; #endif } Hand Tracking Enable via Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android tab) &gt; Snapdragon Spaces &gt; Hand Tracking. Hand Tracking is provided by the QCHT (Qualcomm Hand Tracking) plugin packages. For LeonardoXR, the XR Hands package (v1.7.2) from Unity is used as the joint data access layer, integrated<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":614,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-701","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/pages\/701","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/comments?post=701"}],"version-history":[{"count":4,"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/pages\/701\/revisions"}],"predecessor-version":[{"id":705,"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/pages\/701\/revisions\/705"}],"up":[{"embeddable":true,"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/pages\/614"}],"wp:attachment":[{"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/media?parent=701"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}