{"id":981,"date":"2026-04-09T11:02:29","date_gmt":"2026-04-09T09:02:29","guid":{"rendered":"https:\/\/www.youbiquo.eu\/geckode\/?page_id=981"},"modified":"2026-04-10T15:20:13","modified_gmt":"2026-04-10T13:20:13","slug":"features","status":"publish","type":"page","link":"https:\/\/www.youbiquo.eu\/geckode\/features\/","title":{"rendered":"Funzionalit\u00e0"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"981\" class=\"elementor elementor-981\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-59a1b7c 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=\"59a1b7c\" 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-4552b6e elementor-widget elementor-widget-heading\" data-id=\"4552b6e\" 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\">Funzionalit\u00e0<\/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-af25e4d 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=\"af25e4d\" 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-03d1ffe 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=\"03d1ffe\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2d8b463 elementor-widget__width-initial elementor-toc--minimized-on-tablet elementor-widget elementor-widget-table-of-contents\" data-id=\"2d8b463\" 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\tFunzionalit\u00e0 \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__2d8b463\" 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__2d8b463\" 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__2d8b463\" 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-110d8e7 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=\"110d8e7\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5538572 elementor-widget elementor-widget-text-editor\" data-id=\"5538572\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<div class=\"flex flex-col text-sm pb-25\"><section class=\"text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" data-turn-id=\"request-WEB:119f0613-577a-4941-9ae3-9e56ef4eda49-2\" data-testid=\"conversation-turn-6\" data-scroll-anchor=\"true\" data-turn=\"assistant\"><div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\"><div class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\"><div class=\"flex max-w-full flex-col gap-4 grow\"><div class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;]:mt-1\" dir=\"auto\" tabindex=\"0\" data-message-author-role=\"assistant\" data-message-id=\"2a9d971a-dc83-46a7-a265-1004fe1160f3\" data-message-model-slug=\"gpt-5-3\" data-turn-start-message=\"true\"><div class=\"flex w-full flex-col gap-1 empty:hidden\"><h3 class=\"markdown prose dark:prose-invert w-full wrap-break-word light markdown-new-styling\">Funzionalit\u00e0<\/h3><ul><li class=\"markdown prose dark:prose-invert w-full wrap-break-word light markdown-new-styling\"><strong>Versione<\/strong> 1.0.2<\/li><li><strong>Dispositivo:<\/strong> Youbiquo Leonardo XR<\/li><li><strong>Base SDK:<\/strong> Snapdragon Spaces 1.0.4<\/li><\/ul><p>Questa pagina documenta le funzionalit\u00e0 disponibili nell\u2019SDK LeonardoXR, organizzate in due sezioni:<\/p><p data-start=\"428\" data-end=\"634\"><strong>Funzionalit\u00e0 di Snapdragon Spaces<\/strong> \u2014 funzionalit\u00e0 AR\/XR fornite dalla piattaforma Snapdragon Spaces, accessibili tramite AR Foundation.<br data-start=\"555\" data-end=\"558\" \/><strong>Funzionalit\u00e0 di LeonardoXR<\/strong> \u2014 funzionalit\u00e0 proprietarie specifiche di Leonardo XR.<\/p><h3>Funzionalit\u00e0 di Snapdragon Spaces<\/h3><h4>Ancore locali<\/h4><h5>Come abilitare<\/h5><p data-start=\"722\" data-end=\"863\">Vai su <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Spatial Anchors<\/strong> e abilita la funzione.<\/p><h5>Negozio Spaces Anchor<\/h5><p data-start=\"895\" data-end=\"1165\"><strong>NOTA<\/strong> Guarda l\u2019ambiente circostante per generare una mappa di tracking migliore e ridurre i tempi di salvataggio\/caricamento. Salvare pi\u00f9 anchor contemporaneamente blocca il thread principale \u2014 utilizza la callback per salvare gli anchor successivi in modo sequenziale.<\/p><pre><span style=\"color: #003366;\">namespace Qualcomm.Snapdragon.Spaces\n{\n    public class SpacesAnchorStore\n    {\n        public void ClearStore();\n        public void SaveAnchor(ARAnchor anchor, string anchorName, Action&lt;bool&gt; onSavedCallback = null);\n        public void SaveAnchorWithResult(ARAnchor anchor, string anchorName, Action&lt;SaveAnchorResult&gt; callback = null);\n        public void DeleteSavedAnchor(string anchorName);\n        public void LoadSavedAnchor(string anchorName, Action&lt;bool&gt; onLoadedCallback = null);\n        public void LoadAllSavedAnchors(Action&lt;bool&gt; onLoadedCallback = null);\n        public string[] GetSavedAnchorNames();\n        public string GetSavedAnchorNameFromARAnchor(ARAnchor anchor);\n    }\n}<\/span><\/pre><h4 class=\"code-line\" dir=\"auto\" data-line=\"40\">Riferimento API<\/h4><table class=\"code-line\" dir=\"auto\" data-line=\"42\"><thead class=\"code-line\" dir=\"auto\" data-line=\"42\"><tr class=\"code-line\" dir=\"auto\" data-line=\"42\"><th>Method<\/th><th>Description<\/th><\/tr><\/thead><tbody class=\"code-line\" dir=\"auto\" data-line=\"44\"><tr class=\"code-line\" dir=\"auto\" data-line=\"44\"><td><code>ClearStore()<\/code><\/td><td>Clears the local anchor storage.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"45\"><td><code>SaveAnchor(...)<\/code><\/td><td>Saves an ARAnchor by name or generated hash; optional callback on completion.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"46\"><td><code>SaveAnchorWithResult(...)<\/code><\/td><td>Like SaveAnchor but returns a\u00a0<code>SaveAnchorResult<\/code>\u00a0enum.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"47\"><td><code>DeleteSavedAnchor(name)<\/code><\/td><td>Deletes a saved anchor by name.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"48\"><td><code>LoadSavedAnchor(name, ...)<\/code><\/td><td>Loads an anchor from storage and attempts to localise it; fires\u00a0<code>anchorsChanged.added<\/code>.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"49\"><td><code>LoadAllSavedAnchors(...)<\/code><\/td><td>Loads all stored anchors.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"50\"><td><code>GetSavedAnchorNames()<\/code><\/td><td>Returns all saved anchor names.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"51\"><td><code>GetSavedAnchorNameFromARAnchor(anchor)<\/code><\/td><td>Returns the name of a saved anchor from a tracked ARAnchor, or empty string if not saved.<\/td><\/tr><\/tbody><\/table><p class=\"code-line\" dir=\"auto\" data-line=\"53\"><strong>Valori di SaveAnchorResult<\/strong><\/p><table class=\"code-line\" dir=\"auto\" data-line=\"55\"><thead class=\"code-line\" dir=\"auto\" data-line=\"55\"><tr class=\"code-line\" dir=\"auto\" data-line=\"55\"><th>Value<\/th><th>Meaning<\/th><\/tr><\/thead><tbody class=\"code-line\" dir=\"auto\" data-line=\"57\"><tr class=\"code-line\" dir=\"auto\" data-line=\"57\"><td><code>PENDING<\/code><\/td><td>Anchor is awaiting save.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"58\"><td><code>SAVED<\/code><\/td><td>Successfully saved.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"59\"><td><code>FAILURE_RUNTIME_ERROR<\/code><\/td><td>Runtime error.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"60\"><td><code>FAILURE_STORE_NOT_LOADED<\/code><\/td><td>Anchor Store failed to load.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"61\"><td><code>FAILURE_INSUFFICIENT_QUALITY<\/code><\/td><td>Environment map quality is insufficient.<\/td><\/tr><\/tbody><\/table><hr class=\"code-line\" dir=\"auto\" data-line=\"63\" \/><h5 id=\"hit-testing\" class=\"code-line\" dir=\"auto\" data-line=\"65\">Hit test<\/h5><p data-start=\"2713\" data-end=\"2837\">Abilita tramite <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Hit Testing<\/strong>.<\/p><p data-start=\"2839\" data-end=\"3174\">Utilizza AR Raycast Manager di AR Foundation (XRRaycastSubsystem). Supporta hit testing continuo contro piani e mesh del mondo reale. Il sistema lancia un raggio dalla camera (o da un punto specificato) e restituisce le intersezioni con le superfici rilevate. Ogni hit contiene posizione, normale e tipo di superficie (piano o mesh).<\/p><pre data-start=\"3176\" data-end=\"3183\"><span style=\"color: #003366;\">List&lt;ARRaycastHit&gt; hits = new List&lt;ARRaycastHit&gt;();<\/span><br \/><span style=\"color: #003366;\">if (raycastManager.Raycast(screenCenter, hits, TrackableType.PlaneWithinPolygon))<\/span><br \/><span style=\"color: #003366;\">{<\/span><br \/><span style=\"color: #003366;\">Pose hitPose = hits[0].pose;<\/span><br \/><span style=\"color: #003366;\">\/\/ Place AR content at hitPose.position<\/span><br \/><span style=\"color: #003366;\">}<\/span><\/pre><p data-start=\"3185\" data-end=\"3262\"><strong>ATTENZIONE<\/strong> ARRaycastHit.trackableId restituisce sempre 0-0 (problema noto).<\/p><h4>Tracciamento delle immagini<\/h4><p data-start=\"3289\" data-end=\"3558\">Abilita tramite <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Image Tracking<\/strong>. Utilizza <strong>AR Tracked Image Manager <\/strong>(XRImageTrackingSubsystem). Supporta librerie di immagini di riferimento statiche e modificabili (runtime).<\/p><pre data-start=\"3560\" data-end=\"3567\"><span style=\"color: #003366;\">\/\/ Mutable library example<\/span><br \/><span style=\"color: #003366;\">var library = trackedImageManager.CreateRuntimeLibrary() as MutableRuntimeReferenceImageLibrary;<\/span><br \/><span style=\"color: #003366;\">await library.ScheduleAddImageWithValidationJob(texture, \"image-name\", 0.1f); \/\/ 0.1f = physical width in metres<\/span><br \/><span style=\"color: #003366;\">trackedImageManager.referenceLibrary = library;<\/span><\/pre><h4>Rilevamento aereo<\/h4><p data-start=\"3595\" data-end=\"3835\">Abilita tramite <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Plane Detection<\/strong>. Utilizza <strong>AR Plane Manager<\/strong> (XRPlaneSubsystem). L\u2019opzione Use Scene Understanding Backend \u00e8 abilitata di default.<\/p><pre data-start=\"3837\" data-end=\"3844\"><span style=\"color: #003366;\">arPlaneManager.requestedDetectionMode = PlaneDetectionMode.Horizontal | PlaneDetectionMode.Vertical;<\/span><\/pre><p data-start=\"3846\" data-end=\"4032\"><strong>ATTENZIONE<\/strong> Plane Detection entra in un loop infinito di triangolazione mesh in <strong>AR Foundation 6.0. In Unity 6 + OpenXR 1.15.1<\/strong>, Plane Detection non funziona nelle app <strong>Dual Render Fusion<\/strong>.<\/p><h4>Accesso alla cornice della fotocamera<\/h4><p data-start=\"4064\" data-end=\"4244\">Abilita tramite <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Camera Frame Access. <\/strong>Utilizza <strong>AR Camera Manager <\/strong>(XRCameraSubsystem).<\/p><p data-start=\"4246\" data-end=\"4272\"><strong>Funzionalit\u00e0 principali:<\/strong><\/p><ul data-start=\"4274\" data-end=\"4605\"><li data-section-id=\"fc72xq\" data-start=\"4274\" data-end=\"4353\">Accesso ai frame raw della camera nei formati YUV (Y&#8217;UV420sp) e YUYV \/ YUY2<\/li><li data-section-id=\"rph8j\" data-start=\"4354\" data-end=\"4403\">XRCpuImage.GetPlane(int) per accesso lato CPU<\/li><li data-section-id=\"p31nwi\" data-start=\"4404\" data-end=\"4457\">XRCpuImage.ConvertAsync per conversione asincrona<\/li><li data-section-id=\"1qtmzs4\" data-start=\"4458\" data-end=\"4537\">Accesso a frame RGB accelerato via GPU per dispositivi AiO (tramite OpenGL)<\/li><li data-section-id=\"1l2ovio\" data-start=\"4538\" data-end=\"4605\">Recupero di extrinsics \/ posa del sensore tramite InputBindings<\/li><\/ul><p data-start=\"4607\" data-end=\"4831\"><strong>NOTA<\/strong> Abilita Allow &#8216;unsafe&#8217; Code in <strong>Player Settings &gt; Android &gt; Other Settings &gt; Script Compilation<\/strong> quando utilizzi il sample Camera Frame Access. Disabilita <strong>AR Camera Background<\/strong> per evitare problemi di rendering.<\/p><pre data-start=\"4833\" data-end=\"4840\"><span style=\"color: #003366;\">void OnCameraFrameReceived(ARCameraFrameEventArgs args)<\/span><br \/><span style=\"color: #003366;\">{<\/span><br \/><span style=\"color: #003366;\">if (cameraManager.TryAcquireLatestCpuImage(out XRCpuImage image))<\/span><br \/><span style=\"color: #003366;\">{<\/span><br \/><span style=\"color: #003366;\">using (image)<\/span><br \/><span style=\"color: #003366;\">{<\/span><br \/><span style=\"color: #003366;\">XRCpuImage.Plane yPlane = image.GetPlane(0); \/\/ Luminance plane<\/span><br \/><span style=\"color: #003366;\">\/\/ yPlane.data contains the raw data<\/span><br \/><span style=\"color: #003366;\">}<\/span><br \/><span style=\"color: #003366;\">}<\/span><br \/><span style=\"color: #003366;\">}<\/span><\/pre><h4>Mesh spaziale<\/h4><p data-start=\"4868\" data-end=\"5197\">Abilita tramite <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Spatial Meshing. Utilizza AR Mesh Manager<\/strong> (XRMeshSubsystem). Il componente opzionale <strong>SpacesARMeshManagerConfig<\/strong> controlla le caratteristiche della mesh e gli offset di altezza della camera per <strong>TrackingOriginMode.Floor.<\/strong><\/p><h4>Monitoraggio del codice QR<\/h4><p data-start=\"5226\" data-end=\"5514\">Abilita tramite <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; QR Code Tracking<\/strong>. Utilizza il componente personalizzato <strong>SpacesQrCodeManager<\/strong>. Supporta diverse modalit\u00e0 di tracking per controllare la frequenza di aggiornamento dell\u2019algoritmo.<\/p><pre data-start=\"5516\" data-end=\"5523\"><span style=\"color: #003366;\">\/\/ Editor build workaround (no simulation subsystem for QR Code Tracking)<\/span><br \/><span style=\"color: #003366;\">bool CheckSubsystem()<\/span><br \/><span style=\"color: #003366;\">{<\/span><br \/><span style=\"color: #003366;\">#if UNITY_EDITOR<\/span><br \/><span style=\"color: #003366;\">return arQrCodeManager.subsystem?.running ?? false;<\/span><br \/><span style=\"color: #003366;\">#else<\/span><br \/><span style=\"color: #003366;\">return true;<\/span><br \/><span style=\"color: #003366;\">#endif<\/span><br \/><span style=\"color: #003366;\">}<\/span><\/pre><h4>Tracciamento delle mani<\/h4><p data-start=\"5549\" data-end=\"5901\">Abilita tramite <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Hand Tracking<\/strong>. Il tracking delle mani \u00e8 fornito dai pacchetti plugin <strong>QCHT (Qualcomm Hand Tracking)<\/strong>. LeonardoXR utilizza il pacchetto <strong>Unity XR Hands (v1.7.2)<\/strong> come livello di accesso ai dati delle articolazioni, integrato con <strong>estensioni QCHT<\/strong>.<\/p><p data-start=\"5903\" data-end=\"6051\"><strong>NOTA<\/strong> Per far funzionare correttamente Hand Tracking su LeonardoXR, l\u2019opzione <strong>Hand Tracking Subsystem<\/strong> deve essere attiva in All Features di OpenXR.<\/p><p data-start=\"6053\" data-end=\"6160\">Per l\u2019integrazione completa con XR Interaction Toolkit, consulta il documento Interaction Package Guides.<\/p><h4>Rendering fovetato<\/h4><p data-start=\"6191\" data-end=\"6479\">Abilita tramite <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Foveated Rendering<\/strong>. Riduce il carico GPU renderizzando la periferia del campo visivo a risoluzione inferiore. Le impostazioni persistono dopo pausa e ripresa dell\u2019applicazione.<\/p><table class=\"code-line\" dir=\"auto\" data-line=\"175\"><thead class=\"code-line\" dir=\"auto\" data-line=\"175\"><tr class=\"code-line\" dir=\"auto\" data-line=\"175\"><th>Level<\/th><th>Description<\/th><\/tr><\/thead><tbody class=\"code-line\" dir=\"auto\" data-line=\"177\"><tr class=\"code-line\" dir=\"auto\" data-line=\"177\"><td>None<\/td><td>No reduction.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"178\"><td>Low<\/td><td>Light reduction, imperceptible to most users.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"179\"><td>Medium<\/td><td>Good quality\/performance trade-off.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"180\"><td>High<\/td><td>Maximum reduction; recommended only for heavily 3D content scenes.<\/td><\/tr><\/tbody><\/table><h3>Funzionalit\u00e0 di LeonardoXR<\/h3><p data-start=\"6919\" data-end=\"7161\">Le seguenti funzionalit\u00e0 sono specifiche di Leonardo XR e non fanno parte della piattaforma base Snapdragon Spaces. Abilitarle tramite <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; gruppo di funzionalit\u00e0 LeonardoXR.<\/strong><\/p><h4>Accesso alla doppia fotocamera<\/h4><p data-start=\"7192\" data-end=\"7412\">DOCUMENTAZIONE IN CORSO Questa funzionalit\u00e0 fornisce accesso sincronizzato ai frame di entrambe le camere Leonardo XR. Documentazione API dettagliata, configurazione ed esempi saranno disponibili in una futura release.<\/p><h4>Plugin di inferenza QNN<\/h4><p data-start=\"7445\" data-end=\"7807\">DOCUMENTAZIONE IN CORSO Questa funzionalit\u00e0 espone le capacit\u00e0 hardware di inferenza neurale di Leonardo XR tramite il runtime Qualcomm Neural Network (QNN), consentendo l\u2019esecuzione di modelli AI\/ML direttamente sulla NPU del dispositivo. Documentazione API dettagliata, workflow di conversione dei modelli ed esempi saranno disponibili in una futura release.<\/p><h4>Intercetta la funzione OpenXR<\/h4><p data-start=\"7845\" data-end=\"8148\">DOCUMENTAZIONE IN CORSO Questa funzionalit\u00e0 avanzata fornisce un meccanismo per intercettare e sovrascrivere funzioni OpenXR a basso livello. \u00c8 destinata a casi d\u2019uso specializzati che richiedono controllo diretto sul layer OpenXR. La documentazione dettagliata sar\u00e0 disponibile in una futura release.<\/p><\/div><\/div><\/div><\/div><p data-start=\"7845\" data-end=\"8148\">\u00a0<\/p><\/div><\/section><\/div>\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>Funzionalit\u00e0 Funzionalit\u00e0 \u2014 LeonardoXR SDK Funzionalit\u00e0 Versione 1.0.2 Dispositivo: Youbiquo Leonardo XR Base SDK: Snapdragon Spaces 1.0.4 Questa pagina documenta le funzionalit\u00e0 disponibili nell\u2019SDK LeonardoXR, organizzate in due sezioni: Funzionalit\u00e0 di Snapdragon Spaces \u2014 funzionalit\u00e0 AR\/XR fornite dalla piattaforma Snapdragon Spaces, accessibili tramite AR Foundation.Funzionalit\u00e0 di LeonardoXR \u2014 funzionalit\u00e0 proprietarie specifiche di Leonardo XR. Funzionalit\u00e0 di Snapdragon Spaces Ancore locali Come abilitare Vai su Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Spatial Anchors e abilita la funzione. Negozio Spaces Anchor NOTA Guarda l\u2019ambiente circostante per generare una mappa di tracking migliore e ridurre i tempi di salvataggio\/caricamento. Salvare pi\u00f9 anchor contemporaneamente blocca il thread principale \u2014 utilizza la callback per salvare gli anchor successivi in modo sequenziale. 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); } } Riferimento API 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\u00a0SaveAnchorResult\u00a0enum. DeleteSavedAnchor(name) Deletes a saved anchor by name. LoadSavedAnchor(name, &#8230;) Loads an anchor from storage and attempts to localise it; fires\u00a0anchorsChanged.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 empty string if not saved. Valori di SaveAnchorResult 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 test Abilita tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Hit Testing. Utilizza AR Raycast Manager di AR Foundation (XRRaycastSubsystem). Supporta hit testing continuo contro piani e mesh del mondo reale. Il sistema lancia un raggio dalla camera (o da un punto specificato) e restituisce le intersezioni con le superfici rilevate. Ogni hit contiene posizione, normale e tipo di superficie (piano o 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} ATTENZIONE ARRaycastHit.trackableId restituisce sempre 0-0 (problema noto). Tracciamento delle immagini Abilita tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Image Tracking. Utilizza AR Tracked Image Manager (XRImageTrackingSubsystem). Supporta librerie di immagini di riferimento statiche e modificabili (runtime). \/\/ Mutable library examplevar library = trackedImageManager.CreateRuntimeLibrary() as MutableRuntimeReferenceImageLibrary;await library.ScheduleAddImageWithValidationJob(texture, &#8220;image-name&#8221;, 0.1f); \/\/ 0.1f = physical width in metrestrackedImageManager.referenceLibrary = library; Rilevamento aereo Abilita tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Plane Detection. Utilizza AR Plane Manager (XRPlaneSubsystem). L\u2019opzione Use Scene Understanding Backend \u00e8 abilitata di default. arPlaneManager.requestedDetectionMode = PlaneDetectionMode.Horizontal | PlaneDetectionMode.Vertical; ATTENZIONE Plane Detection entra in un loop infinito di triangolazione mesh in AR Foundation 6.0. In Unity 6 + OpenXR 1.15.1, Plane Detection non funziona nelle app Dual Render Fusion. Accesso alla cornice della fotocamera Abilita tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Camera Frame Access. Utilizza AR Camera Manager (XRCameraSubsystem). Funzionalit\u00e0 principali: Accesso ai frame raw della camera nei formati YUV (Y&#8217;UV420sp) e YUYV \/ YUY2 XRCpuImage.GetPlane(int) per accesso lato CPU XRCpuImage.ConvertAsync per conversione asincrona Accesso a frame RGB accelerato via GPU per dispositivi AiO (tramite OpenGL) Recupero di extrinsics \/ posa del sensore tramite InputBindings NOTA Abilita Allow &#8216;unsafe&#8217; Code in Player Settings &gt; Android &gt; Other Settings &gt; Script Compilation quando utilizzi il sample Camera Frame Access. Disabilita AR Camera Background per evitare problemi di rendering. 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}}} Mesh spaziale Abilita tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Spatial Meshing. Utilizza AR Mesh Manager (XRMeshSubsystem). Il componente opzionale SpacesARMeshManagerConfig controlla le caratteristiche della mesh e gli offset di altezza della camera per TrackingOriginMode.Floor. Monitoraggio del codice QR Abilita tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; QR Code Tracking. Utilizza il componente personalizzato SpacesQrCodeManager. Supporta diverse modalit\u00e0 di tracking per controllare la frequenza di aggiornamento dell\u2019algoritmo. \/\/ Editor build workaround (no simulation subsystem for QR Code Tracking)bool CheckSubsystem(){#if UNITY_EDITORreturn arQrCodeManager.subsystem?.running ?? false;#elsereturn true;#endif} Tracciamento delle mani Abilita tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Hand Tracking. Il tracking delle mani \u00e8 fornito dai pacchetti plugin QCHT (Qualcomm Hand Tracking). LeonardoXR utilizza il pacchetto Unity XR Hands (v1.7.2) come livello di accesso ai dati delle articolazioni, integrato con estensioni QCHT. NOTA Per far funzionare correttamente Hand Tracking su LeonardoXR, l\u2019opzione Hand Tracking Subsystem deve essere attiva in All Features di OpenXR. Per l\u2019integrazione completa con XR Interaction Toolkit, consulta il documento Interaction Package Guides. Rendering fovetato Abilita tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Foveated Rendering. Riduce il carico GPU renderizzando la periferia del campo visivo a risoluzione inferiore. Le impostazioni persistono dopo pausa e ripresa dell\u2019applicazione. 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. Funzionalit\u00e0 di LeonardoXR Le seguenti funzionalit\u00e0 sono specifiche di Leonardo XR e non fanno parte della piattaforma base Snapdragon Spaces. Abilitarle tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; gruppo di funzionalit\u00e0 LeonardoXR. Accesso alla doppia fotocamera DOCUMENTAZIONE IN CORSO Questa funzionalit\u00e0 fornisce accesso sincronizzato ai frame di entrambe le camere Leonardo XR. Documentazione API dettagliata, configurazione ed esempi saranno disponibili in una futura release. Plugin di inferenza QNN DOCUMENTAZIONE IN CORSO Questa funzionalit\u00e0 espone le capacit\u00e0 hardware di inferenza neurale di Leonardo XR tramite il runtime Qualcomm Neural Network (QNN), consentendo l\u2019esecuzione di modelli AI\/ML direttamente sulla NPU del dispositivo. Documentazione API dettagliata, workflow di conversione dei modelli ed esempi saranno disponibili in una futura release.<\/p>\n","protected":false},"author":11,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-981","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Funzionalit\u00e0 - Geckode!<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.youbiquo.eu\/geckode\/features\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Funzionalit\u00e0 - Geckode!\" \/>\n<meta property=\"og:description\" content=\"Funzionalit\u00e0 Funzionalit\u00e0 \u2014 LeonardoXR SDK Funzionalit\u00e0 Versione 1.0.2 Dispositivo: Youbiquo Leonardo XR Base SDK: Snapdragon Spaces 1.0.4 Questa pagina documenta le funzionalit\u00e0 disponibili nell\u2019SDK LeonardoXR, organizzate in due sezioni: Funzionalit\u00e0 di Snapdragon Spaces \u2014 funzionalit\u00e0 AR\/XR fornite dalla piattaforma Snapdragon Spaces, accessibili tramite AR Foundation.Funzionalit\u00e0 di LeonardoXR \u2014 funzionalit\u00e0 proprietarie specifiche di Leonardo XR. Funzionalit\u00e0 di Snapdragon Spaces Ancore locali Come abilitare Vai su Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Spatial Anchors e abilita la funzione. Negozio Spaces Anchor NOTA Guarda l\u2019ambiente circostante per generare una mappa di tracking migliore e ridurre i tempi di salvataggio\/caricamento. Salvare pi\u00f9 anchor contemporaneamente blocca il thread principale \u2014 utilizza la callback per salvare gli anchor successivi in modo sequenziale. 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); } } Riferimento API 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\u00a0SaveAnchorResult\u00a0enum. DeleteSavedAnchor(name) Deletes a saved anchor by name. LoadSavedAnchor(name, ...) Loads an anchor from storage and attempts to localise it; fires\u00a0anchorsChanged.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. Valori di SaveAnchorResult 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 test Abilita tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Hit Testing. Utilizza AR Raycast Manager di AR Foundation (XRRaycastSubsystem). Supporta hit testing continuo contro piani e mesh del mondo reale. Il sistema lancia un raggio dalla camera (o da un punto specificato) e restituisce le intersezioni con le superfici rilevate. Ogni hit contiene posizione, normale e tipo di superficie (piano o 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} ATTENZIONE ARRaycastHit.trackableId restituisce sempre 0-0 (problema noto). Tracciamento delle immagini Abilita tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Image Tracking. Utilizza AR Tracked Image Manager (XRImageTrackingSubsystem). Supporta librerie di immagini di riferimento statiche e modificabili (runtime). \/\/ Mutable library examplevar library = trackedImageManager.CreateRuntimeLibrary() as MutableRuntimeReferenceImageLibrary;await library.ScheduleAddImageWithValidationJob(texture, &quot;image-name&quot;, 0.1f); \/\/ 0.1f = physical width in metrestrackedImageManager.referenceLibrary = library; Rilevamento aereo Abilita tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Plane Detection. Utilizza AR Plane Manager (XRPlaneSubsystem). L\u2019opzione Use Scene Understanding Backend \u00e8 abilitata di default. arPlaneManager.requestedDetectionMode = PlaneDetectionMode.Horizontal | PlaneDetectionMode.Vertical; ATTENZIONE Plane Detection entra in un loop infinito di triangolazione mesh in AR Foundation 6.0. In Unity 6 + OpenXR 1.15.1, Plane Detection non funziona nelle app Dual Render Fusion. Accesso alla cornice della fotocamera Abilita tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Camera Frame Access. Utilizza AR Camera Manager (XRCameraSubsystem). Funzionalit\u00e0 principali: Accesso ai frame raw della camera nei formati YUV (Y&#8217;UV420sp) e YUYV \/ YUY2 XRCpuImage.GetPlane(int) per accesso lato CPU XRCpuImage.ConvertAsync per conversione asincrona Accesso a frame RGB accelerato via GPU per dispositivi AiO (tramite OpenGL) Recupero di extrinsics \/ posa del sensore tramite InputBindings NOTA Abilita Allow &#8216;unsafe&#8217; Code in Player Settings &gt; Android &gt; Other Settings &gt; Script Compilation quando utilizzi il sample Camera Frame Access. Disabilita AR Camera Background per evitare problemi di rendering. 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}}} Mesh spaziale Abilita tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Spatial Meshing. Utilizza AR Mesh Manager (XRMeshSubsystem). Il componente opzionale SpacesARMeshManagerConfig controlla le caratteristiche della mesh e gli offset di altezza della camera per TrackingOriginMode.Floor. Monitoraggio del codice QR Abilita tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; QR Code Tracking. Utilizza il componente personalizzato SpacesQrCodeManager. Supporta diverse modalit\u00e0 di tracking per controllare la frequenza di aggiornamento dell\u2019algoritmo. \/\/ Editor build workaround (no simulation subsystem for QR Code Tracking)bool CheckSubsystem(){#if UNITY_EDITORreturn arQrCodeManager.subsystem?.running ?? false;#elsereturn true;#endif} Tracciamento delle mani Abilita tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Hand Tracking. Il tracking delle mani \u00e8 fornito dai pacchetti plugin QCHT (Qualcomm Hand Tracking). LeonardoXR utilizza il pacchetto Unity XR Hands (v1.7.2) come livello di accesso ai dati delle articolazioni, integrato con estensioni QCHT. NOTA Per far funzionare correttamente Hand Tracking su LeonardoXR, l\u2019opzione Hand Tracking Subsystem deve essere attiva in All Features di OpenXR. Per l\u2019integrazione completa con XR Interaction Toolkit, consulta il documento Interaction Package Guides. Rendering fovetato Abilita tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Foveated Rendering. Riduce il carico GPU renderizzando la periferia del campo visivo a risoluzione inferiore. Le impostazioni persistono dopo pausa e ripresa dell\u2019applicazione. 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. Funzionalit\u00e0 di LeonardoXR Le seguenti funzionalit\u00e0 sono specifiche di Leonardo XR e non fanno parte della piattaforma base Snapdragon Spaces. Abilitarle tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; gruppo di funzionalit\u00e0 LeonardoXR. Accesso alla doppia fotocamera DOCUMENTAZIONE IN CORSO Questa funzionalit\u00e0 fornisce accesso sincronizzato ai frame di entrambe le camere Leonardo XR. Documentazione API dettagliata, configurazione ed esempi saranno disponibili in una futura release. Plugin di inferenza QNN DOCUMENTAZIONE IN CORSO Questa funzionalit\u00e0 espone le capacit\u00e0 hardware di inferenza neurale di Leonardo XR tramite il runtime Qualcomm Neural Network (QNN), consentendo l\u2019esecuzione di modelli AI\/ML direttamente sulla NPU del dispositivo. Documentazione API dettagliata, workflow di conversione dei modelli ed esempi saranno disponibili in una futura release.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.youbiquo.eu\/geckode\/features\/\" \/>\n<meta property=\"og:site_name\" content=\"Geckode!\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-10T13:20:13+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.youbiquo.eu\/geckode\/features\/\",\"url\":\"https:\/\/www.youbiquo.eu\/geckode\/features\/\",\"name\":\"Funzionalit\u00e0 - Geckode!\",\"isPartOf\":{\"@id\":\"https:\/\/www.youbiquo.eu\/geckode\/#website\"},\"datePublished\":\"2026-04-09T09:02:29+00:00\",\"dateModified\":\"2026-04-10T13:20:13+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.youbiquo.eu\/geckode\/features\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.youbiquo.eu\/geckode\/features\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.youbiquo.eu\/geckode\/features\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.youbiquo.eu\/geckode\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Funzionalit\u00e0\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.youbiquo.eu\/geckode\/#website\",\"url\":\"https:\/\/www.youbiquo.eu\/geckode\/\",\"name\":\"Geckode!\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.youbiquo.eu\/geckode\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.youbiquo.eu\/geckode\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.youbiquo.eu\/geckode\/#organization\",\"name\":\"Geckode!\",\"url\":\"https:\/\/www.youbiquo.eu\/geckode\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.youbiquo.eu\/geckode\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.youbiquo.eu\/geckode\/wp-content\/uploads\/sites\/7\/2026\/02\/Gemini_Generated_Image_ns1dvvns1dvvns1d-e1774014413830.png\",\"contentUrl\":\"https:\/\/www.youbiquo.eu\/geckode\/wp-content\/uploads\/sites\/7\/2026\/02\/Gemini_Generated_Image_ns1dvvns1dvvns1d-e1774014413830.png\",\"width\":778,\"height\":778,\"caption\":\"Geckode!\"},\"image\":{\"@id\":\"https:\/\/www.youbiquo.eu\/geckode\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Funzionalit\u00e0 - Geckode!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.youbiquo.eu\/geckode\/features\/","og_locale":"en_US","og_type":"article","og_title":"Funzionalit\u00e0 - Geckode!","og_description":"Funzionalit\u00e0 Funzionalit\u00e0 \u2014 LeonardoXR SDK Funzionalit\u00e0 Versione 1.0.2 Dispositivo: Youbiquo Leonardo XR Base SDK: Snapdragon Spaces 1.0.4 Questa pagina documenta le funzionalit\u00e0 disponibili nell\u2019SDK LeonardoXR, organizzate in due sezioni: Funzionalit\u00e0 di Snapdragon Spaces \u2014 funzionalit\u00e0 AR\/XR fornite dalla piattaforma Snapdragon Spaces, accessibili tramite AR Foundation.Funzionalit\u00e0 di LeonardoXR \u2014 funzionalit\u00e0 proprietarie specifiche di Leonardo XR. Funzionalit\u00e0 di Snapdragon Spaces Ancore locali Come abilitare Vai su Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Spatial Anchors e abilita la funzione. Negozio Spaces Anchor NOTA Guarda l\u2019ambiente circostante per generare una mappa di tracking migliore e ridurre i tempi di salvataggio\/caricamento. Salvare pi\u00f9 anchor contemporaneamente blocca il thread principale \u2014 utilizza la callback per salvare gli anchor successivi in modo sequenziale. 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); } } Riferimento API 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\u00a0SaveAnchorResult\u00a0enum. DeleteSavedAnchor(name) Deletes a saved anchor by name. LoadSavedAnchor(name, ...) Loads an anchor from storage and attempts to localise it; fires\u00a0anchorsChanged.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. Valori di SaveAnchorResult 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 test Abilita tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Hit Testing. Utilizza AR Raycast Manager di AR Foundation (XRRaycastSubsystem). Supporta hit testing continuo contro piani e mesh del mondo reale. Il sistema lancia un raggio dalla camera (o da un punto specificato) e restituisce le intersezioni con le superfici rilevate. Ogni hit contiene posizione, normale e tipo di superficie (piano o 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} ATTENZIONE ARRaycastHit.trackableId restituisce sempre 0-0 (problema noto). Tracciamento delle immagini Abilita tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Image Tracking. Utilizza AR Tracked Image Manager (XRImageTrackingSubsystem). Supporta librerie di immagini di riferimento statiche e modificabili (runtime). \/\/ Mutable library examplevar library = trackedImageManager.CreateRuntimeLibrary() as MutableRuntimeReferenceImageLibrary;await library.ScheduleAddImageWithValidationJob(texture, \"image-name\", 0.1f); \/\/ 0.1f = physical width in metrestrackedImageManager.referenceLibrary = library; Rilevamento aereo Abilita tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Plane Detection. Utilizza AR Plane Manager (XRPlaneSubsystem). L\u2019opzione Use Scene Understanding Backend \u00e8 abilitata di default. arPlaneManager.requestedDetectionMode = PlaneDetectionMode.Horizontal | PlaneDetectionMode.Vertical; ATTENZIONE Plane Detection entra in un loop infinito di triangolazione mesh in AR Foundation 6.0. In Unity 6 + OpenXR 1.15.1, Plane Detection non funziona nelle app Dual Render Fusion. Accesso alla cornice della fotocamera Abilita tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Camera Frame Access. Utilizza AR Camera Manager (XRCameraSubsystem). Funzionalit\u00e0 principali: Accesso ai frame raw della camera nei formati YUV (Y&#8217;UV420sp) e YUYV \/ YUY2 XRCpuImage.GetPlane(int) per accesso lato CPU XRCpuImage.ConvertAsync per conversione asincrona Accesso a frame RGB accelerato via GPU per dispositivi AiO (tramite OpenGL) Recupero di extrinsics \/ posa del sensore tramite InputBindings NOTA Abilita Allow &#8216;unsafe&#8217; Code in Player Settings &gt; Android &gt; Other Settings &gt; Script Compilation quando utilizzi il sample Camera Frame Access. Disabilita AR Camera Background per evitare problemi di rendering. 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}}} Mesh spaziale Abilita tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Spatial Meshing. Utilizza AR Mesh Manager (XRMeshSubsystem). Il componente opzionale SpacesARMeshManagerConfig controlla le caratteristiche della mesh e gli offset di altezza della camera per TrackingOriginMode.Floor. Monitoraggio del codice QR Abilita tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; QR Code Tracking. Utilizza il componente personalizzato SpacesQrCodeManager. Supporta diverse modalit\u00e0 di tracking per controllare la frequenza di aggiornamento dell\u2019algoritmo. \/\/ Editor build workaround (no simulation subsystem for QR Code Tracking)bool CheckSubsystem(){#if UNITY_EDITORreturn arQrCodeManager.subsystem?.running ?? false;#elsereturn true;#endif} Tracciamento delle mani Abilita tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Hand Tracking. Il tracking delle mani \u00e8 fornito dai pacchetti plugin QCHT (Qualcomm Hand Tracking). LeonardoXR utilizza il pacchetto Unity XR Hands (v1.7.2) come livello di accesso ai dati delle articolazioni, integrato con estensioni QCHT. NOTA Per far funzionare correttamente Hand Tracking su LeonardoXR, l\u2019opzione Hand Tracking Subsystem deve essere attiva in All Features di OpenXR. Per l\u2019integrazione completa con XR Interaction Toolkit, consulta il documento Interaction Package Guides. Rendering fovetato Abilita tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Foveated Rendering. Riduce il carico GPU renderizzando la periferia del campo visivo a risoluzione inferiore. Le impostazioni persistono dopo pausa e ripresa dell\u2019applicazione. 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. Funzionalit\u00e0 di LeonardoXR Le seguenti funzionalit\u00e0 sono specifiche di Leonardo XR e non fanno parte della piattaforma base Snapdragon Spaces. Abilitarle tramite Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; gruppo di funzionalit\u00e0 LeonardoXR. Accesso alla doppia fotocamera DOCUMENTAZIONE IN CORSO Questa funzionalit\u00e0 fornisce accesso sincronizzato ai frame di entrambe le camere Leonardo XR. Documentazione API dettagliata, configurazione ed esempi saranno disponibili in una futura release. Plugin di inferenza QNN DOCUMENTAZIONE IN CORSO Questa funzionalit\u00e0 espone le capacit\u00e0 hardware di inferenza neurale di Leonardo XR tramite il runtime Qualcomm Neural Network (QNN), consentendo l\u2019esecuzione di modelli AI\/ML direttamente sulla NPU del dispositivo. Documentazione API dettagliata, workflow di conversione dei modelli ed esempi saranno disponibili in una futura release.","og_url":"https:\/\/www.youbiquo.eu\/geckode\/features\/","og_site_name":"Geckode!","article_modified_time":"2026-04-10T13:20:13+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.youbiquo.eu\/geckode\/features\/","url":"https:\/\/www.youbiquo.eu\/geckode\/features\/","name":"Funzionalit\u00e0 - Geckode!","isPartOf":{"@id":"https:\/\/www.youbiquo.eu\/geckode\/#website"},"datePublished":"2026-04-09T09:02:29+00:00","dateModified":"2026-04-10T13:20:13+00:00","breadcrumb":{"@id":"https:\/\/www.youbiquo.eu\/geckode\/features\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.youbiquo.eu\/geckode\/features\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.youbiquo.eu\/geckode\/features\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.youbiquo.eu\/geckode\/"},{"@type":"ListItem","position":2,"name":"Funzionalit\u00e0"}]},{"@type":"WebSite","@id":"https:\/\/www.youbiquo.eu\/geckode\/#website","url":"https:\/\/www.youbiquo.eu\/geckode\/","name":"Geckode!","description":"","publisher":{"@id":"https:\/\/www.youbiquo.eu\/geckode\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.youbiquo.eu\/geckode\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.youbiquo.eu\/geckode\/#organization","name":"Geckode!","url":"https:\/\/www.youbiquo.eu\/geckode\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.youbiquo.eu\/geckode\/#\/schema\/logo\/image\/","url":"https:\/\/www.youbiquo.eu\/geckode\/wp-content\/uploads\/sites\/7\/2026\/02\/Gemini_Generated_Image_ns1dvvns1dvvns1d-e1774014413830.png","contentUrl":"https:\/\/www.youbiquo.eu\/geckode\/wp-content\/uploads\/sites\/7\/2026\/02\/Gemini_Generated_Image_ns1dvvns1dvvns1d-e1774014413830.png","width":778,"height":778,"caption":"Geckode!"},"image":{"@id":"https:\/\/www.youbiquo.eu\/geckode\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.youbiquo.eu\/geckode\/wp-json\/wp\/v2\/pages\/981","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.youbiquo.eu\/geckode\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.youbiquo.eu\/geckode\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.youbiquo.eu\/geckode\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.youbiquo.eu\/geckode\/wp-json\/wp\/v2\/comments?post=981"}],"version-history":[{"count":38,"href":"https:\/\/www.youbiquo.eu\/geckode\/wp-json\/wp\/v2\/pages\/981\/revisions"}],"predecessor-version":[{"id":1120,"href":"https:\/\/www.youbiquo.eu\/geckode\/wp-json\/wp\/v2\/pages\/981\/revisions\/1120"}],"wp:attachment":[{"href":"https:\/\/www.youbiquo.eu\/geckode\/wp-json\/wp\/v2\/media?parent=981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}