{"id":706,"date":"2026-10-09T13:47:42","date_gmt":"2026-10-09T11:47:42","guid":{"rendered":"https:\/\/www.youbiquo.eu\/leonardoxr\/?page_id=706"},"modified":"2026-10-09T13:48:06","modified_gmt":"2026-10-09T11:48:06","slug":"samples-guide-leonardoxr-sdk","status":"publish","type":"page","link":"https:\/\/www.youbiquo.eu\/leonardoxr\/en\/leonardo-xr-manuali-duso\/samples-guide-leonardoxr-sdk\/","title":{"rendered":"Samples Guide \u2014 LeonardoXR SDK"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"706\" class=\"elementor elementor-706\" 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\">Samples Guide \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\tSamples Guide \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=\"samples-guide--leonardoxr-sdk\" class=\"code-line code-active-line\" dir=\"auto\" data-line=\"0\">Samples Guide \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 <strong>Base SDK:<\/strong> Snapdragon Spaces 1.0.4<\/p>\n<\/blockquote>\n<p class=\"code-line\" dir=\"auto\" data-line=\"6\">The samples are organized into two sections:<\/p>\n\n<ul class=\"code-line\" dir=\"auto\" data-line=\"8\">\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"8\"><strong>LeonardoXR Samples<\/strong> \u2014 samples specific to Leonardo XR&#8217;s proprietary features.<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"9\"><strong>Snapdragon Spaces Core Samples<\/strong> \u2014 samples provided by Qualcomm for base AR\/XR features.<\/li>\n<\/ul>\n\n<hr class=\"code-line\" dir=\"auto\" data-line=\"11\" \/>\n\n<h3 id=\"importazione-dei-samples\" class=\"code-line\" dir=\"auto\" data-line=\"13\">Importing the Samples<\/h3>\n<h4 id=\"snapdragon-spaces-core-samples\" class=\"code-line\" dir=\"auto\" data-line=\"15\">Snapdragon Spaces Core Samples<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"17\">The <strong>Core Samples<\/strong> package can be imported via <strong>Window > Package Manager > Snapdragon Spaces > Core Samples<\/strong>. After importing, add all scenes to the build through <strong>Window > XR > Snapdragon Spaces > Add Scenes to Build Settings<\/strong>.<\/p>\n\n<h4 id=\"leonardoxr-core-samples\" class=\"code-line\" dir=\"auto\" data-line=\"19\">LeonardoXR Core Samples<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"21\">The <strong>LeonardoXR Core Samples<\/strong> package can be imported via <strong>Window > Package Manager > LeonardoXR > Core Samples<\/strong>. After importing, the scenes are available in the <code>Samples\/LeonardoXR\/[version]\/Core Samples\/Scenes\/<\/code> folder.<\/p>\n\n\n<hr class=\"code-line\" dir=\"auto\" data-line=\"23\" \/>\n\n<h3 id=\"leonardoxr-samples\" class=\"code-line\" dir=\"auto\" data-line=\"25\">LeonardoXR Samples<\/h3>\n<h4 id=\"dual-camera-access-sample\" class=\"code-line\" dir=\"auto\" data-line=\"27\">Dual Camera Access Sample<\/h4>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"29\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"29\"><strong>\u26a0\ufe0f Documentation in preparation.<\/strong><\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"31\">This sample demonstrates how to access synchronized frames from Leonardo XR&#8217;s dual cameras using the Dual Camera Access feature.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"33\"><strong>Scene:<\/strong> <code>Samples\/LeonardoXR\/...\/Core Samples\/Scenes\/DualCameraAccess<\/code> <strong>Prerequisites:<\/strong> The <strong>Dual Camera Access<\/strong> feature enabled in the LeonardoXR feature group.<\/p>\n<\/blockquote>\n\n<hr class=\"code-line\" dir=\"auto\" data-line=\"36\" \/>\n\n<h4 id=\"qnn-inference-sample\" class=\"code-line\" dir=\"auto\" data-line=\"38\">QNN Inference Sample<\/h4>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"40\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"40\"><strong>\u26a0\ufe0f Documentation in preparation.<\/strong><\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"42\">This sample demonstrates how to load and run a neural inference model on Leonardo XR&#8217;s NPU using the QNN Inference Plugin.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"44\"><strong>Scene:<\/strong> <code>Samples\/LeonardoXR\/...\/Core Samples\/Scenes\/QnnInference<\/code> <strong>Prerequisites:<\/strong> The <strong>QNN Inference Plugin<\/strong> feature enabled in the LeonardoXR feature group.<\/p>\n<\/blockquote>\n\n<hr class=\"code-line\" dir=\"auto\" data-line=\"47\" \/>\n\n<h4 id=\"intercept-openxr-function-sample\" class=\"code-line\" dir=\"auto\" data-line=\"49\">Intercept OpenXR Function Sample<\/h4>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"51\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"51\"><strong>\u26a0\ufe0f Documentation in preparation.<\/strong><\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"53\">This sample demonstrates how to intercept low-level OpenXR functions using the InterceptOpenXRFunction feature.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"55\"><strong>Scene:<\/strong> <code>Samples\/LeonardoXR\/...\/Core Samples\/Scenes\/InterceptOpenXRFunction<\/code> <strong>Prerequisites:<\/strong> The <strong>Intercept OpenXR Function<\/strong> feature enabled in the LeonardoXR feature group.<\/p>\n<\/blockquote>\n\n<hr class=\"code-line\" dir=\"auto\" data-line=\"58\" \/>\n\n\n\n<hr class=\"code-line\" dir=\"auto\" data-line=\"60\" \/>\n\n<h3 id=\"snapdragon-spaces-core-samples-1\" class=\"code-line\" dir=\"auto\" data-line=\"62\">Snapdragon Spaces Core Samples<\/h3>\n<h4 id=\"local-anchors-sample\" class=\"code-line\" dir=\"auto\" data-line=\"64\">Local Anchors Sample<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"66\"><strong>Scene:<\/strong> <code>Samples\/Snapdragon Spaces\/...\/Core Samples\/Scenes\/Anchor<\/code><\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"68\">This sample demonstrates how to create and destroy local anchors to precisely track a point in the real world. It requires the <strong>Spatial Anchors<\/strong> feature enabled in OpenXR.<\/p>\n\n<h5 id=\"come-funziona\" class=\"code-line\" dir=\"auto\" data-line=\"70\">How It Works<\/h5>\n<p class=\"code-line\" dir=\"auto\" data-line=\"72\">A transparent positioning gizmo floats 1 meter in front of the camera. When <strong>Place anchor on surfaces<\/strong> is enabled, a ray is cast forward every frame. When a surface is hit, the gizmo turns yellow. Tapping the touchpad or using the gaze interactor creates an <code>ARAnchor<\/code> with a tracking gizmo.<\/p>\n\n<pre><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"74\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">OnAnchorsChanged<\/span>(<span class=\"hljs-params\">ARAnchorsChangedEventArgs args<\/span>)<\/span>\n{\n    <span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-keyword\">var<\/span> anchor <span class=\"hljs-keyword\">in<\/span> args.updated)\n    {\n        Destroy(anchor.transform.GetChild(<span class=\"hljs-number\">0<\/span>).gameObject);\n        <span class=\"hljs-keyword\">var<\/span> newGizmo = Instantiate(\n            anchor.trackingState == TrackingState.None\n                ? GizmoUntrackedAnchor\n                : GizmoTrackedAnchor);\n        newGizmo.transform.SetParent(anchor.transform, <span class=\"hljs-literal\">false<\/span>);\n    }\n}\n<\/code><\/pre><h5 id=\"salvataggio-eliminazione-e-caricamento-degli-anchor\" class=\"code-line\" dir=\"auto\" data-line=\"89\">Saving, Deleting, and Loading Anchors<\/h5>\n<ul class=\"code-line\" dir=\"auto\" data-line=\"91\">\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"91\">Enable <strong>Save new anchors to local store<\/strong> to persist each new anchor.<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"92\">A white cube on the gizmo = saved and tracked anchor; red cube = not tracked.<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"93\"><strong>Load All Saved Anchors<\/strong> \u2014 loads and attempts to locate all stored anchors.<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"94\"><strong>Clear Store<\/strong> \u2014 deletes all stored anchors (does not destroy anchors already loaded).<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"95\"><strong>Destroy All Anchors<\/strong> \u2014 destroys all active anchor GameObjects (with a short delay).<\/li>\n<\/ul>\n\n<hr class=\"code-line\" dir=\"auto\" data-line=\"97\" \/>\n\n<h4 id=\"hand-tracking-sample\" class=\"code-line\" dir=\"auto\" data-line=\"99\">Hand Tracking Sample<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"101\"><strong>Scene:<\/strong> <code>Samples\/Snapdragon Spaces\/...\/Core Samples\/Scenes\/HandTracking<\/code><\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"103\">Demonstrates hand joint visualization and gesture recognition using the QCHT interaction package. Requires the <strong>Hand Tracking<\/strong> feature and the QCHT \/ XR Hands packages.<\/p>\n\n\n<hr class=\"code-line\" dir=\"auto\" data-line=\"105\" \/>\n\n<h4 id=\"hit-testing-sample\" class=\"code-line\" dir=\"auto\" data-line=\"107\">Hit Testing Sample<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"109\"><strong>Scene:<\/strong> <code>Samples\/Snapdragon Spaces\/...\/Core Samples\/Scenes\/HitTesting<\/code><\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"111\">Demonstrates continuous hit testing via raycasting against real-world planes and meshes using <code>ARRaycastManager<\/code>. The sample shows how to place virtual objects on detected surfaces.<\/p>\n\n\n<hr class=\"code-line\" dir=\"auto\" data-line=\"113\" \/>\n\n<h4 id=\"image-tracking-sample\" class=\"code-line\" dir=\"auto\" data-line=\"115\">Image Tracking Sample<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"117\"><strong>Scene:<\/strong> <code>Samples\/Snapdragon Spaces\/...\/Core Samples\/Scenes\/ImageTracking<\/code><\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"119\">Demonstrates tracking of printed reference images and overlaying virtual content. Supports static and mutable image libraries.<\/p>\n\n\n<hr class=\"code-line\" dir=\"auto\" data-line=\"121\" \/>\n\n<h4 id=\"plane-detection-sample\" class=\"code-line\" dir=\"auto\" data-line=\"123\">Plane Detection Sample<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"125\"><strong>Scene:<\/strong> <code>Samples\/Snapdragon Spaces\/...\/Core Samples\/Scenes\/PlaneDetection<\/code><\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"127\">Demonstrates the detection and visualization of horizontal and vertical planes using <code>ARPlaneManager<\/code>. Supports optional detection modes and convex hull planes.<\/p>\n\n<hr class=\"code-line\" dir=\"auto\" data-line=\"129\" \/>\n<h4 id=\"camera-frame-access-sample\" class=\"code-line\" dir=\"auto\" data-line=\"131\">Camera Frame Access Sample<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"133\"><strong>Scene:<\/strong> <code>Samples\/Snapdragon Spaces\/...\/Core Samples\/Scenes\/CameraFrameAccess<\/code><\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"135\">Demonstrates the retrieval of raw camera frames (YUV \/ YUYV) from the device using <code>ARCameraManager<\/code>. Includes sensor extrinsics, camera count queries, and GPU-accelerated frame access.<\/p>\n\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"137\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"137\"><strong>Important:<\/strong> Requires <strong>Allow &#8216;unsafe&#8217; Code<\/strong> enabled in Player Settings.<\/p>\n<\/blockquote>\n\n<hr class=\"code-line\" dir=\"auto\" data-line=\"139\" \/>\n\n<h4 id=\"spatial-meshing-sample\" class=\"code-line\" dir=\"auto\" data-line=\"141\">Spatial Meshing Sample<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"143\"><strong>Scene:<\/strong> <code>Samples\/Snapdragon Spaces\/...\/Core Samples\/Scenes\/SpatialMeshing<\/code><\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"145\">Demonstrates real-time environmental meshing using <code>ARMeshManager<\/code>. Includes an opacity slider and the optional <code>SpacesARMeshManagerConfig<\/code> component.<\/p>\n\n<hr class=\"code-line\" dir=\"auto\" data-line=\"147\" \/>\n\n<h4 id=\"qr-code-tracking-sample\" class=\"code-line\" dir=\"auto\" data-line=\"149\">QR Code Tracking Sample<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"151\"><strong>Scene:<\/strong> <code>Samples\/Snapdragon Spaces\/...\/Core Samples\/Scenes\/QRCodeTracking<\/code><\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"153\">Demonstrates QR code scanning and tracking via <code>SpacesQrCodeManager<\/code>. Multiple tracking modes are available.<\/p>\n\n<hr class=\"code-line\" dir=\"auto\" data-line=\"155\" \/>\n\n<h4 id=\"xr-interaction-toolkit-sample\" class=\"code-line\" dir=\"auto\" data-line=\"157\">XR Interaction Toolkit Sample<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"159\"><strong>Scene:<\/strong> <code>Samples\/Snapdragon Spaces\/...\/Core Samples\/Scenes\/XRInteractionToolkit<\/code><\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"161\">Demonstrates standard XR Interaction Toolkit interactions (ray interactors, direct interactors, teleportation) in a Snapdragon Spaces project. Compatible with LeonardoXR configuration.<\/p>\n\n<hr class=\"code-line\" dir=\"auto\" data-line=\"163\" \/>\n\n<h4 id=\"componenti-di-interazione\" class=\"code-line\" dir=\"auto\" data-line=\"165\">Interaction Components<\/h4>\n<h5 id=\"composition-layer-components\" class=\"code-line\" dir=\"auto\" data-line=\"167\">Composition Layer Components<\/h5>\n<p class=\"code-line\" dir=\"auto\" data-line=\"169\">The <strong>Spaces Composition Layer<\/strong> renders textures directly to the HMD, bypassing post-processing steps. Supported geometry types are <strong>Quad<\/strong>, <strong>Cylinder<\/strong>, <strong>Sphere<\/strong>, and <strong>Cube<\/strong>. Useful for high-resolution UI or elements that must maintain quality regardless of scene effects.<\/p>\n\n<hr class=\"code-line\" dir=\"auto\" data-line=\"171\" \/>\n\n<h4 id=\"sample-aggiuntivi\" class=\"code-line\" dir=\"auto\" data-line=\"173\">Additional Samples<\/h4>\n<table class=\"code-line\" dir=\"auto\" data-line=\"175\">\n<thead class=\"code-line\" dir=\"auto\" data-line=\"175\">\n<tr class=\"code-line\" dir=\"auto\" data-line=\"175\">\n<th>Sample<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"code-line\" dir=\"auto\" data-line=\"177\">\n<tr class=\"code-line\" dir=\"auto\" data-line=\"177\">\n<td>Display Refresh Rate<\/td>\n<td>Runtime querying and setting of the display refresh rate via the <code>XR_EXT_display_refresh_rate<\/code> extension.<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"178\">\n<td>Performance Settings<\/td>\n<td>Setting CPU\/GPU performance levels via the <code>XR_EXT_performance_settings<\/code> extension.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\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>Samples Guide \u2014 LeonardoXR SDK Samples Guide \u2014 LeonardoXR SDK Samples Guide \u2014 LeonardoXR SDK Version: 1.0.2 Target Device: Youbiquo Leonardo XR Base SDK: Snapdragon Spaces 1.0.4 The samples are organized into two sections: LeonardoXR Samples \u2014 samples specific to Leonardo XR&#8217;s proprietary features. Snapdragon Spaces Core Samples \u2014 samples provided by Qualcomm for base AR\/XR features. Importing the Samples Snapdragon Spaces Core Samples The Core Samples package can be imported via Window > Package Manager > Snapdragon Spaces > Core Samples. After importing, add all scenes to the build through Window > XR > Snapdragon Spaces > Add Scenes to Build Settings. LeonardoXR Core Samples The LeonardoXR Core Samples package can be imported via Window > Package Manager > LeonardoXR > Core Samples. After importing, the scenes are available in the Samples\/LeonardoXR\/[version]\/Core Samples\/Scenes\/ folder. LeonardoXR Samples Dual Camera Access Sample \u26a0\ufe0f Documentation in preparation. This sample demonstrates how to access synchronized frames from Leonardo XR&#8217;s dual cameras using the Dual Camera Access feature. Scene: Samples\/LeonardoXR\/&#8230;\/Core Samples\/Scenes\/DualCameraAccess Prerequisites: The Dual Camera Access feature enabled in the LeonardoXR feature group. QNN Inference Sample \u26a0\ufe0f Documentation in preparation. This sample demonstrates how to load and run a neural inference model on Leonardo XR&#8217;s NPU using the QNN Inference Plugin. Scene: Samples\/LeonardoXR\/&#8230;\/Core Samples\/Scenes\/QnnInference Prerequisites: The QNN Inference Plugin feature enabled in the LeonardoXR feature group. Intercept OpenXR Function Sample \u26a0\ufe0f Documentation in preparation. This sample demonstrates how to intercept low-level OpenXR functions using the InterceptOpenXRFunction feature. Scene: Samples\/LeonardoXR\/&#8230;\/Core Samples\/Scenes\/InterceptOpenXRFunction Prerequisites: The Intercept OpenXR Function feature enabled in the LeonardoXR feature group. Snapdragon Spaces Core Samples Local Anchors Sample Scene: Samples\/Snapdragon Spaces\/&#8230;\/Core Samples\/Scenes\/Anchor This sample demonstrates how to create and destroy local anchors to precisely track a point in the real world. It requires the Spatial Anchors feature enabled in OpenXR. How It Works A transparent positioning gizmo floats 1 meter in front of the camera. When Place anchor on surfaces is enabled, a ray is cast forward every frame. When a surface is hit, the gizmo turns yellow. Tapping the touchpad or using the gaze interactor creates an ARAnchor with a tracking gizmo. private void OnAnchorsChanged(ARAnchorsChangedEventArgs args) { foreach (var anchor in args.updated) { Destroy(anchor.transform.GetChild(0).gameObject); var newGizmo = Instantiate( anchor.trackingState == TrackingState.None ? GizmoUntrackedAnchor : GizmoTrackedAnchor); newGizmo.transform.SetParent(anchor.transform, false); } } Saving, Deleting, and Loading Anchors Enable Save new anchors to local store to persist each new anchor. A white cube on the gizmo = saved and tracked anchor; red cube = not tracked. Load All Saved Anchors \u2014 loads and attempts to locate all stored anchors. Clear Store \u2014 deletes all stored anchors (does not destroy anchors already loaded). Destroy All Anchors \u2014 destroys all active anchor GameObjects (with a short delay). Hand Tracking Sample Scene: Samples\/Snapdragon Spaces\/&#8230;\/Core Samples\/Scenes\/HandTracking Demonstrates hand joint visualization and gesture recognition using the QCHT interaction package. Requires the Hand Tracking feature and the QCHT \/ XR Hands packages. Hit Testing Sample Scene: Samples\/Snapdragon Spaces\/&#8230;\/Core Samples\/Scenes\/HitTesting Demonstrates continuous hit testing via raycasting against real-world planes and meshes using ARRaycastManager. The sample shows how to place virtual objects on detected surfaces. Image Tracking Sample Scene: Samples\/Snapdragon Spaces\/&#8230;\/Core Samples\/Scenes\/ImageTracking Demonstrates tracking of printed reference images and overlaying virtual content. Supports static and mutable image libraries. Plane Detection Sample Scene: Samples\/Snapdragon Spaces\/&#8230;\/Core Samples\/Scenes\/PlaneDetection Demonstrates the detection and visualization of horizontal and vertical planes using ARPlaneManager. Supports optional detection modes and convex hull planes. Camera Frame Access Sample Scene: Samples\/Snapdragon Spaces\/&#8230;\/Core Samples\/Scenes\/CameraFrameAccess Demonstrates the retrieval of raw camera frames (YUV \/ YUYV) from the device using ARCameraManager. Includes sensor extrinsics, camera count queries, and GPU-accelerated frame access. Important: Requires Allow &#8216;unsafe&#8217; Code enabled in Player Settings. Spatial Meshing Sample Scene: Samples\/Snapdragon Spaces\/&#8230;\/Core Samples\/Scenes\/SpatialMeshing Demonstrates real-time environmental meshing using ARMeshManager. Includes an opacity slider and the optional SpacesARMeshManagerConfig component. QR Code Tracking Sample Scene: Samples\/Snapdragon Spaces\/&#8230;\/Core Samples\/Scenes\/QRCodeTracking Demonstrates QR code scanning and tracking via SpacesQrCodeManager. Multiple tracking modes are available. XR Interaction Toolkit Sample Scene: Samples\/Snapdragon Spaces\/&#8230;\/Core Samples\/Scenes\/XRInteractionToolkit Demonstrates standard XR Interaction Toolkit interactions (ray interactors, direct interactors, teleportation) in a Snapdragon Spaces project. Compatible with LeonardoXR configuration. Interaction Components Composition Layer Components The Spaces Composition Layer renders textures directly to the HMD, bypassing post-processing steps. Supported geometry types are Quad, Cylinder, Sphere, and Cube. Useful for high-resolution UI or elements that must maintain quality regardless of scene effects. Additional Samples Sample Description Display Refresh Rate Runtime querying and setting of the display refresh rate via the XR_EXT_display_refresh_rate extension. Performance Settings Setting CPU\/GPU performance levels via the XR_EXT_performance_settings extension.<\/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-706","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/pages\/706","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=706"}],"version-history":[{"count":4,"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/pages\/706\/revisions"}],"predecessor-version":[{"id":710,"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/pages\/706\/revisions\/710"}],"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=706"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}