{"id":1161,"date":"2026-04-09T15:51:14","date_gmt":"2026-04-09T13:51:14","guid":{"rendered":"https:\/\/www.youbiquo.eu\/geckode\/?page_id=1161"},"modified":"2026-04-10T18:14:01","modified_gmt":"2026-04-10T16:14:01","slug":"documentazione-di-leonardoxr-sdk","status":"publish","type":"page","link":"https:\/\/www.youbiquo.eu\/geckode\/documentazione-di-leonardoxr-sdk\/","title":{"rendered":"Documentazione di LeonardoXR SDK"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1161\" class=\"elementor elementor-1161\" 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\">Documentazione dell'SDK di LeonardoXR<\/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\tDocumentazione per sviluppatori \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<h1 id=\"youbiquo--leonardoxr-sdk--developer-documentation\" class=\"code-line code-active-line\" dir=\"auto\" data-line=\"0\">Youbiquo \u2014 SDK LeonardoXR \u2014 Documentazione per sviluppatori<\/h1><table class=\"code-line\" dir=\"auto\" data-line=\"2\"><thead class=\"code-line\" dir=\"auto\" data-line=\"2\"><tr class=\"code-line\" dir=\"auto\" data-line=\"2\"><th>Title<\/th><th>Description<\/th><\/tr><\/thead><tbody class=\"code-line\" dir=\"auto\" data-line=\"4\"><tr class=\"code-line\" dir=\"auto\" data-line=\"4\"><td><strong>SDK Version<\/strong><\/td><td>1.0.2<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"5\"><td><strong>Target Device<\/strong><\/td><td>Youbiquo Leonardo XR<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"6\"><td><strong>Spaces SDK<\/strong><\/td><td>Snapdragon Spaces 1.0.4<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"7\"><td><strong>Unity Version<\/strong><\/td><td>6000.0.58f2<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"8\"><td><strong>Language<\/strong><\/td><td>English<\/td><\/tr><\/tbody><\/table><hr class=\"code-line\" dir=\"auto\" data-line=\"10\" \/><h2 id=\"document-index\" class=\"code-line\" dir=\"auto\" data-line=\"12\">Indice dei documenti<\/h2><table class=\"code-line\" dir=\"auto\" data-line=\"14\"><thead class=\"code-line\" dir=\"auto\" data-line=\"14\"><tr class=\"code-line\" dir=\"auto\" data-line=\"14\"><th>#<\/th><th>Title<\/th><th>Description<\/th><\/tr><\/thead><tbody class=\"code-line\" dir=\"auto\" data-line=\"16\"><tr class=\"code-line\" dir=\"auto\" data-line=\"16\"><td>01<\/td><td><a href=\"https:\/\/file+.vscode-resource.vscode-cdn.net\/c%3A\/Users\/Aida%20Garfami\/Downloads\/Documentation\/Documentation\/Documentation\/Documentation~\/LeonardoXR%20SDK%20Documentation_EN.md#01-getting-started\" data-href=\"#01-getting-started\">Getting Started<\/a><\/td><td>Project setup, SDK installation, URP and Play-in-Editor configuration<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"17\"><td>02<\/td><td><a href=\"https:\/\/file+.vscode-resource.vscode-cdn.net\/c%3A\/Users\/Aida%20Garfami\/Downloads\/Documentation\/Documentation\/Documentation\/Documentation~\/LeonardoXR%20SDK%20Documentation_EN.md#02-vr--mr\" data-href=\"#02-vr--mr\">VR \/ MR<\/a><\/td><td>Manual project config, Passthrough, scene setup, lifecycle compatibility<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"18\"><td>03<\/td><td><a href=\"https:\/\/file+.vscode-resource.vscode-cdn.net\/c%3A\/Users\/Aida%20Garfami\/Downloads\/Documentation\/Documentation\/Documentation\/Documentation~\/LeonardoXR%20SDK%20Documentation_EN.md#03-features\" data-href=\"#03-features\">Features<\/a><\/td><td>Snapdragon Spaces features + LeonardoXR proprietary features<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"19\"><td>04<\/td><td><a href=\"https:\/\/file+.vscode-resource.vscode-cdn.net\/c%3A\/Users\/Aida%20Garfami\/Downloads\/Documentation\/Documentation\/Documentation\/Documentation~\/LeonardoXR%20SDK%20Documentation_EN.md#04-samples-guide\" data-href=\"#04-samples-guide\">Samples Guide<\/a><\/td><td>Overview of all available samples and how to run them<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"20\"><td>05<\/td><td><a href=\"https:\/\/file+.vscode-resource.vscode-cdn.net\/c%3A\/Users\/Aida%20Garfami\/Downloads\/Documentation\/Documentation\/Documentation\/Documentation~\/LeonardoXR%20SDK%20Documentation_EN.md#05-interaction-package-guides\" data-href=\"#05-interaction-package-guides\">Interaction Package Guides<\/a><\/td><td>XRIT 3.x, XR Hands, controllers and hand tracking<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"21\"><td>06<\/td><td><a href=\"https:\/\/file+.vscode-resource.vscode-cdn.net\/c%3A\/Users\/Aida%20Garfami\/Downloads\/Documentation\/Documentation\/Documentation\/Documentation~\/LeonardoXR%20SDK%20Documentation_EN.md#06-advanced\" data-href=\"#06-advanced\">Advanced<\/a><\/td><td>Display refresh rate, performance settings, custom controllers, QNN<\/td><\/tr><\/tbody><\/table><hr class=\"code-line\" dir=\"auto\" data-line=\"23\" \/><h2 id=\"01-getting-started\" class=\"code-line\" dir=\"auto\" data-line=\"25\">01. Iniziare<\/h2><p class=\"code-line\" dir=\"auto\" data-line=\"27\"><em>Version 1.0.2 | Device: Youbiquo Leonardo XR | Base SDK: Snapdragon Spaces 1.0.4<\/em><\/p><h3 id=\"introduction\" class=\"code-line\" dir=\"auto\" data-line=\"29\">Introduzione<\/h3><p class=\"code-line\" dir=\"auto\" data-line=\"31\">Questa guida spiega come configurare un progetto Unity per lo sviluppo su Leonardo XR, il visore AR di Youbiquo basato su Snapdragon Spaces. L&#8217;obiettivo \u00e8 familiarizzare gli sviluppatori con la configurazione dell&#8217;SDK per la creazione di applicazioni su Leonardo. La prossima guida illustrer\u00e0 come interagire con i controller e le mani.<\/p><p class=\"code-line\" dir=\"auto\" data-line=\"33\">Leonardo XR utilizza Android 12 e segue un flusso di lavoro di sviluppo familiare a chiunque abbia gi\u00e0 creato applicazioni Android.<\/p><h3 id=\"required-software\" class=\"code-line\" dir=\"auto\" data-line=\"35\">Software richiesto<\/h3><p class=\"code-line\" dir=\"auto\" data-line=\"37\">Prima di iniziare, assicurarsi che i seguenti software e pacchetti siano installati nelle versioni specificate:<\/p><table class=\"code-line\" dir=\"auto\" data-line=\"39\"><thead class=\"code-line\" dir=\"auto\" data-line=\"39\"><tr class=\"code-line\" dir=\"auto\" data-line=\"39\"><th>Software \/ Package<\/th><th>Version<\/th><\/tr><\/thead><tbody class=\"code-line\" dir=\"auto\" data-line=\"41\"><tr class=\"code-line\" dir=\"auto\" data-line=\"41\"><td>Unity Hub<\/td><td>Latest available<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"42\"><td>Unity Editor<\/td><td>6000.0.58f2<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"43\"><td>LeonardoXR SDK<\/td><td>1.0.2<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"44\"><td>Snapdragon Spaces SDK<\/td><td>1.0.4<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"45\"><td>OpenXR Plugin<\/td><td>1.15.1<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"46\"><td>AR Foundation<\/td><td>6.2.1<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"47\"><td>XR Interaction Toolkit<\/td><td>3.3.0<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"48\"><td>XR Hands<\/td><td>1.7.2<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"49\"><td>UniTask<\/td><td>2.5.10<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"50\"><td>VS Code, Visual Studio or similar IDE<\/td><td>\u2014<\/td><\/tr><\/tbody><\/table><blockquote class=\"code-line\" dir=\"auto\" data-line=\"52\"><p class=\"code-line\" dir=\"auto\" data-line=\"52\"><strong>NOTA:<\/strong> A differenza della guida base di Snapdragon Spaces (che raccomanda la versione 1.10.0 per Unity 2022), Unity 6 con LeonardoXR utilizza OpenXR 1.15.1. Non modificare manualmente questa versione: il Package Manager la gestisce tramite le dipendenze dell&#8217;SDK.<\/p><\/blockquote><h3 id=\"create-a-new-project\" class=\"code-line\" dir=\"auto\" data-line=\"54\">Crea un nuovo progetto<\/h3><ol class=\"code-line\" dir=\"auto\" data-line=\"56\"><li class=\"code-line\" dir=\"auto\" data-line=\"56\">Apri Unity Hub e fai clic su Nuovo progetto.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"56\">Seleziona il modello Universal 3D.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"56\">Assegna un nome al progetto (ad esempio LeonardoXR_Test) e scegli una cartella di destinazione.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"56\">Fai clic su Crea progetto.<\/li><\/ol><p class=\"code-line\" dir=\"auto\" data-line=\"61\">Dopo la creazione, Unity apre il progetto con una scena di esempio nel pannello Gerarchia.<\/p><h3 id=\"switch-platform-to-android\" class=\"code-line\" dir=\"auto\" data-line=\"63\">Passa alla piattaforma Android<\/h3><ol class=\"code-line\" dir=\"auto\" data-line=\"65\"><li class=\"code-line\" dir=\"auto\" data-line=\"65\"><p>Dal menu principale, seleziona File &gt; Crea profili.<\/p><\/li><li class=\"code-line\" dir=\"auto\" data-line=\"65\"><p>Nella finestra Crea profili, seleziona Android dall&#8217;elenco Piattaforma.<\/p><\/li><li class=\"code-line\" dir=\"auto\" data-line=\"65\"><p>Fai clic su Cambia piattaforma e attendi il completamento del processo.<\/p><\/li><li class=\"code-line\" dir=\"auto\" data-line=\"65\"><p>Chiudi la finestra Crea profili.<\/p><\/li><\/ol><h3 id=\"install-snapdragon-spaces-sdk\" class=\"code-line\" dir=\"auto\" data-line=\"70\">Installa l&#8217;SDK di Snapdragon Spaces<\/h3><blockquote class=\"code-line\" dir=\"auto\" data-line=\"72\"><p class=\"code-line\" dir=\"auto\" data-line=\"72\"><strong>IMPORTANTE:<\/strong> Snapdragon Spaces SDK deve essere installato prima di <strong>LeonardoXR SDK<\/strong>. Il runtime di LeonardoXR dipende da esso e non verr\u00e0 compilato senza di esso.<\/p><\/blockquote><ol class=\"code-line\" dir=\"auto\" data-line=\"74\"><li class=\"code-line\" dir=\"auto\" data-line=\"74\">Scarica Snapdragon Spaces SDK v1.0.4 dal portale per sviluppatori Qualcomm (\u00e8 necessario un account sviluppatore): <a href=\"https:\/\/spaces.qualcomm.com\/developer\/vr-mr-sdk\/#downloads\" data-href=\"https:\/\/spaces.qualcomm.com\/developer\/vr-mr-sdk\/#downloads\">https:\/\/spaces.qualcomm.com\/developer\/vr-mr-sdk\/#downloads<\/a><\/li><li class=\"code-line\" dir=\"auto\" data-line=\"75\">Apri Package Manager (<strong>Window &gt; Package Manager<\/strong>).<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"76\">Clic <strong>+<\/strong> e seleziona <strong>Add package from tarball\u2026<\/strong><\/li><li class=\"code-line\" dir=\"auto\" data-line=\"77\">Individua il file .tgz scaricato e fai clic su Apri. L&#8217;installazione si avvier\u00e0 automaticamente.<\/li><\/ol><p class=\"code-line\" dir=\"auto\" data-line=\"79\">Durante l&#8217;installazione potrebbero comparire due messaggi:<\/p><ul class=\"code-line\" dir=\"auto\" data-line=\"80\"><li class=\"code-line\" dir=\"auto\" data-line=\"80\">&#8220;Abilitare il nuovo sistema di input?&#8221; \u2192 clic <strong>Yes<\/strong>.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"81\">&#8220;XAggiornamento della maschera del livello di interazione R necessario&#8221; \u2192 oppure un nuovo progetto, clicca <strong>I Made a Backup, Go Ahead!<\/strong><\/li><\/ul><blockquote class=\"code-line\" dir=\"auto\" data-line=\"83\"><p class=\"code-line\" dir=\"auto\" data-line=\"83\"><strong>NOTA:<\/strong> L&#8217;editor si riavvier\u00e0 dopo l&#8217;installazione: questo \u00e8 un comportamento previsto, non un arresto anomalo. Per il controllo della versione, copiare il file .tgz nella cartella Packages\/ del progetto prima di aggiungerlo; il manifesto utilizzer\u00e0 quindi un percorso relativo, che \u00e8 preferibile per il controllo della versione.<\/p><\/blockquote><blockquote class=\"code-line\" dir=\"auto\" data-line=\"85\"><p class=\"code-line\" dir=\"auto\" data-line=\"85\"><strong>Unity 6.3+ \u2014 Problema comune dell&#8217;SDK Spaces:<\/strong> Dopo l&#8217;installazione, potrebbe comparire il seguente errore di compilazione:<\/p><pre><span style=\"color: #003366;\"><code class=\"code-line\" dir=\"auto\" data-line=\"86\">BaseRuntimeFeature.InterceptEnvironmentBlendMode.cs(15,10): error CS0592:\nAttribute 'SerializeField' is not valid on this declaration type.\n<\/code><\/span><\/pre><p class=\"code-line\" dir=\"auto\" data-line=\"90\">Per risolvere il problema, fai doppio clic sull&#8217;errore nella Console per aprire il file, quindi rimuovi l&#8217;attributo [SerializeField] alla riga 15. Si tratta di un bug presente in Snapdragon Spaces 1.0.4 che si manifesta solo su Unity 6.3 e versioni successive.<\/p><\/blockquote><h3 id=\"install-leonardoxr-sdk\" class=\"code-line\" dir=\"auto\" data-line=\"92\">Installare l&#8217;SDK di LeonardoXR<\/h3><ol class=\"code-line\" dir=\"auto\" data-line=\"94\"><li class=\"code-line\" dir=\"auto\" data-line=\"94\">Scarica <strong>LeonardoXR SDK v1.0.2<\/strong> dall&#8217;area sviluppatori di Youbiquo.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"95\">Apri il Package Manager (<strong>Window &gt; Package Manager<\/strong>).<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"96\">Clic <strong>+<\/strong> e sceli <strong>Add package from tarball\u2026<\/strong><\/li><li class=\"code-line\" dir=\"auto\" data-line=\"97\">Individua il file .tgz dell&#8217;SDK di LeonardoXR e fai clic su <strong>Open<\/strong>.<\/li><\/ol><p class=\"code-line\" dir=\"auto\" data-line=\"99\">L&#8217;SDK verr\u00e0 installato insieme alle sue dipendenze: <strong>OpenXR Plugin 1.15.1<\/strong>,\u00a0<strong>AR Foundation 6.2.1<\/strong>,\u00a0<strong>XR Interaction Toolkit 3.3.0<\/strong>, e <strong>XR Hands 1.7.2<\/strong> \u2014 Non \u00e8 richiesta alcuna installazione manuale di questi pacchetti.<\/p><h3 id=\"leonardoxr-sdk-manager\" class=\"code-line\" dir=\"auto\" data-line=\"101\">Gestore SDK LeonardoXR<\/h3><p class=\"code-line\" dir=\"auto\" data-line=\"103\">Dopo l&#8217;installazione dell&#8217;SDK LeonardoXR, Si aprir\u00e0 automaticamente la finestra di <strong>LeonardoXR SDK Manager<\/strong>, Se non viene visualizzata, aprirla da <strong>LeonardoXR &gt; SDK Manager<\/strong> nella barra dei menu.<\/p><p class=\"code-line\" dir=\"auto\" data-line=\"105\">La finestra ha due schede:<\/p><p class=\"code-line\" dir=\"auto\" data-line=\"107\"><strong>Setup tab<\/strong> \u2014 Mostra lo stato dei due pacchetti che non possono essere risolti automaticamente:<\/p><table class=\"code-line\" dir=\"auto\" data-line=\"109\"><thead class=\"code-line\" dir=\"auto\" data-line=\"109\"><tr class=\"code-line\" dir=\"auto\" data-line=\"109\"><th>Package<\/th><th>Status<\/th><th>Action<\/th><\/tr><\/thead><tbody class=\"code-line\" dir=\"auto\" data-line=\"111\"><tr class=\"code-line\" dir=\"auto\" data-line=\"111\"><td>Snapdragon Spaces SDK 1.0.4<\/td><td>\u2713 \/ \u2717<\/td><td><strong>Browse\u2026<\/strong>\u00a0\u2014 opens a file picker to select the\u00a0<code>.tgz<\/code>\u00a0and installs it via Package Manager<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"112\"><td>UniTask 2.5.10<\/td><td>\u2713 \/ \u2717<\/td><td><strong>Install<\/strong>\u00a0\u2014 installs UniTask directly from the official Cysharp Git repository<\/td><\/tr><\/tbody><\/table><p class=\"code-line\" dir=\"auto\" data-line=\"114\">Una volta che entrambi i pacchetti mostrano \u2713, la configurazione \u00e8 completa. Utilizza il pulsante <strong>\u21ba Aggiorna <\/strong>in qualsiasi momento per verificare nuovamente lo stato attuale.<\/p><p class=\"code-line\" dir=\"auto\" data-line=\"116\"><strong>About tab<\/strong> \u2014 Visualizza le informazioni sulla versione dell&#8217;SDK, del dispositivo e dell&#8217;editor Unity.<\/p><h3 id=\"configure-xr-plugin-management-and-openxr\" class=\"code-line\" dir=\"auto\" data-line=\"118\">Configurazione di XR Plugin Management e OpenXR<\/h3><h4 id=\"open-project-settings\" class=\"code-line\" dir=\"auto\" data-line=\"120\">Apri Project Settings<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"122\">Vai a <strong>Edit &gt; Project Settings<\/strong> e scegli <strong>XR Plug-in Management<\/strong> nella barra laterale sinistra.<\/p><h4 id=\"enable-openxr-and-snapdragon-spaces\" class=\"code-line\" dir=\"auto\" data-line=\"124\">Abilita OpenXR e Snapdragon Spaces<\/h4><ol class=\"code-line\" dir=\"auto\" data-line=\"126\"><li class=\"code-line\" dir=\"auto\" data-line=\"126\">Clic su <strong>Android<\/strong> tab (in alto a destra della finestra).<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"127\">Sotto <strong>Plug-in Providers<\/strong>, assicurarsi che entrambi siano controllati: <strong>OpenXR<\/strong> e\u00a0<strong>Snapdragon Spaces feature group<\/strong>.<\/li><\/ol><h4 id=\"configure-openxr-features\" class=\"code-line\" dir=\"auto\" data-line=\"129\">Configure OpenXR Features<\/h4><ol class=\"code-line\" dir=\"auto\" data-line=\"131\"><li class=\"code-line\" dir=\"auto\" data-line=\"131\">Clic <strong>OpenXR<\/strong> nella barra laterale sinistra.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"132\">Nell&#8217;elenco delle funzionalit\u00e0 di Snapdragon Spaces, abilita solo <strong>Base Runtime<\/strong> e disabilitare tutte le altre. Le funzionalit\u00e0 avanzate (Hit Testing, Plane Detection, ecc.) possono essere abilitate in seguito, se necessario.<\/li><\/ol><blockquote class=\"code-line\" dir=\"auto\" data-line=\"134\"><p class=\"code-line\" dir=\"auto\" data-line=\"134\"><strong>NOTA<\/strong> affinch\u00e9 il tracciamento delle mani funzioni correttamente su LeonardoXR, l&#8217;opzione Sottosistema di tracciamento delle mani deve essere abilitata nella sezione Tutte le funzionalit\u00e0 di OpenXR.<\/p><\/blockquote><h4 id=\"add-leonardoxr-feature-group\" class=\"code-line\" dir=\"auto\" data-line=\"136\">Aggiungi LeonardoXR Feature Group<\/h4><ol class=\"code-line\" dir=\"auto\" data-line=\"138\"><li class=\"code-line\" dir=\"auto\" data-line=\"138\">Torna a <strong>XR Plug-in Management &gt; Android<\/strong>.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"139\">Nell&#8217;elenco dei fornitori di plug-in, controlla anche <strong>LeonardoXR feature group<\/strong>.<\/li><\/ol><h4 id=\"run-project-validation\" class=\"code-line\" dir=\"auto\" data-line=\"141\">Esecuzione della convalida del progetto<\/h4><ol class=\"code-line\" dir=\"auto\" data-line=\"143\"><li class=\"code-line\" dir=\"auto\" data-line=\"143\">Nella barra laterale delle impostazioni del progetto, fai clic <strong>Project Validation<\/strong>.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"144\">La finestra mostra un elenco di errori di configurazione da correggere.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"145\">Clic <strong>Fix All<\/strong> per risolverli automaticamente.<\/li><\/ol><blockquote class=\"code-line\" dir=\"auto\" data-line=\"147\"><p class=\"code-line\" dir=\"auto\" data-line=\"147\"><strong>NOTA<\/strong>\u00a0Alcune correzioni potrebbero richiedere il riavvio dell&#8217;editor. Eseguire nuovamente la convalida dopo il riavvio per verificare che tutti gli errori siano stati risolti.<\/p><\/blockquote><h3 id=\"import-samples\" class=\"code-line\" dir=\"auto\" data-line=\"149\">Importa campioni<\/h3><p class=\"code-line\" dir=\"auto\" data-line=\"151\">Prima di creare le tue scene, \u00e8 utile importare gli esempi inclusi in ciascun pacchetto. Per ogni pacchetto: open <strong>Window &gt; Package Manager<\/strong>, scegli <strong>In Project<\/strong>, scegli il package, espandendo il sezione di <strong>Samples<\/strong> e clicca <strong>Import<\/strong>.<\/p><table class=\"code-line\" dir=\"auto\" data-line=\"153\"><thead class=\"code-line\" dir=\"auto\" data-line=\"153\"><tr class=\"code-line\" dir=\"auto\" data-line=\"153\"><th>Package<\/th><th>Samples<\/th><\/tr><\/thead><tbody class=\"code-line\" dir=\"auto\" data-line=\"155\"><tr class=\"code-line\" dir=\"auto\" data-line=\"155\"><td>XR Hands<\/td><td>Gestures, Hand Visualizer<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"156\"><td>XR Interaction Toolkit<\/td><td>Starter Assets, Hand Interaction Demo<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"157\"><td>Snapdragon Spaces<\/td><td>Core Samples<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"158\"><td>LeonardoXR<\/td><td>Core Samples, Documentation<\/td><\/tr><\/tbody><\/table><p class=\"code-line\" dir=\"auto\" data-line=\"160\">Dopo aver importato tutti i campioni, aggiungi le scene alla build tramite <strong>Window &gt; XR &gt; Snapdragon Spaces &gt; Add Scenes to Build Settings<\/strong>.<\/p><h3 id=\"configure-urp\" class=\"code-line\" dir=\"auto\" data-line=\"162\">Configurazione di URP<\/h3><h4 id=\"graphics-and-quality-settings\" class=\"code-line\" dir=\"auto\" data-line=\"164\">Impostazioni grafiche e di qualit\u00e0<\/h4><ol class=\"code-line\" dir=\"auto\" data-line=\"166\"><li class=\"code-line\" dir=\"auto\" data-line=\"166\">Apri <strong>Edit &gt; Project Settings &gt; Graphics<\/strong>.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"167\">Sotto <strong>Default Render Pipeline<\/strong>, clic il cerchio e scegli <code>Mobile_RPAsset<\/code>.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"168\">Vai a <strong>Project Settings &gt; Quality<\/strong>.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"169\">Nella sezione Livelli, assicurati che <strong>Mobile<\/strong> ha una casella di controllo verde nella colonna Android. In caso contrario, fai clic su Fai clic sul triangolo <strong>predefinito<\/strong> sotto <strong>Android<\/strong> e seleziona <strong>Mobile<\/strong>.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"170\">Chusi Project Settings.<\/li><\/ol><h4 class=\"code-line\" dir=\"auto\" data-line=\"172\">Configurazione di Assets\u00a0URP\u00a0<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"174\">In\u00a0<code>Assets\/Settings<\/code>, scegli <code>Mobile_Renderer<\/code> e applica:<\/p><ul class=\"code-line\" dir=\"auto\" data-line=\"175\"><li class=\"code-line\" dir=\"auto\" data-line=\"175\"><strong>Rendering \u2192 Depth Priming Mode<\/strong>: impostare su disabilitato<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"176\"><strong>Shadows \u2192 Transparent Receive Shadows<\/strong>: deselezionare<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"177\"><strong>Post-processing \u2192 Enabled<\/strong>: deselezionare<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"178\"><strong>Renderer Feature \u2192 SSAO<\/strong>: assicurarsi che sia disabilitato o rimosso<\/li><\/ul><p class=\"code-line\" dir=\"auto\" data-line=\"180\">Nel <code>Assets\/Settings<\/code>, scegli <code>Mobile_RPAsset<\/code> e applica:<\/p><ul class=\"code-line\" dir=\"auto\" data-line=\"181\"><li class=\"code-line\" dir=\"auto\" data-line=\"181\"><strong>HDR<\/strong>: disable<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"182\"><strong>Anti Aliasing (MSAA)<\/strong>: set to\u00a0<code>4x<\/code><\/li><\/ul><h3 id=\"play-in-editor-configuration\" class=\"code-line\" dir=\"auto\" data-line=\"184\">Esegui nella configurazione dell&#8217;editor<\/h3><p class=\"code-line\" dir=\"auto\" data-line=\"186\">Questa sezione descrive come configurare il progetto per lo sviluppo Play-In-Editor, riducendo la necessit\u00e0 di distribuire il progetto sul dispositivo a ogni modifica.<\/p><h4 id=\"openxr-project-settings\" class=\"code-line\" dir=\"auto\" data-line=\"188\">Impostazioni del progetto OpenXR<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"190\">Vai a <strong>Edit &gt; Project Settings &gt; XR Plug-in Management<\/strong> e scegli il tab <strong>Windows, Mac, Linux.<\/strong><\/p><p class=\"code-line\" dir=\"auto\" data-line=\"192\"><strong>Inizializza XR all&#8217;avvio<\/strong> \u2014 il valore deve corrispondere all&#8217;impostazione della scheda Android:<\/p><ul class=\"code-line\" dir=\"auto\" data-line=\"193\"><li class=\"code-line\" dir=\"auto\" data-line=\"193\">Senza Dual Render Fusion \u2192 deve essere <strong>enabled<\/strong>.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"194\">Con Dual Render Fusion \u2192 deve essere <strong>disabled<\/strong>.<\/li><\/ul><blockquote class=\"code-line\" dir=\"auto\" data-line=\"196\"><p class=\"code-line\" dir=\"auto\" data-line=\"196\"><strong>NOTA<\/strong> Abilita il <strong>XR Simulation<\/strong> sul Windows\/Mac\/Linux tab per utilitzare AR Foundation simulation environments. Si noti che il tracciamento tramite codice QR non ha un sottosistema di simulazione equivalente.<\/p><\/blockquote><h4 id=\"enable-base-runtime-feature-for-windowsmaclinux\" class=\"code-line\" dir=\"auto\" data-line=\"198\">Abilita la funzionalit\u00e0 di runtime di base per Windows\/Mac\/Linux<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"200\">Vai a <strong>Edit &gt; Project Settings &gt; XR Plug-in Management &gt; OpenXR<\/strong> (Windows, Mac, Linux tab) e abilita le funzionalit\u00e0 <strong>Base Runtime.<\/strong><\/p><h4 id=\"scene-configuration--spaces-xr-simulator\" class=\"code-line\" dir=\"auto\" data-line=\"202\">Configurazione della scena \u2014 Simulatore XR Spaces<\/h4><pre class=\"tw-data-text tw-text-large tw-ta\" dir=\"ltr\" tabindex=\"-1\" role=\"text\" data-placeholder=\"Translation\" data-ved=\"2ahUKEwi966ef5-KTAxWygP0HHfYvDFsQ3ewLegQIDBAV\" aria-label=\"Translated text: Aggiungi il componente Spaces XR Simulator a un GameObject radice nella scena. Il componente persiste anche dopo il caricamento della scena (DontDestroyOnLoad) e pu\u00f2 esistere una sola istanza alla volta.\"><span class=\"Y2IQFc\" lang=\"it\">Aggiungi il componente<\/span> <strong>Spaces XR Simulator <\/strong><span class=\"Y2IQFc\" lang=\"it\">a un <\/span>GameObject <span class=\"Y2IQFc\" lang=\"it\">radice nella scena. <\/span><span class=\"Y2IQFc\" lang=\"it\">Il componente persiste anche dopo il caricamento della scena <\/span>(<code>DontDestroyOnLoad<\/code>) <span class=\"Y2IQFc\" lang=\"it\">e pu\u00f2 esistere una sola istanza alla volta.<\/span><\/pre><table class=\"code-line\" dir=\"auto\" data-line=\"206\"><thead class=\"code-line\" dir=\"auto\" data-line=\"206\"><tr class=\"code-line\" dir=\"auto\" data-line=\"206\"><th>Property<\/th><th>Description<\/th><\/tr><\/thead><tbody class=\"code-line\" dir=\"auto\" data-line=\"208\"><tr class=\"code-line\" dir=\"auto\" data-line=\"208\"><td>Start Connected<\/td><td>Simulates glasses active and connected (Dual Render Fusion only).<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"209\"><td>Invert Sim Camera Display<\/td><td>Swaps phone and glasses displays in the editor (Dual Render Fusion only).<\/td><\/tr><\/tbody><\/table><h4 id=\"dual-render-fusion-editor-shortcuts\" class=\"code-line\" dir=\"auto\" data-line=\"211\">Scorciatoie dell&#8217;editor Dual Render Fusion<\/h4><table class=\"code-line\" dir=\"auto\" data-line=\"213\"><thead class=\"code-line\" dir=\"auto\" data-line=\"213\"><tr class=\"code-line\" dir=\"auto\" data-line=\"213\"><th>Event<\/th><th>Shortcut<\/th><th>Menu Path<\/th><\/tr><\/thead><tbody class=\"code-line\" dir=\"auto\" data-line=\"215\"><tr class=\"code-line\" dir=\"auto\" data-line=\"215\"><td>Connect Glasses<\/td><td>Alt-Shift-C<\/td><td>Window &gt; XR &gt; Snapdragon Spaces &gt; DRF &gt; Simulation &gt; Connect Glasses<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"216\"><td>Disconnect Glasses<\/td><td>Alt-Shift-D<\/td><td>Window &gt; XR &gt; Snapdragon Spaces &gt; DRF &gt; Simulation &gt; Disconnect Glasses<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"217\"><td>Glasses Active<\/td><td>Alt-Shift-G<\/td><td>Window &gt; XR &gt; Snapdragon Spaces &gt; DRF &gt; Simulation &gt; Glasses Active<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"218\"><td>Glasses Idle<\/td><td>Alt-Shift-H<\/td><td>Window &gt; XR &gt; Snapdragon Spaces &gt; DRF &gt; Simulation &gt; Glasses Idle<\/td><\/tr><\/tbody><\/table><blockquote class=\"code-line\" dir=\"auto\" data-line=\"220\"><p class=\"code-line\" dir=\"auto\" data-line=\"220\"><strong>NOTA<\/strong> Tutti i comportamenti finali devono essere sempre verificati sul dispositivo fisico, non solo nell&#8217;editor.<\/p><\/blockquote><hr class=\"code-line\" dir=\"auto\" data-line=\"222\" \/><h2 id=\"02-vr--mr\" class=\"code-line\" dir=\"auto\" data-line=\"224\">02 VR \/ MR<\/h2><p class=\"code-line\" dir=\"auto\" data-line=\"226\">Versione 1.0.2 | Dispositivo: Youbiquo Leonardo XR | SDK di base: Snapdragon Spaces 1.0.4<\/p><h3 id=\"manual-project-configuration\" class=\"code-line\" dir=\"auto\" data-line=\"228\">Configurazione manuale del progetto<\/h3><p class=\"code-line\" dir=\"auto\" data-line=\"230\">Si consiglia di utilizzare lo Strumento di configurazione per la configurazione iniziale del progetto (vedere la sezione &#8220;Per iniziare&#8221;). Questa guida descrive i passaggi manuali equivalenti per gli sviluppatori che preferiscono avere il controllo diretto sulle impostazioni.<\/p><h4 id=\"edit-project-settings\" class=\"code-line\" dir=\"auto\" data-line=\"232\">Modifica le impostazioni del progetto<\/h4><ol class=\"code-line\" dir=\"auto\" data-line=\"234\"><li class=\"code-line\" dir=\"auto\" data-line=\"234\"><p class=\"tw-data-text tw-text-large tw-ta\" dir=\"ltr\" tabindex=\"-1\" role=\"text\" data-placeholder=\"Translation\" data-ved=\"2ahUKEwi966ef5-KTAxWygP0HHfYvDFsQ3ewLegQIDBAV\" aria-label=\"Translated text: Vai su Modifica &gt; Impostazioni progetto &gt; Gestione plug-in XR e apri la scheda Android.\"><span class=\"Y2IQFc\" lang=\"it\">Vai su <\/span><strong>Edit &gt; Project Settings &gt; XR Plug-in Management <\/strong><span class=\"Y2IQFc\" lang=\"it\">e apri la scheda <\/span><strong>Android<\/strong>.<\/p><\/li><li class=\"code-line\" dir=\"auto\" data-line=\"235\"><p id=\"tw-target-text\" class=\"tw-data-text tw-text-large tw-ta\" dir=\"ltr\" tabindex=\"-1\" role=\"text\" data-placeholder=\"Translation\" data-ved=\"2ahUKEwi966ef5-KTAxWygP0HHfYvDFsQ3ewLegQIDBAV\" aria-label=\"Translated text: Abilita il plug-in OpenXR e il gruppo di funzionalit\u00e0 Snapdragon Spaces.\"><span class=\"Y2IQFc\" lang=\"it\">Abilita il plug-in <\/span><strong>OpenXR<\/strong> e il e il gruppo di funzionalit\u00e0 <strong>Snapdragon Spaces<\/strong>.<\/p><\/li><li class=\"code-line\" dir=\"auto\" data-line=\"236\"><p id=\"tw-target-text\" class=\"tw-data-text tw-text-large tw-ta\" dir=\"ltr\" tabindex=\"-1\" role=\"text\" data-placeholder=\"Translation\" data-ved=\"2ahUKEwi966ef5-KTAxWygP0HHfYvDFsQ3ewLegQIDBAV\" aria-label=\"Translated text: Fai clic sul punto esclamativo rosso accanto a OpenXR per aprire la Validazione del progetto OpenXR.\"><span class=\"Y2IQFc\" lang=\"it\">Fai clic sul punto esclamativo rosso accanto a OpenXR per aprire il <\/span><strong>OpenXR Project Validation<\/strong>.<\/p><\/li><li class=\"code-line\" dir=\"auto\" data-line=\"237\"><p>Fai clic su <strong>Fix <\/strong>accanto a ciascun elemento.<\/p><\/li><li class=\"code-line\" dir=\"auto\" data-line=\"238\"><p id=\"tw-target-text\" class=\"tw-data-text tw-text-large tw-ta\" dir=\"ltr\" tabindex=\"-1\" role=\"text\" data-placeholder=\"Translation\" data-ved=\"2ahUKEwi966ef5-KTAxWygP0HHfYvDFsQ3ewLegQIDBAV\" aria-label=\"Translated text: Applica l'impostazione &quot;Abilita entrambi i sistemi di input&quot; per ultima, poich\u00e9 richiede il riavvio dell'editor.\"><span class=\"Y2IQFc\" lang=\"it\">Applica l&#8217;impostazione <\/span>&#8220;Enable both Input Systems&#8221; scorsa, poich\u00e9 richiede il riavvio dell&#8217;editor.<\/p><\/li><\/ol><h4 id=\"enable-spaces-features\" class=\"code-line\" dir=\"auto\" data-line=\"240\">Abilita le funzionalit\u00e0 di Spaces<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"242\">Nelle impostazioni di OpenXR, abilita le funzionalit\u00e0 che devono essere attive in fase di esecuzione. Ogni funzionalit\u00e0 corrisponde a un AR Foundation Manager e a un sottosistema XR:<\/p><table class=\"code-line\" dir=\"auto\" data-line=\"244\"><thead class=\"code-line\" dir=\"auto\" data-line=\"244\"><tr class=\"code-line\" dir=\"auto\" data-line=\"244\"><th>Feature<\/th><th>AR Foundation Manager<\/th><th>XR Subsystem<\/th><\/tr><\/thead><tbody class=\"code-line\" dir=\"auto\" data-line=\"246\"><tr class=\"code-line\" dir=\"auto\" data-line=\"246\"><td>Base Runtime<\/td><td>AR Session<\/td><td>XRSessionSubsystem<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"247\"><td>Camera Frame Access<\/td><td>AR Camera Manager<\/td><td>XRCameraSubsystem<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"248\"><td>Hit Testing<\/td><td>AR Raycast Manager<\/td><td>XRRaycastSubsystem<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"249\"><td>Image Tracking<\/td><td>AR Tracked Image Manager<\/td><td>XRImageTrackingSubsystem<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"250\"><td>Plane Detection<\/td><td>AR Plane Manager<\/td><td>XRPlaneSubsystem<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"251\"><td>Spatial Anchors<\/td><td>AR Anchor Manager<\/td><td>XRAnchorSubsystem<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"252\"><td>Spatial Meshing<\/td><td>AR Mesh Manager<\/td><td>XRMeshSubsystem<\/td><\/tr><\/tbody><\/table><h4 id=\"add-feature-usage-data-to-the-android-manifest\" class=\"code-line\" dir=\"auto\" data-line=\"254\">Aggiungi i dati di utilizzo delle funzionalit\u00e0 al file AndroidManifest<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"256\">Vai su <strong>Edit &gt; Project Settings &gt; Snapdragon Spaces Launcher Settings<\/strong> Dichiarare le funzionalit\u00e0 richieste o supportate dall&#8217;applicazione per: tracciamento della mano, tracciamento oculare, passthrough, controller e rilevamento della scala ambientale.<\/p><blockquote class=\"code-line\" dir=\"auto\" data-line=\"258\"><p class=\"code-line\" dir=\"auto\" data-line=\"258\"><strong>NOTA<\/strong> Per impostazione predefinita, tutti i valori di uses-feature sono impostati su true. Impostare le funzionalit\u00e0 non utilizzate su false per evitare requisiti errati nel manifesto.<\/p><\/blockquote><h3 id=\"passthrough-setup\" class=\"code-line\" dir=\"auto\" data-line=\"260\">Configurazione pass-through<\/h3><p class=\"code-line\" dir=\"auto\" data-line=\"262\">La funzione Passthrough consente di visualizzare l&#8217;ambiente fisico come sovrapposizione di immagini sui dispositivi VR. Su LeonardoXR \u00e8 disponibile sui dispositivi compatibili.<\/p><ul class=\"code-line\" dir=\"auto\" data-line=\"264\"><li class=\"code-line\" dir=\"auto\" data-line=\"264\"><p>Attivabile tramite il pannello <strong>&#8220;Extended contents&#8221;<\/strong> nell&#8217;interfaccia utente dell&#8217;app (visibile solo sui dispositivi compatibili con Passthrough).<\/p><\/li><li class=\"code-line\" dir=\"auto\" data-line=\"264\"><p>Pu\u00f2 essere attivato\/disattivato anche tramite i pulsanti <strong>X e A<\/strong> sul controller.<\/p><\/li><li class=\"code-line\" dir=\"auto\" data-line=\"264\"><p>La funzione di abilitazione \u00e8 OnPassthroughToggle() in MainMenuSampleController, che imposta PassthroughToggle su BaseRuntimeFeature.<\/p><\/li><\/ul><blockquote class=\"code-line\" dir=\"auto\" data-line=\"268\"><p class=\"code-line\" dir=\"auto\" data-line=\"268\"><strong>ATTENZIONE:<\/strong> affinch\u00e9 la funzione Passthrough funzioni correttamente, il <strong>Alpha channel<\/strong> dello sfondo della telecamera di sessione deve essere impostato su <strong>0<\/strong>. In caso di impostazioni errate, verr\u00e0 registrato automaticamente un avviso.<\/p><\/blockquote><p class=\"code-line\" dir=\"auto\" data-line=\"270\">Il delegato OnSpacesAppSpaceChange in BaseRuntimeFeature notifica quando il dispositivo esegue un ricentraggio (attivato tenendo premuto il pulsante menu per 2 secondi sul VRX).<\/p><h3 id=\"scene-setup\" class=\"code-line\" dir=\"auto\" data-line=\"272\">Impostazione della scena<\/h3><blockquote class=\"code-line\" dir=\"auto\" data-line=\"274\"><p class=\"code-line\" dir=\"auto\" data-line=\"274\"><strong>NOTA<\/strong> Questa guida presuppone una conoscenza pregressa di AR Foundation e OpenXR. Per i concetti fondamentali, fare riferimento alla documentazione ufficiale di AR Foundation e OpenXR.<\/p><\/blockquote><h4 id=\"minimum-scene-hierarchy\" class=\"code-line\" dir=\"auto\" data-line=\"276\">Gerarchia minima della scena<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"278\">Per abilitare il tracciamento posizionale della testa su LeonardoXR sono necessari i seguenti oggetti:<\/p><pre><code class=\"code-line\" dir=\"auto\" data-line=\"280\">AR Session\nXR Origin\n  \u2514\u2500\u2500 Camera Offset\n        \u2514\u2500\u2500 Main Camera (tagged as \"MainCamera\")\n<\/code><\/pre><p class=\"code-line\" dir=\"auto\" data-line=\"287\">Creali facendo clic con il pulsante destro del mouse nella gerarchia e selezionando <strong>XR &gt; AR Session<\/strong>\u00a0or\u00a0<strong>XR &gt; XR Origin<\/strong>.<\/p><blockquote class=\"code-line\" dir=\"auto\" data-line=\"289\"><p class=\"code-line\" dir=\"auto\" data-line=\"289\"><strong>NOTA <\/strong><span class=\"Y2IQFc\" lang=\"it\">Disabilita il <\/span><strong>AR Camera Manager <\/strong><span class=\"Y2IQFc\" lang=\"it\">se non stai recuperando frame RGB dalla fotocamera, per evitare problemi di ciclo di vita. Disabilita anche <\/span><strong>AR Camera Background<\/strong> \u2014 Non \u00e8 supportato e verr\u00e0 disabilitato automaticamente in fase di esecuzione.<\/p><\/blockquote><h3 id=\"application-lifecycle--older-runtime-compatibility\" class=\"code-line\" dir=\"auto\" data-line=\"291\">Ciclo di vita dell&#8217;applicazione: compatibilit\u00e0 con runtime precedenti<\/h3><p class=\"code-line\" dir=\"auto\" data-line=\"293\">La libreria Older Runtime Compatibility impedisce l&#8217;avvio dell&#8217;applicazione quando l&#8217;SDK non \u00e8 compatibile con il runtime OpenXR installato sul dispositivo. All&#8217;avvio vengono aggiunte due voci al manifest di Android:<\/p><ul class=\"code-line\" dir=\"auto\" data-line=\"295\"><li class=\"code-line\" dir=\"auto\" data-line=\"295\"><code>targetAPI<\/code> \u2014 corrisponde alla versione runtime di OpenXR inclusa nell&#8217;SDK.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"296\"><code>minAPI<\/code> \u2014 la versione minima di runtime supportata da ciascuna funzionalit\u00e0.<\/li><\/ul><blockquote class=\"code-line\" dir=\"auto\" data-line=\"298\"><p class=\"code-line\" dir=\"auto\" data-line=\"298\"><strong>NOTA<\/strong> A partire da Snapdragon Spaces 1.0.4, il minAPI per tutte le funzionalit\u00e0 \u00e8 0.22.0.<\/p><\/blockquote><table class=\"code-line\" dir=\"auto\" data-line=\"300\"><thead class=\"code-line\" dir=\"auto\" data-line=\"300\"><tr class=\"code-line\" dir=\"auto\" data-line=\"300\"><th>Result<\/th><th>Description<\/th><\/tr><\/thead><tbody class=\"code-line\" dir=\"auto\" data-line=\"302\"><tr class=\"code-line\" dir=\"auto\" data-line=\"302\"><td>Success<\/td><td>No incompatibilities detected.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"303\"><td>Error Runtime Failure<\/td><td>OpenXR runtime error.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"304\"><td>Error Validation Failure<\/td><td>Older Runtime Compatibility validation error.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"305\"><td>Error Uninitialized<\/td><td>System Error due to missing initialization.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"306\"><td>Error Runtime Too Old For Application<\/td><td>Installed runtime is too old for the SDK.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"307\"><td>Error Application Too Old For Runtime<\/td><td>SDK is too old for the installed runtime.<\/td><\/tr><\/tbody><\/table><h3 id=\"known-issues--vrmr-on-leonardoxr\" class=\"code-line\" dir=\"auto\" data-line=\"309\">Problemi noti \u2014 VR\/MR su LeonardoXR<\/h3><blockquote class=\"code-line\" dir=\"auto\" data-line=\"311\"><p class=\"code-line\" dir=\"auto\" data-line=\"311\"><strong>NOTA<\/strong> Per i problemi non elencati qui, fare riferimento ai problemi noti in generale per la piattaforma Snapdragon Spaces.<\/p><\/blockquote><h4 id=\"gradle-build-issue\" class=\"code-line\" dir=\"auto\" data-line=\"313\">Problema di compilazione Gradle<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"315\">L&#8217;aggiunta di un archivio controller personalizzato pu\u00f2 causare errori di cache di Gradle. Eliminare la cartella Temp\/gradleOut generalmente risolve il problema.<\/p><h4 id=\"ar-foundation-issues\" class=\"code-line\" dir=\"auto\" data-line=\"317\">Problemi della Fondazione AR<\/h4><ul class=\"code-line\" dir=\"auto\" data-line=\"319\"><li class=\"code-line\" dir=\"auto\" data-line=\"319\"><strong>AR Raycast Hit returns wrong Trackable ID<\/strong>\u00a0\u2014\u00a0<code>ARRaycastHit.trackableId<\/code> restituisce sempre 0-0.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"320\"><strong>Plane Detection stalled<\/strong> \u2014 In AR Foundation 6.2.1, la triangolazione della mesh entra in un ciclo infinito.<\/li><\/ul><h4 id=\"xrit-issues\" class=\"code-line\" dir=\"auto\" data-line=\"322\">Problemi XRIT<\/h4><ul class=\"code-line\" dir=\"auto\" data-line=\"324\"><li class=\"code-line\" dir=\"auto\" data-line=\"324\"><strong>AR Raycast Manager added automatically<\/strong> \u2014 XRIT 3.x aggiunge un AR Raycast Manager quando \u00e8 presente un XR Raycast Interactor, abilitando la mesh spaziale indipendentemente dal flag EnableARRaycasting. Ci\u00f2 potrebbe ridurre le prestazioni.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"325\"><strong>Unsupported AR Mesh Manager properties<\/strong> \u2014 L&#8217;utilizzo di propriet\u00e0 non supportate genera avvisi in fase di esecuzione.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"326\"><strong>AR Camera Manager \/ AR Camera Background Issues<\/strong> \u2014 Il passaggio tra le scene con AR Camera Manager abilitato pu\u00f2 causare blocchi. Disabilita AR Camera Background per evitare problemi di rendering.<\/li><\/ul><h4 id=\"play-in-editor-known-issues\" class=\"code-line\" dir=\"auto\" data-line=\"328\">Riproduzione nell&#8217;editor &#8211; Problemi noti<\/h4><ul class=\"code-line\" dir=\"auto\" data-line=\"330\"><li class=\"code-line\" dir=\"auto\" data-line=\"330\"><strong>Perdita di memoria nella simulazione di accesso alla telecamera<\/strong> \u2014 Risolto in AR Foundation 6.0+.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"331\"><strong>Arresto anomalo di AR Mesh Manager senza Normals<\/strong> \u2014 Aggiorna AR Foundation o abilita le normali.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"332\"><strong>Il tracciamento tramite codice QR non \u00e8 stato caricato nella simulazione<\/strong> \u2014 Non esiste alcun sottosistema di simulazione; ignorare i controlli del sottosistema nelle build dell&#8217;editor.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"333\"><strong>Avviso di ScriptableSingleton<\/strong> \u2014 Risolto in AR Foundation 5.1.2+.<\/li><\/ul><hr class=\"code-line\" dir=\"auto\" data-line=\"335\" \/><h2 id=\"03-features\" class=\"code-line\" dir=\"auto\" data-line=\"337\">03 Funzionalit\u00e0<\/h2><p class=\"code-line\" dir=\"auto\" data-line=\"339\">Versione 1.0.2 | Dispositivo: Youbiquo Leonardo XR | SDK di base: Snapdragon Spaces 1.0.4<\/p><p class=\"code-line\" dir=\"auto\" data-line=\"341\">Questa pagina documenta le funzionalit\u00e0 disponibili nell&#8217;SDK di LeonardoXR, organizzate in due sezioni:<\/p><ul class=\"code-line\" dir=\"auto\" data-line=\"343\"><li class=\"code-line\" dir=\"auto\" data-line=\"343\"><strong>Funzionalit\u00e0 di Snapdragon Spaces<\/strong> \u2014 Funzionalit\u00e0 AR\/XR fornite dalla piattaforma Snapdragon Spaces, accessibili tramite AR Foundation.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"344\"><strong>Funzionalit\u00e0 di LeonardoXR <\/strong>\u2014 Funzionalit\u00e0 proprietarie specifiche di Leonardo XR.<\/li><\/ul><hr class=\"code-line\" dir=\"auto\" data-line=\"346\" \/><h3 id=\"snapdragon-spaces-features\" class=\"code-line\" dir=\"auto\" data-line=\"348\">Funzionalit\u00e0 di Snapdragon Spaces<\/h3><h4 id=\"local-anchors\" class=\"code-line\" dir=\"auto\" data-line=\"350\">Ancore locali<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"352\"><strong>Come abilitare<\/strong><\/p><p class=\"code-line\" dir=\"auto\" data-line=\"354\">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><p class=\"code-line\" dir=\"auto\" data-line=\"356\"><strong>Negozio Spaces Anchor<\/strong><\/p><blockquote class=\"code-line\" dir=\"auto\" data-line=\"358\"><p class=\"code-line\" dir=\"auto\" data-line=\"358\"><strong>NOTA<\/strong> Osserva l&#8217;ambiente circostante per generare una mappa di tracciamento migliore e ridurre i tempi di salvataggio\/caricamento. Il salvataggio simultaneo di pi\u00f9 ancore blocca il thread principale: utilizza la funzione di callback per salvare le ancore successive in sequenza.<\/p><\/blockquote><pre><span style=\"color: #003366;\"><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"360\"><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        <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\">SaveAnchorWithResult<\/span>(<span class=\"hljs-params\">ARAnchor anchor, <span class=\"hljs-built_in\">string<\/span> anchorName, Action&lt;SaveAnchorResult&gt; callback = <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\">DeleteSavedAnchor<\/span>(<span class=\"hljs-params\"><span class=\"hljs-built_in\">string<\/span> anchorName<\/span>)<\/span>;\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        <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><\/span><\/pre><p class=\"code-line\" dir=\"auto\" data-line=\"377\"><strong>Riferimento API<\/strong><\/p><table class=\"code-line\" dir=\"auto\" data-line=\"379\"><thead class=\"code-line\" dir=\"auto\" data-line=\"379\"><tr class=\"code-line\" dir=\"auto\" data-line=\"379\"><th>Method<\/th><th>Description<\/th><\/tr><\/thead><tbody class=\"code-line\" dir=\"auto\" data-line=\"381\"><tr class=\"code-line\" dir=\"auto\" data-line=\"381\"><td><code>ClearStore()<\/code><\/td><td>Clears the local anchor storage.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"382\"><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=\"383\"><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=\"384\"><td><code>DeleteSavedAnchor(name)<\/code><\/td><td>Deletes a saved anchor by name.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"385\"><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=\"386\"><td><code>LoadAllSavedAnchors(...)<\/code><\/td><td>Loads all stored anchors.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"387\"><td><code>GetSavedAnchorNames()<\/code><\/td><td>Returns all saved anchor names.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"388\"><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=\"390\"><strong>Valori di SaveAnchorResult<\/strong><\/p><table class=\"code-line\" dir=\"auto\" data-line=\"392\"><thead class=\"code-line\" dir=\"auto\" data-line=\"392\"><tr class=\"code-line\" dir=\"auto\" data-line=\"392\"><th>Value<\/th><th>Meaning<\/th><\/tr><\/thead><tbody class=\"code-line\" dir=\"auto\" data-line=\"394\"><tr class=\"code-line\" dir=\"auto\" data-line=\"394\"><td><code>PENDING<\/code><\/td><td>Anchor is awaiting save.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"395\"><td><code>SAVED<\/code><\/td><td>Successfully saved.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"396\"><td><code>FAILURE_RUNTIME_ERROR<\/code><\/td><td>Runtime error.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"397\"><td><code>FAILURE_STORE_NOT_LOADED<\/code><\/td><td>Anchor Store failed to load.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"398\"><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=\"400\" \/><h4 id=\"hit-testing\" class=\"code-line\" dir=\"auto\" data-line=\"402\">Hit test<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"404\">Abilita tramite <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Hit Testing<\/strong>.<\/p><p class=\"code-line\" dir=\"auto\" data-line=\"406\">Utilizza <strong>AR Raycast Manager<\/strong> di AR Foundation (XRRaycastSubsystem). Supporta il rilevamento continuo di intersezioni con piani e mesh del mondo reale. Il sistema proietta un raggio dalla telecamera (o da un punto specificato) e restituisce le intersezioni con le superfici rilevate. Ogni intersezione contiene posizione, normale e tipo di superficie (piano o mesh).<\/p><pre><span style=\"color: #003366;\"><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"408\">List&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\">\/\/ Place AR content at hitPose.position<\/span>\n}\n<\/code><\/span><\/pre><blockquote class=\"code-line\" dir=\"auto\" data-line=\"417\"><p class=\"code-line\" dir=\"auto\" data-line=\"417\"><strong>ATTENZIONE:<\/strong> ARRaycastHit.trackableId restituisce sempre 0-0. (Problema noto)<\/p><\/blockquote><hr class=\"code-line\" dir=\"auto\" data-line=\"419\" \/><h4 id=\"image-tracking\" class=\"code-line\" dir=\"auto\" data-line=\"421\">Tracciamento delle immagini<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"423\">Abilita tramite <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Image Tracking<\/strong>. Utilizza il <strong>AR Tracked Image Manager<\/strong>\u00a0(<code>XRImageTrackingSubsystem<\/code>). Supporta librerie di immagini di riferimento statiche e modificabili (in fase di esecuzione).<\/p><pre><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"425\"><span class=\"hljs-comment\"><span style=\"color: #003366;\">\/\/ Mutable library example<\/span><\/span><span style=\"color: #003366;\">\n<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 metres<\/span>\ntrackedImageManager.referenceLibrary = library;\n<\/span><\/code><\/pre><hr class=\"code-line\" dir=\"auto\" data-line=\"432\" \/><h4 id=\"plane-detection\" class=\"code-line\" dir=\"auto\" data-line=\"434\">Rilevamento aereo<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"436\">Abilita tramitte <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Plane Detection<\/strong>. Utiliza il <strong>AR Plane Manager<\/strong>\u00a0(<code>XRPlaneSubsystem<\/code>). L&#8217;utilizzo del backend di comprensione della scena \u00e8 abilitato per impostazione predefinita.<\/p><pre><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"438\">arPlaneManager.requestedDetectionMode = PlaneDetectionMode.Horizontal | PlaneDetectionMode.Vertical;\n<\/code><\/pre><blockquote class=\"code-line\" dir=\"auto\" data-line=\"442\"><p class=\"code-line\" dir=\"auto\" data-line=\"442\"><strong>ATTENZIONE<\/strong> In AR Foundation 6.0, la funzione di rilevamento dei piani entra in un ciclo infinito di triangolazione della mesh. In Unity 6 + OpenXR 1.15.1, la funzione di rilevamento dei piani non funziona nelle app Dual Render Fusion.<\/p><\/blockquote><hr class=\"code-line\" dir=\"auto\" data-line=\"444\" \/><h4 id=\"camera-frame-access\" class=\"code-line\" dir=\"auto\" data-line=\"446\">Accesso alla cornice della fotocamera<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"448\">Abilita tramitte <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Camera Frame Access<\/strong>. Utiliza il <strong>AR Camera Manager<\/strong>\u00a0(<code>XRCameraSubsystem<\/code>). Funzionalit\u00e0 chiave:<\/p><ul class=\"code-line\" dir=\"auto\" data-line=\"450\"><li class=\"code-line\" dir=\"auto\" data-line=\"450\">Raw camera frame access in YUV (Y&#8217;UV420sp) and YUYV \/ YUY2 formats.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"451\"><code>XRCpuImage.GetPlane(int)<\/code>\u00a0for CPU-side image access.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"452\"><code>XRCpuImage.ConvertAsync<\/code>\u00a0for asynchronous conversion.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"453\">GPU-accelerated RGB frame access for AiO devices (via OpenGL).<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"454\">Sensor extrinsics \/ pose retrieval via\u00a0<code>InputBindings<\/code>.<\/li><\/ul><blockquote class=\"code-line\" dir=\"auto\" data-line=\"456\"><p class=\"code-line\" dir=\"auto\" data-line=\"456\"><strong>NOTA<\/strong> Abilita il <strong>Allow &#8216;unsafe&#8217; Code<\/strong>\u00a0in\u00a0<strong>Player Settings &gt; Android &gt; Other Settings &gt; Script Compilation<\/strong> Quando si utilizza l&#8217;esempio Camera Frame Access, disabilitare AR Camera Background per evitare problemi di rendering.<\/p><\/blockquote><pre><span style=\"color: #003366;\"><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"458\"><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            XRCpuImage.Plane yPlane = image.GetPlane(<span class=\"hljs-number\">0<\/span>); <span class=\"hljs-comment\">\/\/ Luminance plane<\/span>\n            <span class=\"hljs-comment\">\/\/ yPlane.data contains the raw data<\/span>\n        }\n    }\n}\n<\/code><\/span><\/pre><hr class=\"code-line\" dir=\"auto\" data-line=\"472\" \/><h4 id=\"spatial-meshing\" class=\"code-line\" dir=\"auto\" data-line=\"474\">Mesh spaziale<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"476\">Abilita il <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Spatial Meshing<\/strong>. Utiliza il <strong>AR Mesh Manager<\/strong>\u00a0(<code>XRMeshSubsystem<\/code>). Il componente opzionale SpacesARMeshManagerConfig controlla le caratteristiche della mesh e gli offset di altezza della telecamera per TrackingOriginMode.Floor.<\/p><hr class=\"code-line\" dir=\"auto\" data-line=\"478\" \/><h4 id=\"qr-code-tracking\" class=\"code-line\" dir=\"auto\" data-line=\"480\">Monitoraggio del codice QR<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"482\">Abilita tramitte <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; QR Code Tracking<\/strong>. Utilizza il componente personalizzato SpacesQrCodeManager. Supporta diverse modalit\u00e0 di tracciamento per controllare la frequenza di aggiornamento dell&#8217;algoritmo.<\/p><pre><span style=\"color: #003366;\"><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"484\"><span class=\"hljs-comment\">\/\/ Editor build workaround (no simulation subsystem for QR Code Tracking)<\/span>\n<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><\/span><\/pre><hr class=\"code-line\" dir=\"auto\" data-line=\"496\" \/><h4 id=\"hand-tracking\" class=\"code-line\" dir=\"auto\" data-line=\"498\">Tracciamento delle mani<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"500\">Abilita tramitte <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Hand Tracking<\/strong>. Il tracciamento delle mani \u00e8 fornito dai pacchetti di plugin QCHT (Qualcomm Hand Tracking). LeonardoXR utilizza il pacchetto Unity XR Hands (v1.7.2) come livello di accesso ai dati per i dati articolari, integrato con le estensioni QCHT.<\/p><blockquote class=\"code-line\" dir=\"auto\" data-line=\"502\"><p class=\"code-line\" dir=\"auto\" data-line=\"502\"><strong>NOTA<\/strong> Affinch\u00e9 il tracciamento delle mani funzioni correttamente su LeonardoXR, l&#8217;opzione &#8220;<strong>Sottosistema di tracciamento delle mani<\/strong>&#8221; deve essere attiva in &#8220;<strong>Tutte le funzioni<\/strong>&#8221; di OpenXR.<\/p><\/blockquote><p class=\"code-line\" dir=\"auto\" data-line=\"504\">Per l&#8217;integrazione completa del tracciamento della mano con XR Interaction Toolkit, consultare il documento <a href=\"https:\/\/file+.vscode-resource.vscode-cdn.net\/c%3A\/Users\/Aida%20Garfami\/Downloads\/Documentation\/Documentation\/Documentation\/Documentation~\/LeonardoXR%20SDK%20Documentation_EN.md#05-interaction-package-guides\" data-href=\"#05-interaction-package-guides\">Interaction Package Guides<\/a><\/p><hr class=\"code-line\" dir=\"auto\" data-line=\"506\" \/><h4 id=\"foveated-rendering\" class=\"code-line\" dir=\"auto\" data-line=\"508\">Rendering fovetato<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"510\">Abilita tramitte <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Snapdragon Spaces &gt; Foveated Rendering<\/strong>. Riduce il carico sulla GPU eseguendo il rendering della periferia del campo visivo a una risoluzione inferiore. Le impostazioni di foveazione vengono mantenute anche dopo la pausa e la ripresa dell&#8217;applicazione.<\/p><table class=\"code-line\" dir=\"auto\" data-line=\"512\"><thead class=\"code-line\" dir=\"auto\" data-line=\"512\"><tr class=\"code-line\" dir=\"auto\" data-line=\"512\"><th>Level<\/th><th>Description<\/th><\/tr><\/thead><tbody class=\"code-line\" dir=\"auto\" data-line=\"514\"><tr class=\"code-line\" dir=\"auto\" data-line=\"514\"><td>None<\/td><td>No reduction.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"515\"><td>Low<\/td><td>Light reduction, imperceptible to most users.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"516\"><td>Medium<\/td><td>Good quality\/performance trade-off.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"517\"><td>High<\/td><td>Maximum reduction; recommended only for heavily 3D content scenes.<\/td><\/tr><\/tbody><\/table><hr class=\"code-line\" dir=\"auto\" data-line=\"519\" \/><h3 id=\"leonardoxr-features\" class=\"code-line\" dir=\"auto\" data-line=\"521\">Funzionalita di LeonardoXR<\/h3><p class=\"code-line\" dir=\"auto\" data-line=\"523\">Le seguenti funzionalit\u00e0 sono specifiche di Leonardo XR e non fanno parte della piattaforma base Snapdragon Spaces. Abilitale tramite <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; LeonardoXR feature group<\/strong>.<\/p><h4 id=\"dual-camera-access\" class=\"code-line\" dir=\"auto\" data-line=\"525\">Accesso alla doppia fotocamera<\/h4><blockquote class=\"code-line\" dir=\"auto\" data-line=\"527\"><p class=\"code-line\" dir=\"auto\" data-line=\"527\"><strong>DOCUMENTAZIONE IN CORSO<\/strong> Questa funzionalit\u00e0 consente l&#8217;accesso sincronizzato ai fotogrammi di entrambe le fotocamere Leonardo XR. La documentazione API dettagliata, la configurazione e gli esempi saranno disponibili in una versione futura.<\/p><\/blockquote><h4 id=\"qnn-inference-plugin\" class=\"code-line\" dir=\"auto\" data-line=\"529\">Plugin di inferenza QNN<\/h4><blockquote class=\"code-line\" dir=\"auto\" data-line=\"531\"><p class=\"code-line\" dir=\"auto\" data-line=\"531\"><strong>DOCUMENTAZIONE IN CORSO<\/strong> Questa funzionalit\u00e0 espone le capacit\u00e0 di inferenza neurale dell&#8217;hardware Leonardo XR tramite il runtime Qualcomm Neural Network (QNN), consentendo l&#8217;esecuzione di modelli di IA\/ML direttamente sulla NPU del dispositivo. La documentazione API dettagliata, il flusso di lavoro di conversione dei modelli e gli esempi saranno disponibili in una versione futura.<\/p><\/blockquote><h4 id=\"intercept-openxr-function\" class=\"code-line\" dir=\"auto\" data-line=\"533\">Intercetta la funzione OpenXR<\/h4><blockquote class=\"code-line\" dir=\"auto\" data-line=\"535\"><p class=\"code-line\" dir=\"auto\" data-line=\"535\"><strong>DOCUMENTAZIONE IN CORSO<\/strong> Questa funzionalit\u00e0 avanzata fornisce un meccanismo per intercettare e sovrascrivere le funzioni OpenXR di basso livello. \u00c8 pensata per casi d&#8217;uso specifici che richiedono il controllo diretto sul livello OpenXR. La documentazione dettagliata sar\u00e0 disponibile in una versione futura.<\/p><\/blockquote><hr class=\"code-line\" dir=\"auto\" data-line=\"537\" \/><h2 id=\"04-samples-guide\" class=\"code-line\" dir=\"auto\" data-line=\"539\">04 Guida ai campioni<\/h2><p class=\"code-line\" dir=\"auto\" data-line=\"541\">Versione 1.0.2 | Dispositivo: Youbiquo Leonardo XR | SDK di base: Snapdragon Spaces 1.0.4<\/p><p class=\"code-line\" dir=\"auto\" data-line=\"543\">I campioni sono organizzati in due sezioni:<\/p><ul class=\"code-line\" dir=\"auto\" data-line=\"545\"><li class=\"code-line\" dir=\"auto\" data-line=\"545\"><strong>Campioni LeonardoXR<\/strong> \u2014 campioni specifici per le funzionalit\u00e0 proprietarie di Leonardo XR.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"546\"><strong>Esempi principali di Snapdragon Spaces<\/strong> \u2014 Esempi forniti da Qualcomm per le funzionalit\u00e0 AR\/XR di base.<\/li><\/ul><h3 id=\"importing-samples\" class=\"code-line\" dir=\"auto\" data-line=\"548\">Importazione di campioni<\/h3><h4 id=\"snapdragon-spaces-core-samples\" class=\"code-line\" dir=\"auto\" data-line=\"550\">Esempi principali di Snapdragon Spaces<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"552\">Il pacchetto Core Samples \u00e8 importabile da <strong>Window &gt; Package Manager &gt; Snapdragon Spaces &gt; Core Samples<\/strong>. Dopo l&#8217;importazione, aggiungi tutte le scene alla build tramite <strong>Window &gt; XR &gt; Snapdragon Spaces &gt; Add Scenes to Build Settings<\/strong>.<\/p><h4 id=\"leonardoxr-core-samples\" class=\"code-line\" dir=\"auto\" data-line=\"554\">Campioni principali LeonardoXR<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"556\">Il pacchetto LeonardoXR Core Samples \u00e8 importabile da <strong>Window &gt; Package Manager &gt; LeonardoXR &gt; Core Samples<\/strong>. Dopo l&#8217;importazione, le scene sono disponibili in <code>Samples\/LeonardoXR\/[version]\/Core Samples\/Scenes\/<\/code>.<\/p><hr class=\"code-line\" dir=\"auto\" data-line=\"558\" \/><h3 id=\"leonardoxr-samples\" class=\"code-line\" dir=\"auto\" data-line=\"560\">Campioni LeonardoXR<\/h3><h4 id=\"dual-camera-access-sample\" class=\"code-line\" dir=\"auto\" data-line=\"562\">Esempio di accesso con doppia fotocamera<\/h4><blockquote class=\"code-line\" dir=\"auto\" data-line=\"564\"><p class=\"code-line\" dir=\"auto\" data-line=\"564\"><strong>DOCUMENTAZIONE IN CORSO<\/strong> Questo esempio mostrer\u00e0 come accedere ai fotogrammi sincronizzati da entrambe le fotocamere Leonardo XR tramite la funzione Dual Camera Access.<\/p><\/blockquote><ul class=\"code-line\" dir=\"auto\" data-line=\"566\"><li class=\"code-line\" dir=\"auto\" data-line=\"566\"><strong>Scena<\/strong>:\u00a0<code>Samples\/LeonardoXR\/...\/Core Samples\/Scenes\/DualCameraAccess<\/code><\/li><li class=\"code-line\" dir=\"auto\" data-line=\"567\"><strong>Prerequisiti<\/strong>: Accesso a doppia fotocamera abilitato nel gruppo di funzionalit\u00e0 LeonardoXR.<\/li><\/ul><div class=\"code-line\" dir=\"auto\" data-line=\"569\">\u00a0<\/div><h4 id=\"intercept-openxr-function-sample\" class=\"code-line\" dir=\"auto\" data-line=\"576\">Esempio di funzione Intercetta OpenXR<\/h4><blockquote class=\"code-line\" dir=\"auto\" data-line=\"578\"><p class=\"code-line\" dir=\"auto\" data-line=\"578\"><strong>DOCUMENTAZIONE IN CORSO<\/strong> Questo esempio mostrer\u00e0 come intercettare le funzioni OpenXR di basso livello tramite la funzionalit\u00e0 InterceptOpenXRFunction.<\/p><\/blockquote><ul class=\"code-line\" dir=\"auto\" data-line=\"580\"><li class=\"code-line\" dir=\"auto\" data-line=\"580\"><strong>Scena<\/strong>:\u00a0<code>Samples\/LeonardoXR\/...\/Core Samples\/Scenes\/InterceptOpenXRFunction<\/code><\/li><li class=\"code-line\" dir=\"auto\" data-line=\"581\"><strong>Prerequisiti<\/strong>: Intercept OpenXR Function enabled in LeonardoXR feature group.<\/li><\/ul><hr class=\"code-line\" dir=\"auto\" data-line=\"583\" \/><h3 id=\"snapdragon-spaces-core-samples-1\" class=\"code-line\" dir=\"auto\" data-line=\"585\">Esempi principali di Snapdragon Spaces<\/h3><h4 id=\"local-anchors-sample\" class=\"code-line\" dir=\"auto\" data-line=\"587\">Esempio di ancore locali<\/h4><ul class=\"code-line\" dir=\"auto\" data-line=\"589\"><li class=\"code-line\" dir=\"auto\" data-line=\"589\"><strong>Scena<\/strong>:\u00a0<code>Samples\/Snapdragon Spaces\/...\/Core Samples\/Scenes\/Anchor<\/code><\/li><\/ul><p class=\"code-line\" dir=\"auto\" data-line=\"591\">Questo esempio mostra come creare e distruggere punti di ancoraggio locali per tracciare con precisione un punto nel mondo reale. Richiede che la funzione <strong>&#8220;Spatial Anchors&#8221;<\/strong> sia abilitata in OpenXR.<\/p><p class=\"code-line\" dir=\"auto\" data-line=\"593\"><strong>Come funziona<\/strong><\/p><p class=\"code-line\" dir=\"auto\" data-line=\"595\">Un dispositivo di posizionamento trasparente fluttua a 1 metro di distanza dalla telecamera. Quando l&#8217;opzione &#8220;Posiziona ancoraggio sulle superfici&#8221; \u00e8 abilitata, un raggio viene proiettato in avanti a ogni fotogramma. Quando una superficie viene colpita, il dispositivo diventa giallo. Toccando il touchpad o utilizzando l&#8217;interattore oculare si crea un ARAnchor con un dispositivo di tracciamento.<\/p><pre><span style=\"color: #003366;\"><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"597\"><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><\/span><\/pre><p class=\"code-line\" dir=\"auto\" data-line=\"612\"><strong>Salvataggio, eliminazione e caricamento degli ancoraggi<\/strong><\/p><ul class=\"code-line\" dir=\"auto\" data-line=\"614\"><li dir=\"auto\" data-line=\"614\"><p>Abilita &#8220;Salva nuovi ancoraggi nella memoria locale&#8221; per rendere persistente ogni nuovo ancoraggio.<\/p><\/li><li dir=\"auto\" data-line=\"614\"><p>Cubo bianco sul gizmo <strong>=<\/strong> ancoraggio salvato e tracciato; cubo rosso <strong>=<\/strong> ancoraggio non tracciato.<\/p><\/li><li dir=\"auto\" data-line=\"614\"><p><strong>Carica tutti gli ancoraggi salvati:<\/strong> carica e tenta di localizzare tutti gli ancoraggi memorizzati.<\/p><\/li><li dir=\"auto\" data-line=\"614\"><p><strong>Svuota la memoria:<\/strong> elimina tutti gli ancoraggi memorizzati (non distrugge gli ancoraggi gi\u00e0 caricati).<\/p><\/li><li dir=\"auto\" data-line=\"614\"><p><strong>Distruggi tutti gli ancoraggi:<\/strong> distrugge tutti i GameObject di ancoraggio attivi (con un breve ritardo).<\/p><\/li><\/ul><h4 id=\"hand-tracking-sample\" class=\"code-line\" dir=\"auto\" data-line=\"620\">Esempio di tracciamento delle mani<\/h4><ul class=\"code-line\" dir=\"auto\" data-line=\"622\"><li class=\"code-line\" dir=\"auto\" data-line=\"622\"><strong>Scena<\/strong>:\u00a0<code>Samples\/...\/Core Samples\/Scenes\/HandTracking<\/code><\/li><\/ul><p class=\"code-line\" dir=\"auto\" data-line=\"624\">Dimostra la visualizzazione delle articolazioni della mano e il riconoscimento dei gesti tramite il pacchetto di interazione QCHT. Richiede i pacchetti Hand Tracking e QCHT\/XR Hands.<\/p><h4 id=\"hit-testing-sample\" class=\"code-line\" dir=\"auto\" data-line=\"626\">Esempio di hit test<\/h4><ul class=\"code-line\" dir=\"auto\" data-line=\"628\"><li class=\"code-line\" dir=\"auto\" data-line=\"628\"><strong>Scena<\/strong>:\u00a0<code>Samples\/...\/Core Samples\/Scenes\/HitTesting<\/code><\/li><\/ul><p class=\"code-line\" dir=\"auto\" data-line=\"630\">Dimostra il rilevamento continuo di collisioni tramite raycast su piani e mesh del mondo reale utilizzando ARRaycastManager. Mostra come posizionare oggetti virtuali sulle superfici rilevate.<\/p><h4 id=\"image-tracking-sample\" class=\"code-line\" dir=\"auto\" data-line=\"632\">Esempio di monitoraggio delle immagini<\/h4><ul class=\"code-line\" dir=\"auto\" data-line=\"634\"><li class=\"code-line\" dir=\"auto\" data-line=\"634\"><strong>Scena<\/strong>:\u00a0<code>Samples\/...\/Core Samples\/Scenes\/ImageTracking<\/code><\/li><\/ul><p class=\"code-line\" dir=\"auto\" data-line=\"636\">Dimostra il tracciamento di immagini di riferimento stampate e la sovrapposizione di contenuti virtuali. Supporta librerie di immagini statiche e modificabili.<\/p><h4 id=\"plane-detection-sample\" class=\"code-line\" dir=\"auto\" data-line=\"638\">Esempio di rilevamento aereo<\/h4><ul class=\"code-line\" dir=\"auto\" data-line=\"640\"><li class=\"code-line\" dir=\"auto\" data-line=\"640\"><strong>Scena<\/strong>:\u00a0<code>Samples\/...\/Core Samples\/Scenes\/PlaneDetection<\/code><\/li><\/ul><p class=\"code-line\" dir=\"auto\" data-line=\"642\">Dimostra il rilevamento e la visualizzazione di piani orizzontali e verticali tramite ARPlaneManager. Supporta le modalit\u00e0 di rilevamento e i piani convessi opzionali.<\/p><h4 id=\"camera-frame-access-sample\" class=\"code-line\" dir=\"auto\" data-line=\"644\">Esempio di accesso al frame della fotocamera<\/h4><ul class=\"code-line\" dir=\"auto\" data-line=\"646\"><li class=\"code-line\" dir=\"auto\" data-line=\"646\"><strong>Scena<\/strong>:\u00a0<code>Samples\/...\/Core Samples\/Scenes\/CameraFrameAccess<\/code><\/li><\/ul><p class=\"code-line\" dir=\"auto\" data-line=\"648\">Dimostra il recupero dei frame raw della telecamera (YUV\/YUYV) utilizzando ARCameraManager. Include informazioni estrinseche del sensore, query sul conteggio delle telecamere e accesso ai frame accelerato dalla GPU. Richiede l&#8217;opzione <strong>Allow &#8216;unsafe&#8217; Code<\/strong> nelle impostazioni del lettore.<\/p><h4 id=\"spatial-meshing-sample\" class=\"code-line\" dir=\"auto\" data-line=\"650\">Esempio di mesh spaziale<\/h4><ul class=\"code-line\" dir=\"auto\" data-line=\"652\"><li class=\"code-line\" dir=\"auto\" data-line=\"652\"><strong>Scena<\/strong>:\u00a0<code>Samples\/...\/Core Samples\/Scenes\/SpatialMeshing<\/code><\/li><\/ul><p class=\"code-line\" dir=\"auto\" data-line=\"654\">Dimostra la creazione di mesh ambientali in tempo reale utilizzando ARMeshManager. Include un cursore per la regolazione dell&#8217;opacit\u00e0 e il componente opzionale SpacesARMeshManagerConfig.<\/p><h4 id=\"qr-code-tracking-sample\" class=\"code-line\" dir=\"auto\" data-line=\"656\">Esempio di tracciamento tramite codice QR<\/h4><ul class=\"code-line\" dir=\"auto\" data-line=\"658\"><li class=\"code-line\" dir=\"auto\" data-line=\"658\"><strong>Scena<\/strong>:\u00a0<code>Samples\/...\/Core Samples\/Scenes\/QRCodeTracking<\/code><\/li><\/ul><p class=\"code-line\" dir=\"auto\" data-line=\"660\">Dimostra la scansione e il tracciamento dei codici QR tramite SpacesQrCodeManager. Sono disponibili diverse modalit\u00e0 di tracciamento.<\/p><h4 id=\"xr-interaction-toolkit-sample\" class=\"code-line\" dir=\"auto\" data-line=\"662\">Esempio di toolkit di interazione XR<\/h4><ul class=\"code-line\" dir=\"auto\" data-line=\"664\"><li class=\"code-line\" dir=\"auto\" data-line=\"664\"><strong>Scena<\/strong>:\u00a0<code>Samples\/...\/Core Samples\/Scenes\/XRInteractionToolkit<\/code><\/li><\/ul><p class=\"code-line\" dir=\"auto\" data-line=\"666\">Dimostra le interazioni XRIT standard (interagenti a raggio, interagenti diretti, teletrasporto) in un progetto Snapdragon Spaces. Compatibile con la configurazione LeonardoXR.<\/p><h4 id=\"composition-layer-components\" class=\"code-line\" dir=\"auto\" data-line=\"668\">Componenti dello strato di composizione<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"670\">Il livello di <strong>The\u00a0Spaces Composition<\/strong> renderizza le texture direttamente sull&#8217;HMD, bypassando le fasi di post-elaborazione. I tipi di geometria supportati sono Quad, Cilindro, Sfera e Cubo. Utile per interfacce utente ad alta nitidezza o elementi che devono mantenere la qualit\u00e0 indipendentemente dagli effetti della scena.<\/p><h4 id=\"additional-samples\" class=\"code-line\" dir=\"auto\" data-line=\"672\">Campioni aggiuntivi<\/h4><table class=\"code-line\" dir=\"auto\" data-line=\"674\"><thead class=\"code-line\" dir=\"auto\" data-line=\"674\"><tr class=\"code-line\" dir=\"auto\" data-line=\"674\"><th>Sample<\/th><th>Description<\/th><\/tr><\/thead><tbody class=\"code-line\" dir=\"auto\" data-line=\"676\"><tr class=\"code-line\" dir=\"auto\" data-line=\"676\"><td>Display Refresh Rate<\/td><td>Query and runtime setting of display refresh rate via the\u00a0<code>XR_EXT_display_refresh_rate<\/code>\u00a0extension.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"677\"><td>Performance Settings<\/td><td>Setting CPU\/GPU performance levels via the\u00a0<code>XR_EXT_performance_settings<\/code>\u00a0extension.<\/td><\/tr><\/tbody><\/table><hr class=\"code-line\" dir=\"auto\" data-line=\"679\" \/><h2 id=\"05-interaction-package-guides\" class=\"code-line\" dir=\"auto\" data-line=\"681\">05 Guide ai pacchetti di interazione<\/h2><p class=\"code-line\" dir=\"auto\" data-line=\"683\">Versione 1.0.2 | Dispositivo: Youbiquo Leonardo XR | SDK di base: Snapdragon Spaces 1.0.4<\/p><p class=\"code-line\" dir=\"auto\" data-line=\"685\">Questa guida descrive come configurare il livello di interazione per le applicazioni LeonardoXR utilizzando i pacchetti standard di Unity:<\/p><ul class=\"code-line\" dir=\"auto\" data-line=\"687\"><li class=\"code-line\" dir=\"auto\" data-line=\"687\"><strong>XR Interaction Toolkit (XRIT) 3.3.0<\/strong> \u2014 Sistema di interazione di alto livello per controllori, interattori a raggio e interattori diretti.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"688\"><strong>XR Hands 1.7.2<\/strong> \u2014 accesso ai dati articolari della mano e riconoscimento dei gesti.<\/li><\/ul><h3 id=\"dependencies-and-versions\" class=\"code-line\" dir=\"auto\" data-line=\"690\">Dipendenze e versioni<\/h3><table class=\"code-line\" dir=\"auto\" data-line=\"692\"><thead class=\"code-line\" dir=\"auto\" data-line=\"692\"><tr class=\"code-line\" dir=\"auto\" data-line=\"692\"><th>Package<\/th><th>Version<\/th><th>Source<\/th><\/tr><\/thead><tbody class=\"code-line\" dir=\"auto\" data-line=\"694\"><tr class=\"code-line\" dir=\"auto\" data-line=\"694\"><td>XR Interaction Toolkit<\/td><td>3.3.0<\/td><td>Unity Registry<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"695\"><td>XR Hands<\/td><td>1.7.2<\/td><td>Unity Registry<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"696\"><td>AR Foundation<\/td><td>6.2.1<\/td><td>Unity Registry<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"697\"><td>Snapdragon Spaces SDK<\/td><td>1.0.4<\/td><td>Tarball (Qualcomm)<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"698\"><td>LeonardoXR SDK<\/td><td>1.0.2<\/td><td>Tarball (Youbiquo)<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"699\"><td>UniTask<\/td><td>2.5.10<\/td><td>Unity Registry<\/td><\/tr><\/tbody><\/table><blockquote class=\"code-line\" dir=\"auto\" data-line=\"701\"><p class=\"code-line\" dir=\"auto\" data-line=\"701\"><strong>NOTA:<\/strong> Tutte le dipendenze devono essere installate come descritto nella guida introduttiva prima di procedere con la configurazione dell&#8217;interazione.<\/p><\/blockquote><hr class=\"code-line\" dir=\"auto\" data-line=\"703\" \/><h3 id=\"1-xr-interaction-toolkit-configuration\" class=\"code-line\" dir=\"auto\" data-line=\"705\">1. Configurazione del toolkit di interazione XR<\/h3><h4 id=\"installation\" class=\"code-line\" dir=\"auto\" data-line=\"707\">Installazione<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"709\">Installa tramite <strong>Window &gt; Package Manager &gt; Unity Registry &gt; XR Interaction Toolkit &gt; Install<\/strong> (version 3.3.0). <span class=\"Y2IQFc\" lang=\"it\">Se viene richiesto <\/span>&#8220;Enable the new input system?&#8221;, clic <strong>Yes<\/strong>. <span class=\"Y2IQFc\" lang=\"it\">Se viene richiesto<\/span> &#8220;XR Interaction Layer Mask Update Required&#8221;, clic <strong>I Made a Backup, Go Ahead!<\/strong> (per nuovi progetti) o <strong>No Thanks<\/strong> se non era presente alcuna versione precedente di XRIT.<\/p><h4 id=\"import-starter-assets\" class=\"code-line\" dir=\"auto\" data-line=\"711\">Importa risorse iniziali<\/h4><ol class=\"code-line\" dir=\"auto\" data-line=\"713\"><li class=\"code-line\" dir=\"auto\" data-line=\"713\">Apri <strong>Window &gt; Package Manager<\/strong>, scegli <strong>In Project<\/strong> poi <strong>XR Interaction Toolkit<\/strong>.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"714\">Sotto <strong>Samples<\/strong>, clic <strong>Import<\/strong> su <strong>Starter Assets<\/strong>.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"715\">Clic anche su <strong>Import<\/strong> su <strong>Hand Interaction Demo<\/strong> (richiesto per i campioni di tracciamento manuale).<\/li><\/ol><p class=\"code-line\" dir=\"auto\" data-line=\"717\">Le risorse iniziali includono:<\/p><ul class=\"code-line\" dir=\"auto\" data-line=\"718\"><li class=\"code-line\" dir=\"auto\" data-line=\"718\">Asset di input preconfigurato per controller e mani XR.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"718\">Prefab di riferimento per XR Origin con Ray Interactor e Direct Interactor.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"718\">Materiali di base e shader per il feedback visivo dell&#8217;interazione.<\/li><\/ul><h4 id=\"configure-input-actions\" class=\"code-line\" dir=\"auto\" data-line=\"722\">Configura le azioni di input<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"724\">Dopo l&#8217;importazione, un <code>XRI Default Input Actions<\/code> la risorsa viene aggiunta <code>Assets\/Samples\/XR Interaction Toolkit\/[version]\/Starter Assets\/<\/code>.Questo asset \u00e8 preconfigurato per i profili controller standard (incluso il Companion Controller tramite il profilo Microsoft MMRC) e per le mani.<\/p><p class=\"code-line\" dir=\"auto\" data-line=\"726\">Per associare la risorsa al sistema: vai a <strong>Edit &gt; Project Settings &gt; XR Plug-in Management &gt; Input System<\/strong> e garantire <strong>Active Input Handling<\/strong> \u00e8 impostato su <code>Both<\/code> o <code>Input System Package (New)<\/code>.<\/p><hr class=\"code-line\" dir=\"auto\" data-line=\"728\" \/><h3 id=\"2-scene-configuration--xr-origin\" class=\"code-line\" dir=\"auto\" data-line=\"730\">2. Configurazione della scena \u2014 XR Origin<\/h3><h4 id=\"base-scene-hierarchy\" class=\"code-line\" dir=\"auto\" data-line=\"732\">Gerarchia della scena di base<\/h4><pre><code class=\"code-line\" dir=\"auto\" data-line=\"734\">AR Session\nXR Origin (Action-based)\n  \u2514\u2500\u2500 Camera Offset\n        \u251c\u2500\u2500 Main Camera (tagged \"MainCamera\")\n        \u251c\u2500\u2500 LeftHand Controller\n        \u2502     \u251c\u2500\u2500 XR Ray Interactor (left)\n        \u2502     \u2514\u2500\u2500 XR Direct Interactor (left)\n        \u2514\u2500\u2500 RightHand Controller\n              \u251c\u2500\u2500 XR Ray Interactor (right)\n              \u2514\u2500\u2500 XR Direct Interactor (right)\n<\/code><\/pre><p class=\"code-line\" dir=\"auto\" data-line=\"747\">Crea la struttura di base selezionando <strong>GameObject &gt; XR &gt; XR Origin (Action-based)<\/strong>.<\/p><blockquote class=\"code-line\" dir=\"auto\" data-line=\"749\"><p class=\"code-line\" dir=\"auto\" data-line=\"749\"><strong>NOTA<\/strong> Disabilita <strong>AR Camera Background<\/strong> \u2014Non supportato su LeonardoXR e disabilitato automaticamente in fase di esecuzione. Disabilitare anche <strong>AR Camera Manager<\/strong> se non si acquisiscono frame RGB dalla fotocamera.<\/p><\/blockquote><h4 id=\"input-action-manager\" class=\"code-line\" dir=\"auto\" data-line=\"751\">Gestore delle azioni di input<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"753\">Aggiunga il componente <strong>Input Action Manager<\/strong> all&#8217;origine XR (o a un GameObject persistente). Nel Campo di <strong>Action Assets<\/strong> assegna:<\/p><ul class=\"code-line\" dir=\"auto\" data-line=\"755\"><li class=\"code-line\" dir=\"auto\" data-line=\"755\"><code>XR Input Actions<\/code>\u00a0(from\u00a0<code>Samples\/LeonardoXR SDK\/[version]\/Core Samples\/Shared Assets<\/code>).<\/li><\/ul><hr class=\"code-line\" dir=\"auto\" data-line=\"757\" \/><h3 id=\"3-xr-hands-configuration\" class=\"code-line\" dir=\"auto\" data-line=\"759\">3. Configurazione delle lancette XR<\/h3><h4 id=\"installation-1\" class=\"code-line\" dir=\"auto\" data-line=\"761\">Installazione<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"763\">Installa tramite <strong>Window &gt; Package Manager &gt; Unity Registry &gt; XR Hands &gt; Install<\/strong> (versione 1.7.2).<\/p><h4 id=\"import-hand-samples\" class=\"code-line\" dir=\"auto\" data-line=\"765\">Importa campioni manuali<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"767\">Apri <strong>Window &gt; Package Manager &gt; In Project &gt; XR Hands &gt; Samples<\/strong> e importa:<\/p><ul class=\"code-line\" dir=\"auto\" data-line=\"768\"><li class=\"code-line\" dir=\"auto\" data-line=\"768\"><strong>Gestures<\/strong> \u2014 sistema di riconoscimento dei gesti.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"769\"><strong>Hand Visualizer<\/strong> \u2014 Visualizzazione della mesh manuale.<\/li><\/ul><h4 id=\"enable-hand-tracking-subsystem\" class=\"code-line\" dir=\"auto\" data-line=\"771\">Abilita il sottosistema di tracciamento della mano<\/h4><ol class=\"code-line\" dir=\"auto\" data-line=\"773\"><li class=\"code-line\" dir=\"auto\" data-line=\"773\">Vai a <strong>Edit &gt; Project Settings &gt; XR Plug-in Management &gt; OpenXR<\/strong>\u00a0(Android tab).<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"774\">Sotto <strong>All Features<\/strong>, abilita <strong>Hand Tracking Subsystem<\/strong>.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"775\">Abilita anche <strong>Hand Tracking<\/strong> nel Snapdragon Spaces feature group.<\/li><\/ol><blockquote class=\"code-line\" dir=\"auto\" data-line=\"777\"><p class=\"code-line\" dir=\"auto\" data-line=\"777\"><strong>NOTA<\/strong> Il sottosistema di tracciamento della mano deve essere abilitato in <strong>&#8220;All Features&#8221;<\/strong>, non solo nella sezione <strong>&#8220;Snapdragon Spaces&#8221;<\/strong>, affinch\u00e9 funzioni correttamente su LeonardoXR.<\/p><\/blockquote><h4 id=\"hand-data-access-via-xr-hands-api\" class=\"code-line\" dir=\"auto\" data-line=\"779\">Accesso ai dati della mano tramite l&#8217;API XR Hands<\/h4><pre><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"781\"><span class=\"hljs-keyword\"><span style=\"color: #003366;\">using<\/span><\/span><span style=\"color: #003366;\"> UnityEngine.XR.Hands;\n\nXRHandSubsystem handSubsystem = XRHandSubsystemUtility.GetSubsystem();\n<span class=\"hljs-keyword\">if<\/span> (handSubsystem != <span class=\"hljs-literal\">null<\/span>)\n{\n    XRHand leftHand = handSubsystem.leftHand;\n    <span class=\"hljs-keyword\">if<\/span> (leftHand.isTracked)\n    {\n        <span class=\"hljs-keyword\">if<\/span> (leftHand.GetJoint(XRHandJointID.IndexTip).TryGetPose(<span class=\"hljs-keyword\">out<\/span> Pose indexTipPose))\n        {\n            <span class=\"hljs-comment\">\/\/ indexTipPose.position = position of left index fingertip<\/span>\n        }\n    }\n}\n<\/span><\/code><\/pre><h4 id=\"gesture-recognition\" class=\"code-line\" dir=\"auto\" data-line=\"798\">Riconoscimento dei gesti<\/h4><pre><span style=\"color: #003366;\"><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"800\">[<span class=\"hljs-meta\">SerializeField<\/span>] XRHandGestures gestures;\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">OnEnable<\/span>()<\/span>\n{\n    gestures.gesturePerformed += OnGesturePerformed;\n}\n\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">OnGesturePerformed<\/span>(<span class=\"hljs-params\">XRHandGesture gesture, Handedness handedness<\/span>)<\/span>\n{\n    Debug.Log(<span class=\"hljs-string\">$\"Gesture: <span class=\"hljs-subst\">{gesture.gestureName}<\/span> performed with <span class=\"hljs-subst\">{handedness}<\/span>\"<\/span>);\n}\n<\/code><\/span><\/pre><hr class=\"code-line\" dir=\"auto\" data-line=\"814\" \/><h3 id=\"4-configuring-interactables\" class=\"code-line\" dir=\"auto\" data-line=\"816\">4. Configurazione degli elementi interattivi<\/h3><h4 id=\"adding-an-interactable-to-an-object\" class=\"code-line\" dir=\"auto\" data-line=\"818\">Aggiungere un elemento interattivo a un oggetto<\/h4><ol class=\"code-line\" dir=\"auto\" data-line=\"820\"><li class=\"code-line\" dir=\"auto\" data-line=\"820\">Add a\u00a0<strong>Collider<\/strong>\u00a0to the object (e.g. Box Collider).<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"821\">Add\u00a0<strong>XR Grab Interactable<\/strong>\u00a0for grabbable objects, or\u00a0<strong>XR Simple Interactable<\/strong>\u00a0for objects that receive events without being moved.<\/li><\/ol><pre><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"823\"><span class=\"hljs-keyword\"><span style=\"color: #003366;\">public<\/span><\/span><span style=\"color: #003366;\"> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">MyButton<\/span> : <span class=\"hljs-title\">MonoBehaviour<\/span>\n{\n    [<span class=\"hljs-meta\">SerializeField<\/span>] XRSimpleInteractable interactable;\n\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">OnEnable<\/span>()<\/span>\n    {\n        interactable.selectEntered.AddListener(OnSelected);\n    }\n\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">OnSelected<\/span>(<span class=\"hljs-params\">SelectEnterEventArgs args<\/span>)<\/span>\n    {\n        Debug.Log(<span class=\"hljs-string\">\"Selected by: \"<\/span> + args.interactorObject);\n    }\n}\n<\/span><\/code><\/pre><h4 id=\"interaction-layer-mask\" class=\"code-line\" dir=\"auto\" data-line=\"840\">Maschera del livello di interazione<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"842\">XRIT 3.x utiliza <strong>Interaction Layer Masks<\/strong> per filtrare quali interattori possono interagire con quali oggetti interattivi:<\/p><pre><span style=\"color: #003366;\"><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"844\">interactable.interactionLayers = InteractionLayerMask.GetMask(<span class=\"hljs-string\">\"Default\"<\/span>, <span class=\"hljs-string\">\"UI\"<\/span>);\u00a0<\/code><\/span><\/pre><hr class=\"code-line\" dir=\"auto\" data-line=\"848\" \/><h3 id=\"5-ui-canvas-and-interaction\" class=\"code-line\" dir=\"auto\" data-line=\"850\">5. Canvas dell&#8217;interfaccia utente e interazione<\/h3><h4 id=\"world-space-canvas\" class=\"code-line\" dir=\"auto\" data-line=\"852\">Tela dello spazio mondiale<\/h4><ol class=\"code-line\" dir=\"auto\" data-line=\"854\"><li class=\"code-line\" dir=\"auto\" data-line=\"854\">Crea un <strong>Canvas<\/strong> e impostare <strong>Render Mode<\/strong> a\u00a0<strong>World Space<\/strong>.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"855\">Aggiungi il <strong>Tracked Device Graphic Raycaster<\/strong> componente per Canvas (sostituisce il Graphic Raycaster standard).<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"856\">Aggiungi <strong>XR UI Input Module<\/strong> all&#8217;oggetto di gioco EventSystem nella scena (sostituisce il modulo di input predefinito Input System UI).<\/li><\/ol><h4 id=\"recommended-canvas-settings\" class=\"code-line\" dir=\"auto\" data-line=\"858\">Impostazioni tela consigliate<\/h4><table class=\"code-line\" dir=\"auto\" data-line=\"860\"><thead class=\"code-line\" dir=\"auto\" data-line=\"860\"><tr class=\"code-line\" dir=\"auto\" data-line=\"860\"><th>Parameter<\/th><th>Recommended Value<\/th><\/tr><\/thead><tbody class=\"code-line\" dir=\"auto\" data-line=\"862\"><tr class=\"code-line\" dir=\"auto\" data-line=\"862\"><td>Render Mode<\/td><td>World Space<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"863\"><td>Dynamic Pixels Per Unit<\/td><td>1<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"864\"><td>Reference Pixels Per Unit<\/td><td>100<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"865\"><td>Scale<\/td><td>0.001 (for a ~1m canvas = 1000 pixel units)<\/td><\/tr><\/tbody><\/table><hr class=\"code-line\" dir=\"auto\" data-line=\"867\" \/><h3 id=\"6-combining-controller-and-hand-tracking\" class=\"code-line\" dir=\"auto\" data-line=\"869\">6. Combinazione di controllo e tracciamento della mano<\/h3><p class=\"code-line\" dir=\"auto\" data-line=\"871\">Su LeonardoXR non \u00e8 possibile utilizzare contemporaneamente i controller del visore e il tracciamento completo delle mani (con raycast da entrambe le mani) a causa di conflitti tra i profili OpenXR.<\/p><h4 id=\"option-a--controller-only-companion-controller\" class=\"code-line\" dir=\"auto\" data-line=\"873\">Option A \u2014 Solo controller (controller ausiliario)<\/h4><ul class=\"code-line\" dir=\"auto\" data-line=\"875\"><li class=\"code-line\" dir=\"auto\" data-line=\"875\">Aggiungi il <strong>Microsoft MMRC Profile<\/strong> ai profili abilitati.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"876\">Non aggiungere il profilo di interazione manuale.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"877\">Il Companion Controller gestisce l&#8217;indicazione; le mani possono essere utilizzate come collider ma non come interattori raycast.<\/li><\/ul><h4 id=\"option-b--hands-only-dual-hand-mode\" class=\"code-line\" dir=\"auto\" data-line=\"879\">Option B \u2014 Solo mani (modalit\u00e0 a due mani)<\/h4><ul class=\"code-line\" dir=\"auto\" data-line=\"881\"><li class=\"code-line\" dir=\"auto\" data-line=\"881\">Aggiungi il <strong>Hand Interaction Profile<\/strong> ai profili abilitati.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"882\">Non aggiungere il profilo Microsoft MMRC.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"883\">Rimuovere il Prefab Device Pointer dal Controller.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"884\">Entrambe le mani sono state tracciate come interattori completi; nessun input dal telefono.<\/li><\/ul><h4 id=\"option-c--controller--one-hand\" class=\"code-line\" dir=\"auto\" data-line=\"886\">Option C \u2014 Controller + One Hand<\/h4><ul class=\"code-line\" dir=\"auto\" data-line=\"888\"><li class=\"code-line\" dir=\"auto\" data-line=\"888\"><pre class=\"tw-data-text tw-text-large tw-ta\" dir=\"ltr\" tabindex=\"-1\" role=\"text\" data-placeholder=\"Translation\" data-ved=\"2ahUKEwjit5WRteOTAxV8_rsIHUzBOBcQ3ewLegQIDBAV\" aria-label=\"Translated text: Aggiungi il profilo Microsoft MMRC ai profili abilitati.\"><span class=\"Y2IQFc\" lang=\"it\">Aggiungi il <\/span><strong>Microsoft MMRC Profile <\/strong><span class=\"Y2IQFc\" lang=\"it\">ai profili abilitati.<\/span><\/pre><\/li><li class=\"code-line\" dir=\"auto\" data-line=\"889\">Nell&#8217;XR Origin, mantieni attivo solo il controller destro.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"890\">La mano sinistra pu\u00f2 ancora funzionare come punto di collisione e come trigger di interazione &#8220;poke&#8221;, ma non come interattore di raggi.<\/li><\/ul><hr class=\"code-line\" dir=\"auto\" data-line=\"892\" \/><h3 id=\"7-unitask--asynchronous-operations\" class=\"code-line\" dir=\"auto\" data-line=\"894\">7. UniTask \u2014 Asynchronous Operations<\/h3><p class=\"code-line\" dir=\"auto\" data-line=\"896\">UniTask 2.5.10 \u00e8 incluso come dipendenza per operazioni asincrone ad alte prestazioni (caricamento di risorse, attesa di sottosistemi, ecc.) senza allocazioni di garbage collection.<\/p><pre><span style=\"color: #003366;\"><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"898\"><span class=\"hljs-keyword\">using<\/span> Cysharp.Threading.Tasks;\n\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">HandSubsystemWaiter<\/span> : <span class=\"hljs-title\">MonoBehaviour<\/span>\n{\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">async<\/span> UniTaskVoid <span class=\"hljs-title\">Start<\/span>()<\/span>\n    {\n        <span class=\"hljs-comment\">\/\/ Wait until the XR Hands subsystem is ready<\/span>\n        <span class=\"hljs-keyword\">await<\/span> UniTask.WaitUntil(() =&gt;\n            XRHandSubsystemUtility.GetSubsystem()?.running ?? <span class=\"hljs-literal\">false<\/span>);\n        Debug.Log(<span class=\"hljs-string\">\"XR Hands subsystem ready.\"<\/span>);\n    }\n}\n<\/code><\/span><\/pre><p class=\"code-line\" dir=\"auto\" data-line=\"913\">UniTask viene utilizzato internamente dall&#8217;SDK di LeonardoXR per le operazioni asincrone. Si consiglia di utilizzarlo anche nel codice dell&#8217;applicazione per coerenza con il ciclo di vita dell&#8217;SDK.<\/p><h3 id=\"openxr-interaction-profile-reference\" class=\"code-line\" dir=\"auto\" data-line=\"915\">Riferimento al profilo di interazione OpenXR<\/h3><table class=\"code-line\" dir=\"auto\" data-line=\"917\"><thead class=\"code-line\" dir=\"auto\" data-line=\"917\"><tr class=\"code-line\" dir=\"auto\" data-line=\"917\"><th>Profile<\/th><th>Use<\/th><\/tr><\/thead><tbody class=\"code-line\" dir=\"auto\" data-line=\"919\"><tr class=\"code-line\" dir=\"auto\" data-line=\"919\"><td>Microsoft Mixed Reality Motion Controller Profile<\/td><td>Physical controllers interaction profile<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"920\"><td>Hand Interaction Profile<\/td><td>Hand tracking with poke\/pinch interactor<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"921\"><td>LeonardoXR Hand Interaction Profile<\/td><td>Hand tracking with poke\/pinch interactor<\/td><\/tr><\/tbody><\/table><p class=\"code-line\" dir=\"auto\" data-line=\"923\">\u00a0<\/p><hr class=\"code-line\" dir=\"auto\" data-line=\"925\" \/><h2 id=\"06-advanced\" class=\"code-line\" dir=\"auto\" data-line=\"927\">06 Avanzato<\/h2><p class=\"code-line\" dir=\"auto\" data-line=\"929\"><em>Versione 1.0.2 | Dispositivo: Youbiquo Leonardo XR | SDK Base: Snapdragon Spaces 1.0.4<\/em><\/p><p class=\"code-line\" dir=\"auto\" data-line=\"931\">Questa sezione illustra le configurazioni e le funzionalit\u00e0 avanzate disponibili su LeonardoXR, suddivise in funzionalit\u00e0 generali della piattaforma Snapdragon Spaces e funzionalit\u00e0 avanzate proprietarie di LeonardoXR.<\/p><hr class=\"code-line\" dir=\"auto\" data-line=\"933\" \/><h3 id=\"advanced--snapdragon-spaces\" class=\"code-line\" dir=\"auto\" data-line=\"935\">Avanzato \u2014 Snapdragon Spaces<\/h3><h4 id=\"adding-a-new-interaction-profile\" class=\"code-line\" dir=\"auto\" data-line=\"937\">Aggiungere un nuovo profilo di interazione<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"939\">Per utilizzare un profilo di interazione non incluso nel plugin Snapdragon Spaces:<\/p><ol class=\"code-line\" dir=\"auto\" data-line=\"941\"><li class=\"code-line\" dir=\"auto\" data-line=\"941\">Vai a <strong>Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android) &gt; Interaction Profiles<\/strong>.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"942\">Aggiungi il profilo desiderato facendo clic sul pulsante <strong>+ <\/strong>.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"943\">Configura le corrispondenti azioni di input nell&#8217;asset del sistema di input.<\/li><\/ol><h4 id=\"custom-controller\" class=\"code-line\" dir=\"auto\" data-line=\"945\">Controller personalizzato<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"947\">Descrive come creare un archivio controller Android personalizzato (.aar) utilizzando il Custom Controller Package, ovvero il progetto Android Studio incluso nel pacchetto per sviluppatori.<\/p><p class=\"code-line\" dir=\"auto\" data-line=\"949\"><strong>Panoramica del processo<\/strong><\/p><ol class=\"code-line\" dir=\"auto\" data-line=\"951\"><li class=\"code-line\" dir=\"auto\" data-line=\"951\">Apri il progetto Android Studio incluso nel pacchetto di sviluppo Snapdragon Spaces.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"952\">Modifica l&#8217;attivit\u00e0 complementare secondo necessit\u00e0 (layout, pulsanti, assi aggiuntivi).<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"953\">Compila il progetto per ottenere un file .aar.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"954\">Importa il file .aar nel progetto Unity come plugin nativo Android (nella cartella Assets\/Plugins\/Android).<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"955\">Configura il manifest Android per dichiarare la nuova Activity.<\/li><\/ol><blockquote class=\"code-line\" dir=\"auto\" data-line=\"957\"><p class=\"code-line\" dir=\"auto\" data-line=\"957\"><strong>NOTE<\/strong> L&#8217;aggiunta di un archivio controller personalizzato pu\u00f2 causare errori di cache di Gradle. Se si verificano errori di compilazione, eliminare la cartella Temp\/gradleOut e ricompilare..<\/p><\/blockquote><h4 id=\"display-refresh-rate\" class=\"code-line\" dir=\"auto\" data-line=\"959\">Visualizza la frequenza di aggiornamento<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"961\">The\u00a0<code>XR_EXT_display_refresh_rate<\/code>\u00a0extension allows querying and setting the display refresh rate at runtime.<\/p><p class=\"code-line\" dir=\"auto\" data-line=\"963\"><strong>Interroga la frequenza di aggiornamento corrente<\/strong><\/p><pre><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"965\"><span class=\"hljs-keyword\">using<\/span> Qualcomm.Snapdragon.Spaces;\n\nBaseRuntimeFeature baseRuntime = OpenXRSettings.Instance.GetFeature&lt;BaseRuntimeFeature&gt;();\n<span class=\"hljs-built_in\">float<\/span> currentHz = baseRuntime.GetDisplayRefreshRate();\nDebug.Log(<span class=\"hljs-string\">$\"Current refresh rate: <span class=\"hljs-subst\">{currentHz}<\/span> Hz\"<\/span>);\n<\/code><\/pre><p class=\"code-line\" dir=\"auto\" data-line=\"973\"><strong>Get Supported Refresh Rates<\/strong><\/p><pre><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"975\"><span class=\"hljs-built_in\">float<\/span>[] supportedRates = baseRuntime.GetSupportedDisplayRefreshRates();\n<span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-built_in\">float<\/span> rate <span class=\"hljs-keyword\">in<\/span> supportedRates)\n    Debug.Log(<span class=\"hljs-string\">$\"Supported: <span class=\"hljs-subst\">{rate}<\/span> Hz\"<\/span>);\n<\/code><\/pre><p class=\"code-line\" dir=\"auto\" data-line=\"981\"><strong>Imposta la frequenza di aggiornamento<\/strong><\/p><pre><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"983\">baseRuntime.RequestDisplayRefreshRate(<span class=\"hljs-number\">90.0f<\/span>);\n<\/code><\/pre><blockquote class=\"code-line\" dir=\"auto\" data-line=\"987\"><p class=\"code-line\" dir=\"auto\" data-line=\"987\"><strong>NOTE<\/strong> La frequenza di aggiornamento richiesta deve essere tra quelle restituite da GetSupportedDisplayRefreshRates(). I valori non supportati verranno ignorati.<\/p><\/blockquote><h4 id=\"advanced-android-thread-performance\" class=\"code-line\" dir=\"auto\" data-line=\"989\">Prestazioni avanzate del thread Android<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"991\">Il componente SpacesThreadUtility migliora la priorit\u00e0 di pianificazione dei thread su Android, producendo una temporizzazione dei frame pi\u00f9 coerente.<\/p><h4 class=\"code-line\" dir=\"auto\" data-line=\"993\"><strong>Setup<\/strong><\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"995\">Aggiungi il componente SpacesThreadUtility a un GameObject persistente nella scena (ad esempio, lo stesso GameObject che ospita la sessione AR o l&#8217;origine XR). Non \u00e8 richiesta alcuna configurazione: si attiva automaticamente all&#8217;avvio e agisce sui thread principali di Unity.<\/p><h4 class=\"code-line\" dir=\"auto\" data-line=\"997\"><strong>Quando usarlo<\/strong><\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"999\">Consigliato per tutte le applicazioni LeonardoXR che presentano fluttuazioni del frame rate o variabilit\u00e0 nella temporizzazione dei fotogrammi, soprattutto in scene con rendering intensivo o con molti sottosistemi AR attivi.<\/p><h4 id=\"performance-settings\" class=\"code-line\" dir=\"auto\" data-line=\"1001\">Impostazioni delle prestazioni<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"1003\">L&#8217;estensione OpenXR XR_EXT_performance_settings espone suggerimenti sui livelli di prestazioni per CPU e GPU tramite un nuovo metodo su BaseRuntimeFeature.<\/p><table class=\"code-line\" dir=\"auto\" data-line=\"1005\"><thead class=\"code-line\" dir=\"auto\" data-line=\"1005\"><tr class=\"code-line\" dir=\"auto\" data-line=\"1005\"><th>Level<\/th><th>Description<\/th><\/tr><\/thead><tbody class=\"code-line\" dir=\"auto\" data-line=\"1007\"><tr class=\"code-line\" dir=\"auto\" data-line=\"1007\"><td>PowerSavings<\/td><td>Reduces CPU\/GPU clocks to the minimum necessary. Useful for simple scenes or static UI.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"1008\"><td>SustainedLow<\/td><td>Sustained performance at a low level.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"1009\"><td>SustainedHigh<\/td><td>Sustained high-level performance. Recommended for most AR apps.<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"1010\"><td>Boost<\/td><td>Maximum performance for short periods (not sustainably maintained).<\/td><\/tr><\/tbody><\/table><pre><span style=\"color: #003366;\"><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"1012\"><span class=\"hljs-keyword\">using<\/span> Qualcomm.Snapdragon.Spaces;\n<span class=\"hljs-keyword\">using<\/span> UnityEngine.XR.OpenXR;\n\nBaseRuntimeFeature baseRuntime = OpenXRSettings.Instance.GetFeature&lt;BaseRuntimeFeature&gt;();\nbaseRuntime.SetPerformanceLevel(PerformanceDomain.Cpu, PerformanceLevel.SustainedHigh);\nbaseRuntime.SetPerformanceLevel(PerformanceDomain.Gpu, PerformanceLevel.SustainedHigh);\n<\/code><\/span><\/pre><blockquote class=\"code-line\" dir=\"auto\" data-line=\"1021\"><p class=\"code-line\" dir=\"auto\" data-line=\"1021\"><strong>NOTE<\/strong> Il livello Boost consuma molta pi\u00f9 energia e, se utilizzato in modo continuativo, pu\u00f2 causare surriscaldamento e conseguente limitazione della velocit\u00e0 di elaborazione. Utilizzatelo solo per operazioni critiche di breve durata (ad esempio, il caricamento di una scena complessa).<\/p><\/blockquote><hr class=\"code-line\" dir=\"auto\" data-line=\"1023\" \/><h3 id=\"advanced--leonardoxr\" class=\"code-line\" dir=\"auto\" data-line=\"1025\">Advanced \u2014 LeonardoXR<\/h3><h4 id=\"qnn-inference-plugin--advanced-guide\" class=\"code-line\" dir=\"auto\" data-line=\"1027\">QNN Inference Plugin \u2014 Advanced Guide<\/h4><blockquote class=\"code-line\" dir=\"auto\" data-line=\"1029\"><p class=\"code-line\" dir=\"auto\" data-line=\"1029\"><strong>DOCUMENTATION IN PROGRESS<\/strong>\u00a0This section will cover advanced usage of the QNN (Qualcomm Neural Network) Inference Plugin on Leonardo XR, including:<\/p><ul class=\"code-line\" dir=\"auto\" data-line=\"1030\"><li class=\"code-line\" dir=\"auto\" data-line=\"1030\">Model preparation and conversion (ONNX \u2192 QNN format).<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"1031\">Loading models at runtime via plugin APIs.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"1032\">Running inference on the NPU with input\/output tensor management.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"1033\">Memory management and throughput optimisation.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"1034\">Debug and performance profiling of inference.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"1035\">Use cases: object detection, pose estimation, real-time segmentation.<\/li><\/ul><p class=\"code-line\" dir=\"auto\" data-line=\"1037\">Detailed documentation will be available in a future release.<\/p><\/blockquote><h4 id=\"intercept-openxr-function--advanced-guide\" class=\"code-line\" dir=\"auto\" data-line=\"1039\">Intercept OpenXR Function \u2014 Advanced Guide<\/h4><blockquote class=\"code-line\" dir=\"auto\" data-line=\"1041\"><p class=\"code-line\" dir=\"auto\" data-line=\"1041\"><strong>DOCUMENTATION IN PROGRESS<\/strong>\u00a0This section will cover advanced usage of the Intercept OpenXR Function mechanism on Leonardo XR, including:<\/p><ul class=\"code-line\" dir=\"auto\" data-line=\"1042\"><li class=\"code-line\" dir=\"auto\" data-line=\"1042\">Architecture of the OpenXR interception layer.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"1043\">Registering custom handlers for specific OpenXR functions.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"1044\">Use cases: rendering pipeline override, custom data injection into the XR layer, low-level OpenXR debugging.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"1045\">Safety and stability considerations.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"1046\">Interaction with other LeonardoXR SDK components.<\/li><\/ul><p class=\"code-line\" dir=\"auto\" data-line=\"1048\">This feature is intended for developers with direct experience of low-level OpenXR APIs. Detailed documentation will be available in a future release.<\/p><\/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>Documentazione dell&#8217;SDK di LeonardoXR Documentazione per sviluppatori \u2014 LeonardoXR SDK Youbiquo \u2014 SDK LeonardoXR \u2014 Documentazione per sviluppatori Title Description SDK Version 1.0.2 Target Device Youbiquo Leonardo XR Spaces SDK Snapdragon Spaces 1.0.4 Unity Version 6000.0.58f2 Language English Indice dei documenti # Title Description 01 Getting Started Project setup, SDK installation, URP and Play-in-Editor configuration 02 VR \/ MR Manual project config, Passthrough, scene setup, lifecycle compatibility 03 Features Snapdragon Spaces features + LeonardoXR proprietary features 04 Samples Guide Overview of all available samples and how to run them 05 Interaction Package Guides XRIT 3.x, XR Hands, controllers and hand tracking 06 Advanced Display refresh rate, performance settings, custom controllers, QNN 01. Iniziare Version 1.0.2 | Device: Youbiquo Leonardo XR | Base SDK: Snapdragon Spaces 1.0.4 Introduzione Questa guida spiega come configurare un progetto Unity per lo sviluppo su Leonardo XR, il visore AR di Youbiquo basato su Snapdragon Spaces. L&#8217;obiettivo \u00e8 familiarizzare gli sviluppatori con la configurazione dell&#8217;SDK per la creazione di applicazioni su Leonardo. La prossima guida illustrer\u00e0 come interagire con i controller e le mani. Leonardo XR utilizza Android 12 e segue un flusso di lavoro di sviluppo familiare a chiunque abbia gi\u00e0 creato applicazioni Android. Software richiesto Prima di iniziare, assicurarsi che i seguenti software e pacchetti siano installati nelle versioni specificate: Software \/ Package Version Unity Hub Latest available Unity Editor 6000.0.58f2 LeonardoXR SDK 1.0.2 Snapdragon Spaces SDK 1.0.4 OpenXR Plugin 1.15.1 AR Foundation 6.2.1 XR Interaction Toolkit 3.3.0 XR Hands 1.7.2 UniTask 2.5.10 VS Code, Visual Studio or similar IDE \u2014 NOTA: A differenza della guida base di Snapdragon Spaces (che raccomanda la versione 1.10.0 per Unity 2022), Unity 6 con LeonardoXR utilizza OpenXR 1.15.1. Non modificare manualmente questa versione: il Package Manager la gestisce tramite le dipendenze dell&#8217;SDK. Crea un nuovo progetto Apri Unity Hub e fai clic su Nuovo progetto. Seleziona il modello Universal 3D. Assegna un nome al progetto (ad esempio LeonardoXR_Test) e scegli una cartella di destinazione. Fai clic su Crea progetto. Dopo la creazione, Unity apre il progetto con una scena di esempio nel pannello Gerarchia. Passa alla piattaforma Android Dal menu principale, seleziona File &gt; Crea profili. Nella finestra Crea profili, seleziona Android dall&#8217;elenco Piattaforma. Fai clic su Cambia piattaforma e attendi il completamento del processo. Chiudi la finestra Crea profili. Installa l&#8217;SDK di Snapdragon Spaces IMPORTANTE: Snapdragon Spaces SDK deve essere installato prima di LeonardoXR SDK. Il runtime di LeonardoXR dipende da esso e non verr\u00e0 compilato senza di esso. Scarica Snapdragon Spaces SDK v1.0.4 dal portale per sviluppatori Qualcomm (\u00e8 necessario un account sviluppatore): https:\/\/spaces.qualcomm.com\/developer\/vr-mr-sdk\/#downloads Apri Package Manager (Window &gt; Package Manager). Clic + e seleziona Add package from tarball\u2026 Individua il file .tgz scaricato e fai clic su Apri. L&#8217;installazione si avvier\u00e0 automaticamente. Durante l&#8217;installazione potrebbero comparire due messaggi: &#8220;Abilitare il nuovo sistema di input?&#8221; \u2192 clic Yes. &#8220;XAggiornamento della maschera del livello di interazione R necessario&#8221; \u2192 oppure un nuovo progetto, clicca I Made a Backup, Go Ahead! NOTA: L&#8217;editor si riavvier\u00e0 dopo l&#8217;installazione: questo \u00e8 un comportamento previsto, non un arresto anomalo. Per il controllo della versione, copiare il file .tgz nella cartella Packages\/ del progetto prima di aggiungerlo; il manifesto utilizzer\u00e0 quindi un percorso relativo, che \u00e8 preferibile per il controllo della versione. Unity 6.3+ \u2014 Problema comune dell&#8217;SDK Spaces: Dopo l&#8217;installazione, potrebbe comparire il seguente errore di compilazione: BaseRuntimeFeature.InterceptEnvironmentBlendMode.cs(15,10): error CS0592: Attribute &#8216;SerializeField&#8217; is not valid on this declaration type. Per risolvere il problema, fai doppio clic sull&#8217;errore nella Console per aprire il file, quindi rimuovi l&#8217;attributo [SerializeField] alla riga 15. Si tratta di un bug presente in Snapdragon Spaces 1.0.4 che si manifesta solo su Unity 6.3 e versioni successive. Installare l&#8217;SDK di LeonardoXR Scarica LeonardoXR SDK v1.0.2 dall&#8217;area sviluppatori di Youbiquo. Apri il Package Manager (Window &gt; Package Manager). Clic + e sceli Add package from tarball\u2026 Individua il file .tgz dell&#8217;SDK di LeonardoXR e fai clic su Open. L&#8217;SDK verr\u00e0 installato insieme alle sue dipendenze: OpenXR Plugin 1.15.1,\u00a0AR Foundation 6.2.1,\u00a0XR Interaction Toolkit 3.3.0, e XR Hands 1.7.2 \u2014 Non \u00e8 richiesta alcuna installazione manuale di questi pacchetti. Gestore SDK LeonardoXR Dopo l&#8217;installazione dell&#8217;SDK LeonardoXR, Si aprir\u00e0 automaticamente la finestra di LeonardoXR SDK Manager, Se non viene visualizzata, aprirla da LeonardoXR &gt; SDK Manager nella barra dei menu. La finestra ha due schede: Setup tab \u2014 Mostra lo stato dei due pacchetti che non possono essere risolti automaticamente: Package Status Action Snapdragon Spaces SDK 1.0.4 \u2713 \/ \u2717 Browse\u2026\u00a0\u2014 opens a file picker to select the\u00a0.tgz\u00a0and installs it via Package Manager UniTask 2.5.10 \u2713 \/ \u2717 Install\u00a0\u2014 installs UniTask directly from the official Cysharp Git repository Una volta che entrambi i pacchetti mostrano \u2713, la configurazione \u00e8 completa. Utilizza il pulsante \u21ba Aggiorna in qualsiasi momento per verificare nuovamente lo stato attuale. About tab \u2014 Visualizza le informazioni sulla versione dell&#8217;SDK, del dispositivo e dell&#8217;editor Unity. Configurazione di XR Plugin Management e OpenXR Apri Project Settings Vai a Edit &gt; Project Settings e scegli XR Plug-in Management nella barra laterale sinistra. Abilita OpenXR e Snapdragon Spaces Clic su Android tab (in alto a destra della finestra). Sotto Plug-in Providers, assicurarsi che entrambi siano controllati: OpenXR e\u00a0Snapdragon Spaces feature group. Configure OpenXR Features Clic OpenXR nella barra laterale sinistra. Nell&#8217;elenco delle funzionalit\u00e0 di Snapdragon Spaces, abilita solo Base Runtime e disabilitare tutte le altre. Le funzionalit\u00e0 avanzate (Hit Testing, Plane Detection, ecc.) possono essere abilitate in seguito, se necessario. NOTA affinch\u00e9 il tracciamento delle mani funzioni correttamente su LeonardoXR, l&#8217;opzione Sottosistema di tracciamento delle mani deve essere abilitata nella sezione Tutte le funzionalit\u00e0 di OpenXR. Aggiungi LeonardoXR Feature Group Torna a XR Plug-in Management &gt; Android. Nell&#8217;elenco dei fornitori di plug-in, controlla anche LeonardoXR feature group. Esecuzione della convalida del progetto Nella barra laterale delle impostazioni del progetto, fai clic Project Validation. La finestra mostra un elenco di errori di configurazione da correggere. Clic Fix All per risolverli automaticamente. NOTA\u00a0Alcune correzioni potrebbero richiedere il riavvio dell&#8217;editor. Eseguire nuovamente la convalida dopo il riavvio per verificare che tutti gli errori<\/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-1161","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>Documentazione di LeonardoXR SDK - 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\/documentazione-di-leonardoxr-sdk\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Documentazione di LeonardoXR SDK - Geckode!\" \/>\n<meta property=\"og:description\" content=\"Documentazione dell&#8217;SDK di LeonardoXR Documentazione per sviluppatori \u2014 LeonardoXR SDK Youbiquo \u2014 SDK LeonardoXR \u2014 Documentazione per sviluppatori Title Description SDK Version 1.0.2 Target Device Youbiquo Leonardo XR Spaces SDK Snapdragon Spaces 1.0.4 Unity Version 6000.0.58f2 Language English Indice dei documenti # Title Description 01 Getting Started Project setup, SDK installation, URP and Play-in-Editor configuration 02 VR \/ MR Manual project config, Passthrough, scene setup, lifecycle compatibility 03 Features Snapdragon Spaces features + LeonardoXR proprietary features 04 Samples Guide Overview of all available samples and how to run them 05 Interaction Package Guides XRIT 3.x, XR Hands, controllers and hand tracking 06 Advanced Display refresh rate, performance settings, custom controllers, QNN 01. Iniziare Version 1.0.2 | Device: Youbiquo Leonardo XR | Base SDK: Snapdragon Spaces 1.0.4 Introduzione Questa guida spiega come configurare un progetto Unity per lo sviluppo su Leonardo XR, il visore AR di Youbiquo basato su Snapdragon Spaces. L&#8217;obiettivo \u00e8 familiarizzare gli sviluppatori con la configurazione dell&#8217;SDK per la creazione di applicazioni su Leonardo. La prossima guida illustrer\u00e0 come interagire con i controller e le mani. Leonardo XR utilizza Android 12 e segue un flusso di lavoro di sviluppo familiare a chiunque abbia gi\u00e0 creato applicazioni Android. Software richiesto Prima di iniziare, assicurarsi che i seguenti software e pacchetti siano installati nelle versioni specificate: Software \/ Package Version Unity Hub Latest available Unity Editor 6000.0.58f2 LeonardoXR SDK 1.0.2 Snapdragon Spaces SDK 1.0.4 OpenXR Plugin 1.15.1 AR Foundation 6.2.1 XR Interaction Toolkit 3.3.0 XR Hands 1.7.2 UniTask 2.5.10 VS Code, Visual Studio or similar IDE \u2014 NOTA: A differenza della guida base di Snapdragon Spaces (che raccomanda la versione 1.10.0 per Unity 2022), Unity 6 con LeonardoXR utilizza OpenXR 1.15.1. Non modificare manualmente questa versione: il Package Manager la gestisce tramite le dipendenze dell&#8217;SDK. Crea un nuovo progetto Apri Unity Hub e fai clic su Nuovo progetto. Seleziona il modello Universal 3D. Assegna un nome al progetto (ad esempio LeonardoXR_Test) e scegli una cartella di destinazione. Fai clic su Crea progetto. Dopo la creazione, Unity apre il progetto con una scena di esempio nel pannello Gerarchia. Passa alla piattaforma Android Dal menu principale, seleziona File &gt; Crea profili. Nella finestra Crea profili, seleziona Android dall&#8217;elenco Piattaforma. Fai clic su Cambia piattaforma e attendi il completamento del processo. Chiudi la finestra Crea profili. Installa l&#8217;SDK di Snapdragon Spaces IMPORTANTE: Snapdragon Spaces SDK deve essere installato prima di LeonardoXR SDK. Il runtime di LeonardoXR dipende da esso e non verr\u00e0 compilato senza di esso. Scarica Snapdragon Spaces SDK v1.0.4 dal portale per sviluppatori Qualcomm (\u00e8 necessario un account sviluppatore): https:\/\/spaces.qualcomm.com\/developer\/vr-mr-sdk\/#downloads Apri Package Manager (Window &gt; Package Manager). Clic + e seleziona Add package from tarball\u2026 Individua il file .tgz scaricato e fai clic su Apri. L&#8217;installazione si avvier\u00e0 automaticamente. Durante l&#8217;installazione potrebbero comparire due messaggi: &#8220;Abilitare il nuovo sistema di input?&#8221; \u2192 clic Yes. &#8220;XAggiornamento della maschera del livello di interazione R necessario&#8221; \u2192 oppure un nuovo progetto, clicca I Made a Backup, Go Ahead! NOTA: L&#8217;editor si riavvier\u00e0 dopo l&#8217;installazione: questo \u00e8 un comportamento previsto, non un arresto anomalo. Per il controllo della versione, copiare il file .tgz nella cartella Packages\/ del progetto prima di aggiungerlo; il manifesto utilizzer\u00e0 quindi un percorso relativo, che \u00e8 preferibile per il controllo della versione. Unity 6.3+ \u2014 Problema comune dell&#8217;SDK Spaces: Dopo l&#8217;installazione, potrebbe comparire il seguente errore di compilazione: BaseRuntimeFeature.InterceptEnvironmentBlendMode.cs(15,10): error CS0592: Attribute &#039;SerializeField&#039; is not valid on this declaration type. Per risolvere il problema, fai doppio clic sull&#8217;errore nella Console per aprire il file, quindi rimuovi l&#8217;attributo [SerializeField] alla riga 15. Si tratta di un bug presente in Snapdragon Spaces 1.0.4 che si manifesta solo su Unity 6.3 e versioni successive. Installare l&#8217;SDK di LeonardoXR Scarica LeonardoXR SDK v1.0.2 dall&#8217;area sviluppatori di Youbiquo. Apri il Package Manager (Window &gt; Package Manager). Clic + e sceli Add package from tarball\u2026 Individua il file .tgz dell&#8217;SDK di LeonardoXR e fai clic su Open. L&#8217;SDK verr\u00e0 installato insieme alle sue dipendenze: OpenXR Plugin 1.15.1,\u00a0AR Foundation 6.2.1,\u00a0XR Interaction Toolkit 3.3.0, e XR Hands 1.7.2 \u2014 Non \u00e8 richiesta alcuna installazione manuale di questi pacchetti. Gestore SDK LeonardoXR Dopo l&#8217;installazione dell&#8217;SDK LeonardoXR, Si aprir\u00e0 automaticamente la finestra di LeonardoXR SDK Manager, Se non viene visualizzata, aprirla da LeonardoXR &gt; SDK Manager nella barra dei menu. La finestra ha due schede: Setup tab \u2014 Mostra lo stato dei due pacchetti che non possono essere risolti automaticamente: Package Status Action Snapdragon Spaces SDK 1.0.4 \u2713 \/ \u2717 Browse\u2026\u00a0\u2014 opens a file picker to select the\u00a0.tgz\u00a0and installs it via Package Manager UniTask 2.5.10 \u2713 \/ \u2717 Install\u00a0\u2014 installs UniTask directly from the official Cysharp Git repository Una volta che entrambi i pacchetti mostrano \u2713, la configurazione \u00e8 completa. Utilizza il pulsante \u21ba Aggiorna in qualsiasi momento per verificare nuovamente lo stato attuale. About tab \u2014 Visualizza le informazioni sulla versione dell&#8217;SDK, del dispositivo e dell&#8217;editor Unity. Configurazione di XR Plugin Management e OpenXR Apri Project Settings Vai a Edit &gt; Project Settings e scegli XR Plug-in Management nella barra laterale sinistra. Abilita OpenXR e Snapdragon Spaces Clic su Android tab (in alto a destra della finestra). Sotto Plug-in Providers, assicurarsi che entrambi siano controllati: OpenXR e\u00a0Snapdragon Spaces feature group. Configure OpenXR Features Clic OpenXR nella barra laterale sinistra. Nell&#8217;elenco delle funzionalit\u00e0 di Snapdragon Spaces, abilita solo Base Runtime e disabilitare tutte le altre. Le funzionalit\u00e0 avanzate (Hit Testing, Plane Detection, ecc.) possono essere abilitate in seguito, se necessario. NOTA affinch\u00e9 il tracciamento delle mani funzioni correttamente su LeonardoXR, l&#8217;opzione Sottosistema di tracciamento delle mani deve essere abilitata nella sezione Tutte le funzionalit\u00e0 di OpenXR. Aggiungi LeonardoXR Feature Group Torna a XR Plug-in Management &gt; Android. Nell&#8217;elenco dei fornitori di plug-in, controlla anche LeonardoXR feature group. Esecuzione della convalida del progetto Nella barra laterale delle impostazioni del progetto, fai clic Project Validation. La finestra mostra un elenco di errori di configurazione da correggere. Clic Fix All per risolverli automaticamente. NOTA\u00a0Alcune correzioni potrebbero richiedere il riavvio dell&#8217;editor. Eseguire nuovamente la convalida dopo il riavvio per verificare che tutti gli errori\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.youbiquo.eu\/geckode\/documentazione-di-leonardoxr-sdk\/\" \/>\n<meta property=\"og:site_name\" content=\"Geckode!\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-10T16:14:01+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=\"21 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.youbiquo.eu\/geckode\/documentazione-di-leonardoxr-sdk\/\",\"url\":\"https:\/\/www.youbiquo.eu\/geckode\/documentazione-di-leonardoxr-sdk\/\",\"name\":\"Documentazione di LeonardoXR SDK - Geckode!\",\"isPartOf\":{\"@id\":\"https:\/\/www.youbiquo.eu\/geckode\/#website\"},\"datePublished\":\"2026-04-09T13:51:14+00:00\",\"dateModified\":\"2026-04-10T16:14:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.youbiquo.eu\/geckode\/documentazione-di-leonardoxr-sdk\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.youbiquo.eu\/geckode\/documentazione-di-leonardoxr-sdk\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.youbiquo.eu\/geckode\/documentazione-di-leonardoxr-sdk\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.youbiquo.eu\/geckode\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Documentazione di LeonardoXR SDK\"}]},{\"@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":"Documentazione di LeonardoXR SDK - 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\/documentazione-di-leonardoxr-sdk\/","og_locale":"en_US","og_type":"article","og_title":"Documentazione di LeonardoXR SDK - Geckode!","og_description":"Documentazione dell&#8217;SDK di LeonardoXR Documentazione per sviluppatori \u2014 LeonardoXR SDK Youbiquo \u2014 SDK LeonardoXR \u2014 Documentazione per sviluppatori Title Description SDK Version 1.0.2 Target Device Youbiquo Leonardo XR Spaces SDK Snapdragon Spaces 1.0.4 Unity Version 6000.0.58f2 Language English Indice dei documenti # Title Description 01 Getting Started Project setup, SDK installation, URP and Play-in-Editor configuration 02 VR \/ MR Manual project config, Passthrough, scene setup, lifecycle compatibility 03 Features Snapdragon Spaces features + LeonardoXR proprietary features 04 Samples Guide Overview of all available samples and how to run them 05 Interaction Package Guides XRIT 3.x, XR Hands, controllers and hand tracking 06 Advanced Display refresh rate, performance settings, custom controllers, QNN 01. Iniziare Version 1.0.2 | Device: Youbiquo Leonardo XR | Base SDK: Snapdragon Spaces 1.0.4 Introduzione Questa guida spiega come configurare un progetto Unity per lo sviluppo su Leonardo XR, il visore AR di Youbiquo basato su Snapdragon Spaces. L&#8217;obiettivo \u00e8 familiarizzare gli sviluppatori con la configurazione dell&#8217;SDK per la creazione di applicazioni su Leonardo. La prossima guida illustrer\u00e0 come interagire con i controller e le mani. Leonardo XR utilizza Android 12 e segue un flusso di lavoro di sviluppo familiare a chiunque abbia gi\u00e0 creato applicazioni Android. Software richiesto Prima di iniziare, assicurarsi che i seguenti software e pacchetti siano installati nelle versioni specificate: Software \/ Package Version Unity Hub Latest available Unity Editor 6000.0.58f2 LeonardoXR SDK 1.0.2 Snapdragon Spaces SDK 1.0.4 OpenXR Plugin 1.15.1 AR Foundation 6.2.1 XR Interaction Toolkit 3.3.0 XR Hands 1.7.2 UniTask 2.5.10 VS Code, Visual Studio or similar IDE \u2014 NOTA: A differenza della guida base di Snapdragon Spaces (che raccomanda la versione 1.10.0 per Unity 2022), Unity 6 con LeonardoXR utilizza OpenXR 1.15.1. Non modificare manualmente questa versione: il Package Manager la gestisce tramite le dipendenze dell&#8217;SDK. Crea un nuovo progetto Apri Unity Hub e fai clic su Nuovo progetto. Seleziona il modello Universal 3D. Assegna un nome al progetto (ad esempio LeonardoXR_Test) e scegli una cartella di destinazione. Fai clic su Crea progetto. Dopo la creazione, Unity apre il progetto con una scena di esempio nel pannello Gerarchia. Passa alla piattaforma Android Dal menu principale, seleziona File &gt; Crea profili. Nella finestra Crea profili, seleziona Android dall&#8217;elenco Piattaforma. Fai clic su Cambia piattaforma e attendi il completamento del processo. Chiudi la finestra Crea profili. Installa l&#8217;SDK di Snapdragon Spaces IMPORTANTE: Snapdragon Spaces SDK deve essere installato prima di LeonardoXR SDK. Il runtime di LeonardoXR dipende da esso e non verr\u00e0 compilato senza di esso. Scarica Snapdragon Spaces SDK v1.0.4 dal portale per sviluppatori Qualcomm (\u00e8 necessario un account sviluppatore): https:\/\/spaces.qualcomm.com\/developer\/vr-mr-sdk\/#downloads Apri Package Manager (Window &gt; Package Manager). Clic + e seleziona Add package from tarball\u2026 Individua il file .tgz scaricato e fai clic su Apri. L&#8217;installazione si avvier\u00e0 automaticamente. Durante l&#8217;installazione potrebbero comparire due messaggi: &#8220;Abilitare il nuovo sistema di input?&#8221; \u2192 clic Yes. &#8220;XAggiornamento della maschera del livello di interazione R necessario&#8221; \u2192 oppure un nuovo progetto, clicca I Made a Backup, Go Ahead! NOTA: L&#8217;editor si riavvier\u00e0 dopo l&#8217;installazione: questo \u00e8 un comportamento previsto, non un arresto anomalo. Per il controllo della versione, copiare il file .tgz nella cartella Packages\/ del progetto prima di aggiungerlo; il manifesto utilizzer\u00e0 quindi un percorso relativo, che \u00e8 preferibile per il controllo della versione. Unity 6.3+ \u2014 Problema comune dell&#8217;SDK Spaces: Dopo l&#8217;installazione, potrebbe comparire il seguente errore di compilazione: BaseRuntimeFeature.InterceptEnvironmentBlendMode.cs(15,10): error CS0592: Attribute 'SerializeField' is not valid on this declaration type. Per risolvere il problema, fai doppio clic sull&#8217;errore nella Console per aprire il file, quindi rimuovi l&#8217;attributo [SerializeField] alla riga 15. Si tratta di un bug presente in Snapdragon Spaces 1.0.4 che si manifesta solo su Unity 6.3 e versioni successive. Installare l&#8217;SDK di LeonardoXR Scarica LeonardoXR SDK v1.0.2 dall&#8217;area sviluppatori di Youbiquo. Apri il Package Manager (Window &gt; Package Manager). Clic + e sceli Add package from tarball\u2026 Individua il file .tgz dell&#8217;SDK di LeonardoXR e fai clic su Open. L&#8217;SDK verr\u00e0 installato insieme alle sue dipendenze: OpenXR Plugin 1.15.1,\u00a0AR Foundation 6.2.1,\u00a0XR Interaction Toolkit 3.3.0, e XR Hands 1.7.2 \u2014 Non \u00e8 richiesta alcuna installazione manuale di questi pacchetti. Gestore SDK LeonardoXR Dopo l&#8217;installazione dell&#8217;SDK LeonardoXR, Si aprir\u00e0 automaticamente la finestra di LeonardoXR SDK Manager, Se non viene visualizzata, aprirla da LeonardoXR &gt; SDK Manager nella barra dei menu. La finestra ha due schede: Setup tab \u2014 Mostra lo stato dei due pacchetti che non possono essere risolti automaticamente: Package Status Action Snapdragon Spaces SDK 1.0.4 \u2713 \/ \u2717 Browse\u2026\u00a0\u2014 opens a file picker to select the\u00a0.tgz\u00a0and installs it via Package Manager UniTask 2.5.10 \u2713 \/ \u2717 Install\u00a0\u2014 installs UniTask directly from the official Cysharp Git repository Una volta che entrambi i pacchetti mostrano \u2713, la configurazione \u00e8 completa. Utilizza il pulsante \u21ba Aggiorna in qualsiasi momento per verificare nuovamente lo stato attuale. About tab \u2014 Visualizza le informazioni sulla versione dell&#8217;SDK, del dispositivo e dell&#8217;editor Unity. Configurazione di XR Plugin Management e OpenXR Apri Project Settings Vai a Edit &gt; Project Settings e scegli XR Plug-in Management nella barra laterale sinistra. Abilita OpenXR e Snapdragon Spaces Clic su Android tab (in alto a destra della finestra). Sotto Plug-in Providers, assicurarsi che entrambi siano controllati: OpenXR e\u00a0Snapdragon Spaces feature group. Configure OpenXR Features Clic OpenXR nella barra laterale sinistra. Nell&#8217;elenco delle funzionalit\u00e0 di Snapdragon Spaces, abilita solo Base Runtime e disabilitare tutte le altre. Le funzionalit\u00e0 avanzate (Hit Testing, Plane Detection, ecc.) possono essere abilitate in seguito, se necessario. NOTA affinch\u00e9 il tracciamento delle mani funzioni correttamente su LeonardoXR, l&#8217;opzione Sottosistema di tracciamento delle mani deve essere abilitata nella sezione Tutte le funzionalit\u00e0 di OpenXR. Aggiungi LeonardoXR Feature Group Torna a XR Plug-in Management &gt; Android. Nell&#8217;elenco dei fornitori di plug-in, controlla anche LeonardoXR feature group. Esecuzione della convalida del progetto Nella barra laterale delle impostazioni del progetto, fai clic Project Validation. La finestra mostra un elenco di errori di configurazione da correggere. Clic Fix All per risolverli automaticamente. NOTA\u00a0Alcune correzioni potrebbero richiedere il riavvio dell&#8217;editor. Eseguire nuovamente la convalida dopo il riavvio per verificare che tutti gli errori","og_url":"https:\/\/www.youbiquo.eu\/geckode\/documentazione-di-leonardoxr-sdk\/","og_site_name":"Geckode!","article_modified_time":"2026-04-10T16:14:01+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"21 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.youbiquo.eu\/geckode\/documentazione-di-leonardoxr-sdk\/","url":"https:\/\/www.youbiquo.eu\/geckode\/documentazione-di-leonardoxr-sdk\/","name":"Documentazione di LeonardoXR SDK - Geckode!","isPartOf":{"@id":"https:\/\/www.youbiquo.eu\/geckode\/#website"},"datePublished":"2026-04-09T13:51:14+00:00","dateModified":"2026-04-10T16:14:01+00:00","breadcrumb":{"@id":"https:\/\/www.youbiquo.eu\/geckode\/documentazione-di-leonardoxr-sdk\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.youbiquo.eu\/geckode\/documentazione-di-leonardoxr-sdk\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.youbiquo.eu\/geckode\/documentazione-di-leonardoxr-sdk\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.youbiquo.eu\/geckode\/"},{"@type":"ListItem","position":2,"name":"Documentazione di LeonardoXR SDK"}]},{"@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\/1161","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=1161"}],"version-history":[{"count":73,"href":"https:\/\/www.youbiquo.eu\/geckode\/wp-json\/wp\/v2\/pages\/1161\/revisions"}],"predecessor-version":[{"id":1373,"href":"https:\/\/www.youbiquo.eu\/geckode\/wp-json\/wp\/v2\/pages\/1161\/revisions\/1373"}],"wp:attachment":[{"href":"https:\/\/www.youbiquo.eu\/geckode\/wp-json\/wp\/v2\/media?parent=1161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}