{"id":433,"date":"2026-03-11T17:13:59","date_gmt":"2026-03-11T16:13:59","guid":{"rendered":"https:\/\/www.youbiquo.eu\/leonardoxr\/?page_id=433"},"modified":"2026-10-09T13:50:00","modified_gmt":"2026-10-09T11:50:00","slug":"interaction-package-guides-leonardoxr-sdk","status":"publish","type":"page","link":"https:\/\/www.youbiquo.eu\/leonardoxr\/manuali_duso\/interaction-package-guides-leonardoxr-sdk\/","title":{"rendered":"Interaction Package Guides \u2014 LeonardoXR SDK"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"433\" class=\"elementor elementor-433\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-85281d7 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"85281d7\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d04b0b7 elementor-widget elementor-widget-heading\" data-id=\"d04b0b7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Interaction Package Guides \u2014 LeonardoXR SDK\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-541389f e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"541389f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-df9a2de e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"df9a2de\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-69e47bc elementor-widget__width-initial elementor-toc--minimized-on-tablet elementor-widget elementor-widget-table-of-contents\" data-id=\"69e47bc\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;headings_by_tags&quot;:[&quot;h3&quot;,&quot;h4&quot;,&quot;h5&quot;,&quot;h6&quot;],&quot;exclude_headings_by_selector&quot;:&quot;footer&quot;,&quot;marker_view&quot;:&quot;bullets&quot;,&quot;icon&quot;:{&quot;value&quot;:&quot;far fa-dot-circle&quot;,&quot;library&quot;:&quot;fa-regular&quot;,&quot;rendered_tag&quot;:&quot;&lt;svg class=\\&quot;e-font-icon-svg e-far-dot-circle\\&quot; viewBox=\\&quot;0 0 512 512\\&quot; xmlns=\\&quot;http:\\\/\\\/www.w3.org\\\/2000\\\/svg\\&quot;&gt;&lt;path d=\\&quot;M256 56c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m0-48C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 168c-44.183 0-80 35.817-80 80s35.817 80 80 80 80-35.817 80-80-35.817-80-80-80z\\&quot;&gt;&lt;\\\/path&gt;&lt;\\\/svg&gt;&quot;},&quot;no_headings_message&quot;:&quot;Non sono state trovate intestazioni in questa pagina.&quot;,&quot;minimize_box&quot;:&quot;yes&quot;,&quot;minimized_on&quot;:&quot;tablet&quot;,&quot;hierarchical_view&quot;:&quot;yes&quot;,&quot;min_height&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"table-of-contents.default\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-toc__header\">\n\t\t\t\t\t\t<h2 class=\"elementor-toc__header-title\">\n\t\t\t\tInteraction Package Guides \u2014 LeonardoXR SDK\t\t\t<\/h2>\n\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-toc__toggle-button elementor-toc__toggle-button--expand\" role=\"button\" tabindex=\"0\" aria-controls=\"elementor-toc__69e47bc\" aria-expanded=\"true\" aria-label=\"Apri l&#039;indice dei contenuti\"><svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-chevron-down\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\"><\/path><\/svg><\/div>\n\t\t\t\t<div class=\"elementor-toc__toggle-button elementor-toc__toggle-button--collapse\" role=\"button\" tabindex=\"0\" aria-controls=\"elementor-toc__69e47bc\" aria-expanded=\"true\" aria-label=\"Chiudi l&#039;indice dei contenuti\"><svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-chevron-up\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z\"><\/path><\/svg><\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<div id=\"elementor-toc__69e47bc\" class=\"elementor-toc__body\">\n\t\t\t<div class=\"elementor-toc__spinner-container\">\n\t\t\t\t<svg class=\"elementor-toc__spinner eicon-animation-spin e-font-icon-svg e-eicon-loading\" aria-hidden=\"true\" viewBox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M500 975V858C696 858 858 696 858 500S696 142 500 142 142 304 142 500H25C25 237 238 25 500 25S975 237 975 500 763 975 500 975Z\"><\/path><\/svg>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-677117a e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"677117a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1a4d842 elementor-widget elementor-widget-text-editor\" data-id=\"1a4d842\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h2 id=\"interaction-package-guides--leonardoxr-sdk\" class=\"code-line\" dir=\"auto\" data-line=\"0\">Interaction Package Guides \u2014 LeonardoXR SDK<\/h2><blockquote class=\"code-line\" dir=\"auto\" data-line=\"2\"><p class=\"code-line\" dir=\"auto\" data-line=\"2\"><strong>Version:<\/strong>\u00a01.0.2\u00a0<strong>Target Device:<\/strong>\u00a0Youbiquo Leonardo XR<br \/><strong>Base SDK:<\/strong>\u00a0Snapdragon Spaces 1.0.4<\/p><\/blockquote><p class=\"code-line\" dir=\"auto\" data-line=\"6\">Questa guida descrive come configurare il layer di interazione per applicazioni LeonardoXR usando i pacchetti standard Unity:<\/p><ul class=\"code-line\" dir=\"auto\" data-line=\"8\"><li class=\"code-line\" dir=\"auto\" data-line=\"8\"><strong>XR Interaction Toolkit (XRIT) 3.3.0<\/strong>\u00a0\u2014 sistema di interazione ad alto livello per controller, ray interactor e direct interactor.<\/li><li class=\"code-line code-active-line\" dir=\"auto\" data-line=\"9\"><strong>XR Hands 1.7.2<\/strong>\u00a0\u2014 accesso ai dati delle giunture della mano e gesture recognition.<\/li><\/ul><hr class=\"code-line\" dir=\"auto\" data-line=\"11\" \/><h3 id=\"dipendenze-e-versioni\" class=\"code-line\" dir=\"auto\" data-line=\"13\">Dipendenze e Versioni<\/h3><table class=\"code-line\" dir=\"auto\" data-line=\"15\"><thead class=\"code-line\" dir=\"auto\" data-line=\"15\"><tr class=\"code-line\" dir=\"auto\" data-line=\"15\"><th>Pacchetto<\/th><th>Versione<\/th><th>Fonte<\/th><\/tr><\/thead><tbody class=\"code-line\" dir=\"auto\" data-line=\"17\"><tr class=\"code-line\" dir=\"auto\" data-line=\"17\"><td>XR Interaction Toolkit<\/td><td>3.3.0<\/td><td>Unity Registry<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"18\"><td>XR Hands<\/td><td>1.7.2<\/td><td>Unity Registry<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"19\"><td>AR Foundation<\/td><td>6.2.1<\/td><td>Unity Registry<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"20\"><td>Snapdragon Spaces SDK<\/td><td>1.0.4<\/td><td>Tarball (Qualcomm)<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"21\"><td>LeonardoXR SDK<\/td><td>1.0.2<\/td><td>Tarball (Youbiquo)<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"22\"><td>UniTask<\/td><td>2.5.10<\/td><td>Unity Registry<\/td><\/tr><\/tbody><\/table><blockquote class=\"code-line\" dir=\"auto\" data-line=\"24\"><p class=\"code-line\" dir=\"auto\" data-line=\"24\"><strong>Nota:<\/strong>\u00a0Tutte le dipendenze devono essere installate secondo la procedura descritta in\u00a0<a href=\"https:\/\/file+.vscode-resource.vscode-cdn.net\/Users\/eleonora\/Downloads\/SDKGuide\/01-getting-started.md\" data-href=\"01-getting-started.md\">Getting Started<\/a>\u00a0prima di procedere con la configurazione dell&#8217;interazione.<\/p><\/blockquote><hr class=\"code-line\" dir=\"auto\" data-line=\"26\" \/><h3 id=\"1-configurazione-xr-interaction-toolkit\" class=\"code-line\" dir=\"auto\" data-line=\"28\">1. Configurazione XR Interaction Toolkit<\/h3><h4 id=\"installazione\" class=\"code-line\" dir=\"auto\" data-line=\"30\">Installazione<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"32\">Il pacchetto \u00e8 installato tramite\u00a0<strong>Window &gt; Package Manager &gt; Unity Registry &gt; XR Interaction Toolkit &gt; Install<\/strong>\u00a0(versione 3.3.0).<\/p><p class=\"code-line\" dir=\"auto\" data-line=\"34\">Se durante l&#8217;installazione compare il prompt\u00a0<strong>&#8220;Enable the new input system?&#8221;<\/strong>, clicca\u00a0<strong>Yes<\/strong>. Se compare il prompt\u00a0<strong>&#8220;XR Interaction Layer Mask Update Required&#8221;<\/strong>, clicca\u00a0<strong>I Made a Backup, Go Ahead!<\/strong>\u00a0(per nuovi progetti) oppure\u00a0<strong>No Thanks<\/strong>\u00a0se non era gi\u00e0 presente una versione precedente di XRIT.<\/p><h4 id=\"importa-gli-starter-assets\" class=\"code-line\" dir=\"auto\" data-line=\"36\">Importa gli Starter Assets<\/h4><ol class=\"code-line\" dir=\"auto\" data-line=\"38\"><li class=\"code-line\" dir=\"auto\" data-line=\"38\">Apri\u00a0<strong>Window &gt; Package Manager<\/strong>, seleziona\u00a0<strong>In Project<\/strong>\u00a0e poi il pacchetto\u00a0<strong>XR Interaction Toolkit<\/strong>.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"39\">Nella sezione\u00a0<strong>Samples<\/strong>, clicca\u00a0<strong>Import<\/strong>\u00a0su\u00a0<strong>Starter Assets<\/strong>.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"40\">Clicca anche\u00a0<strong>Import<\/strong>\u00a0su\u00a0<strong>Hand Interaction Demo<\/strong>\u00a0(necessario per i sample di hand tracking).<\/li><\/ol><p class=\"code-line\" dir=\"auto\" data-line=\"42\">Gli Starter Assets includono:<\/p><ul class=\"code-line\" dir=\"auto\" data-line=\"43\"><li class=\"code-line\" dir=\"auto\" data-line=\"43\">Input Action Asset preconfigurato per controller XR e hands.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"44\">Prefab di riferimento per XR Origin con Ray Interactor e Direct Interactor.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"45\">Material e shader di base per i visual feedback di interazione.<\/li><\/ul><h4 id=\"configurazione-input-actions\" class=\"code-line\" dir=\"auto\" data-line=\"47\">Configurazione Input Actions<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"49\">Dopo l&#8217;import, un asset\u00a0<code>XRI Default Input Actions<\/code>\u00a0viene aggiunto in\u00a0<code>Assets\/Samples\/XR Interaction Toolkit\/[versione]\/Starter Assets\/<\/code>. Questo asset \u00e8 gi\u00e0 configurato per i profili controller standard (incluso il Companion Controller via Microsoft MMRC Profile) e per le mani.<\/p><p class=\"code-line\" dir=\"auto\" data-line=\"51\">Per associare l&#8217;asset al sistema:<\/p><ol class=\"code-line\" dir=\"auto\" data-line=\"52\"><li class=\"code-line\" dir=\"auto\" data-line=\"52\">Vai su\u00a0<strong>Edit &gt; Project Settings &gt; XR Plug-in Management &gt; Input System<\/strong>.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"53\">Assicurati che\u00a0<strong>Active Input Handling<\/strong>\u00a0sia impostato su\u00a0<strong>Both<\/strong>\u00a0o\u00a0<strong>Input System Package (New)<\/strong>.<\/li><\/ol><hr class=\"code-line\" dir=\"auto\" data-line=\"55\" \/><h3 id=\"2-configurazione-della-scena--xr-origin\" class=\"code-line\" dir=\"auto\" data-line=\"57\">2. Configurazione della Scena \u2014 XR Origin<\/h3><h4 id=\"struttura-base-della-scena\" class=\"code-line\" dir=\"auto\" data-line=\"59\">Struttura Base della Scena<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"61\">La gerarchia minima per una scena interattiva su LeonardoXR \u00e8:<\/p><pre><code class=\"code-line\" dir=\"auto\" data-line=\"63\">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 (sinistra)\n        \u2502     \u2514\u2500\u2500 XR Direct Interactor (sinistra)\n        \u2514\u2500\u2500 RightHand Controller\n              \u251c\u2500\u2500 XR Ray Interactor (destra)\n              \u2514\u2500\u2500 XR Direct Interactor (destra)\n<\/code><\/pre><p class=\"code-line\" dir=\"auto\" data-line=\"76\">Crea la struttura base selezionando\u00a0<strong>GameObject &gt; XR &gt; XR Origin (Action-based)<\/strong>\u00a0nel menu principale.<\/p><blockquote class=\"code-line\" dir=\"auto\" data-line=\"78\"><p class=\"code-line\" dir=\"auto\" data-line=\"78\"><strong>Attenzione:<\/strong>\u00a0Disabilita il componente\u00a0<strong>AR Camera Background<\/strong>\u00a0\u2014 non \u00e8 supportato su LeonardoXR e viene disabilitato automaticamente a runtime. Disabilita anche\u00a0<strong>AR Camera Manager<\/strong>\u00a0se non recuperi frame RGB dalla camera.<\/p><\/blockquote><h4 id=\"input-action-manager\" class=\"code-line\" dir=\"auto\" data-line=\"80\">Input Action Manager<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"82\">Aggiungi il componente\u00a0<strong>Input Action Manager<\/strong>\u00a0all&#8217;XR Origin (o a un GameObject persistente). Nel campo\u00a0<strong>Action Assets<\/strong>, assegna:<\/p><ol class=\"code-line\" dir=\"auto\" data-line=\"84\"><li class=\"code-line\" dir=\"auto\" data-line=\"84\"><code>XRI Default Input Actions<\/code>\u00a0(dagli Starter Assets importati).<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"85\"><code>Snapdragon Spaces Input Actions<\/code>\u00a0(da\u00a0<code>Samples\/Snapdragon Spaces\/[versione]\/Core Samples\/Shared Assets\/Input Actions<\/code>).<\/li><\/ol><hr class=\"code-line\" dir=\"auto\" data-line=\"87\" \/><h3 id=\"3-configurazione-controller-companion-controller\" class=\"code-line\" dir=\"auto\" data-line=\"89\">3. Configurazione Controller (Companion Controller)<\/h3><p class=\"code-line\" dir=\"auto\" data-line=\"91\">Il\u00a0<strong>Companion Controller<\/strong>\u00a0di Leonardo XR usa il\u00a0<strong>Microsoft Mixed Reality Motion Controller Profile<\/strong>\u00a0per inviare input di puntamento e pulsanti dall&#8217;app companion sullo smartphone.<\/p><h4 id=\"aggiunta-del-profilo-controller\" class=\"code-line\" dir=\"auto\" data-line=\"93\">Aggiunta del Profilo Controller<\/h4><ol class=\"code-line\" dir=\"auto\" data-line=\"95\"><li class=\"code-line\" dir=\"auto\" data-line=\"95\">Vai su\u00a0<strong>Edit &gt; Project Settings &gt; XR Plug-in Management &gt; OpenXR &gt; Enabled Interaction Profiles<\/strong>.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"96\">Clicca\u00a0<strong>+<\/strong>\u00a0e aggiungi\u00a0<strong>Microsoft Mixed Reality Motion Controller Profile<\/strong>.<\/li><\/ol><blockquote class=\"code-line\" dir=\"auto\" data-line=\"98\"><p class=\"code-line\" dir=\"auto\" data-line=\"98\"><strong>Nota:<\/strong>\u00a0Non aggiungere il\u00a0<strong>Hand Interaction Profile<\/strong>\u00a0insieme al Companion Controller \u2014 ha la precedenza e interferisce con il puntamento del controller.<\/p><\/blockquote><h4 id=\"device-pointer-prefab\" class=\"code-line\" dir=\"auto\" data-line=\"100\">Device Pointer Prefab<\/h4><ol class=\"code-line\" dir=\"auto\" data-line=\"102\"><li class=\"code-line\" dir=\"auto\" data-line=\"102\">Trova il prefab del Device Pointer in\u00a0<code>Samples\/Snapdragon Spaces\/[versione]\/Core Samples\/Shared Assets\/Prefabs\/Interaction<\/code>.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"103\">Aggiungilo come figlio del Controller (destra o sinistra) nell&#8217;XR Origin.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"104\">Nel componente\u00a0<strong>XR Interactor Line Visual<\/strong>, imposta\u00a0<strong>Line Width<\/strong>\u00a0su\u00a0<code>0.005<\/code>.<\/li><\/ol><hr class=\"code-line\" dir=\"auto\" data-line=\"106\" \/><h3 id=\"4-configurazione-xr-hands\" class=\"code-line\" dir=\"auto\" data-line=\"108\">4. Configurazione XR Hands<\/h3><h4 id=\"installazione-1\" class=\"code-line\" dir=\"auto\" data-line=\"110\">Installazione<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"112\">Installato tramite\u00a0<strong>Window &gt; Package Manager &gt; Unity Registry &gt; XR Hands &gt; Install<\/strong>\u00a0(versione 1.7.2).<\/p><h4 id=\"importa-i-hand-samples\" class=\"code-line\" dir=\"auto\" data-line=\"114\">Importa i Hand Samples<\/h4><ol class=\"code-line\" dir=\"auto\" data-line=\"116\"><li class=\"code-line\" dir=\"auto\" data-line=\"116\">Apri\u00a0<strong>Window &gt; Package Manager &gt; In Project &gt; XR Hands &gt; Samples<\/strong>.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"117\">Importa:<ul class=\"code-line\" dir=\"auto\" data-line=\"118\"><li class=\"code-line\" dir=\"auto\" data-line=\"118\"><strong>Gestures<\/strong>\u00a0\u2014 sistema di riconoscimento gesture.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"119\"><strong>Hand Visualizer<\/strong>\u00a0\u2014 visualizzazione delle mesh delle mani.<\/li><\/ul><\/li><\/ol><h4 id=\"attivazione-hand-tracking-subsystem\" class=\"code-line\" dir=\"auto\" data-line=\"121\">Attivazione Hand Tracking Subsystem<\/h4><ol class=\"code-line\" dir=\"auto\" data-line=\"123\"><li class=\"code-line\" dir=\"auto\" data-line=\"123\">Vai su\u00a0<strong>Edit &gt; Project Settings &gt; XR Plug-in Management &gt; OpenXR<\/strong>\u00a0(scheda Android).<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"124\">In\u00a0<strong>All Features<\/strong>, abilita\u00a0<strong>Hand Tracking Subsystem<\/strong>.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"125\">Abilita anche\u00a0<strong>Hand Tracking<\/strong>\u00a0nel Snapdragon Spaces feature group.<\/li><\/ol><blockquote class=\"code-line\" dir=\"auto\" data-line=\"127\"><p class=\"code-line\" dir=\"auto\" data-line=\"127\"><strong>Attenzione:<\/strong>\u00a0Il\u00a0<strong>Hand Tracking Subsystem<\/strong>\u00a0deve essere abilitato in\u00a0<strong>All Features<\/strong>\u00a0\u2014 non solo nella sezione Snapdragon Spaces \u2014 per funzionare correttamente su LeonardoXR.<\/p><\/blockquote><h4 id=\"attivazione-hand-interaction-profile\" class=\"code-line\" dir=\"auto\" data-line=\"129\">Attivazione Hand Interaction Profile<\/h4><ol class=\"code-line\" dir=\"auto\" data-line=\"131\"><li class=\"code-line\" dir=\"auto\" data-line=\"131\">Vai su\u00a0<strong>Edit &gt; Project Settings &gt; XR Plug-in Management &gt; OpenXR &gt; Enabled Interaction Profiles<\/strong>.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"132\">Clicca\u00a0<strong>+<\/strong>\u00a0e aggiungi\u00a0<strong>Hand Interaction Profile<\/strong>.<\/li><\/ol><blockquote class=\"code-line\" dir=\"auto\" data-line=\"134\"><p class=\"code-line\" dir=\"auto\" data-line=\"134\"><strong>Nota:<\/strong>\u00a0Non aggiungere\u00a0<strong>Hand Interaction Profile<\/strong>\u00a0se stai usando il Companion Controller \u2014 i due profili sono in conflitto. Vedi la sezione &#8220;Combinare Controller e Hand Tracking&#8221; pi\u00f9 in basso.<\/p><\/blockquote><h4 id=\"xr-hand-subsystem-e-xr-origin\" class=\"code-line\" dir=\"auto\" data-line=\"136\">XR Hand Subsystem e XR Origin<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"138\">Il pacchetto XR Hands si integra con XR Interaction Toolkit tramite i componenti\u00a0<strong>XR Hand Tracking Events<\/strong>\u00a0e\u00a0<strong>XR Hand Skeleton Driver<\/strong>. Questi componenti vengono configurati automaticamente sugli XR Origin Controller se si usano i prefab degli Starter Assets del Hand Interaction Demo.<\/p><p class=\"code-line\" dir=\"auto\" data-line=\"140\"><strong>Struttura raccomandata con XR Hands:<\/strong><\/p><pre><code class=\"code-line\" dir=\"auto\" data-line=\"142\">XR Origin (Action-based)\n  \u2514\u2500\u2500 Camera Offset\n        \u251c\u2500\u2500 Left Hand\n        \u2502     \u251c\u2500\u2500 XR Hand Skeleton Driver\n        \u2502     \u251c\u2500\u2500 XR Hand Mesh Renderer (opzionale)\n        \u2502     \u2514\u2500\u2500 XR Direct Interactor\n        \u2514\u2500\u2500 Right Hand\n              \u251c\u2500\u2500 XR Hand Skeleton Driver\n              \u251c\u2500\u2500 XR Hand Mesh Renderer (opzionale)\n              \u2514\u2500\u2500 XR Ray Interactor (per puntamento a distanza)\n<\/code><\/pre><h4 id=\"accesso-ai-dati-delle-giunture-via-xr-hands-api\" class=\"code-line\" dir=\"auto\" data-line=\"155\">Accesso ai Dati delle Giunture via XR Hands API<\/h4><pre><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"157\"><span class=\"hljs-keyword\">using<\/span> UnityEngine.XR.Hands;\n\nXRHandSubsystem handSubsystem = XRHandSubsystemUtility.GetSubsystem();\n\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 = posizione della punta dell'indice sinistro<\/span>\n        }\n    }\n}\n<\/code><\/pre><h4 id=\"gesture-recognition\" class=\"code-line\" dir=\"auto\" data-line=\"175\">Gesture Recognition<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"177\">Usa il sistema\u00a0<strong>Gestures<\/strong>\u00a0di XR Hands per rilevare pose statiche o dinamiche delle mani:<\/p><pre><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"179\"><span class=\"hljs-keyword\">using<\/span> UnityEngine.XR.Hands;\n\n<span class=\"hljs-comment\">\/\/ Sulla scena: aggiungi XRHandGestures component all'XR Origin<\/span>\n<span class=\"hljs-comment\">\/\/ Poi sottoscrivi gli eventi:<\/span>\n\n[<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> eseguita con <span class=\"hljs-subst\">{handedness}<\/span>\"<\/span>);\n}\n<\/code><\/pre><hr class=\"code-line\" dir=\"auto\" data-line=\"198\" \/><h3 id=\"5-configurazione-degli-interactable\" class=\"code-line\" dir=\"auto\" data-line=\"200\">5. Configurazione degli Interactable<\/h3><h4 id=\"aggiungere-interactable-a-un-oggetto\" class=\"code-line\" dir=\"auto\" data-line=\"202\">Aggiungere Interactable a un Oggetto<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"204\">Per rendere un oggetto selezionabile da ray o direct interactor:<\/p><ol class=\"code-line\" dir=\"auto\" data-line=\"206\"><li class=\"code-line\" dir=\"auto\" data-line=\"206\">Aggiungi un\u00a0<strong>Collider<\/strong>\u00a0all&#8217;oggetto (es. Box Collider).<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"207\">Aggiungi il componente\u00a0<strong>XR Grab Interactable<\/strong>\u00a0per oggetti afferrabili, oppure\u00a0<strong>XR Simple Interactable<\/strong>\u00a0per oggetti che ricevono eventi senza essere spostati.<\/li><\/ol><pre><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"209\"><span class=\"hljs-comment\">\/\/ Esempio: reazione al select con XR Simple Interactable<\/span>\n<span class=\"hljs-keyword\">using<\/span> UnityEngine.XR.Interaction.Toolkit;\n\n<span class=\"hljs-keyword\">public<\/span> <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\">\"Selezionato da: \"<\/span> + args.interactorObject);\n    }\n}\n<\/code><\/pre><h4 id=\"interaction-layer-mask\" class=\"code-line\" dir=\"auto\" data-line=\"229\">Interaction Layer Mask<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"231\">XRIT 3.x usa le\u00a0<strong>Interaction Layer Masks<\/strong>\u00a0per filtrare quali interactor possono interagire con quali interactable. Configura i layer dall&#8217;inspector o tramite:<\/p><pre><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"233\">interactable.interactionLayers = InteractionLayerMask.GetMask(<span class=\"hljs-string\">\"Default\"<\/span>, <span class=\"hljs-string\">\"UI\"<\/span>);\n<\/code><\/pre><hr class=\"code-line\" dir=\"auto\" data-line=\"237\" \/><h3 id=\"6-ui-canvas-e-interazione\" class=\"code-line\" dir=\"auto\" data-line=\"239\">6. UI Canvas e Interazione<\/h3><h4 id=\"canvas-in-world-space\" class=\"code-line\" dir=\"auto\" data-line=\"241\">Canvas in World Space<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"243\">Per UI 3D interattive su LeonardoXR:<\/p><ol class=\"code-line\" dir=\"auto\" data-line=\"245\"><li class=\"code-line\" dir=\"auto\" data-line=\"245\">Crea un\u00a0<strong>Canvas<\/strong>\u00a0e imposta\u00a0<strong>Render Mode<\/strong>\u00a0su\u00a0<strong>World Space<\/strong>.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"246\">Aggiungi il componente\u00a0<strong>Tracked Device Graphic Raycaster<\/strong>\u00a0al Canvas (al posto del Canvas standard Graphic Raycaster).<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"247\">Aggiungi\u00a0<strong>XR UI Input Module<\/strong>\u00a0al GameObject\u00a0<strong>EventSystem<\/strong>\u00a0della scena (sostituisce il default Input System UI Input Module).<\/li><\/ol><h4 id=\"impostazioni-canvas-consigliate\" class=\"code-line\" dir=\"auto\" data-line=\"249\">Impostazioni Canvas Consigliate<\/h4><table class=\"code-line\" dir=\"auto\" data-line=\"251\"><thead class=\"code-line\" dir=\"auto\" data-line=\"251\"><tr class=\"code-line\" dir=\"auto\" data-line=\"251\"><th>Parametro<\/th><th>Valore Consigliato<\/th><\/tr><\/thead><tbody class=\"code-line\" dir=\"auto\" data-line=\"253\"><tr class=\"code-line\" dir=\"auto\" data-line=\"253\"><td>Render Mode<\/td><td>World Space<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"254\"><td>Dynamic Pixels Per Unit<\/td><td>1<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"255\"><td>Reference Pixels Per Unit<\/td><td>100<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"256\"><td>Scale<\/td><td>0.001 (per un canvas di ~1m = 1000 unit\u00e0 pixel)<\/td><\/tr><\/tbody><\/table><hr class=\"code-line\" dir=\"auto\" data-line=\"258\" \/><h3 id=\"7-combinare-controller-e-hand-tracking\" class=\"code-line\" dir=\"auto\" data-line=\"260\">7. Combinare Controller e Hand Tracking<\/h3><p class=\"code-line\" dir=\"auto\" data-line=\"262\">Su LeonardoXR non \u00e8 possibile usare simultaneamente il Companion Controller (con raycast) e il Hand Tracking completo (con raycast da entrambe le mani) a causa dei conflitti tra profili OpenXR.<\/p><h4 id=\"opzione-a--solo-controller-companion-controller\" class=\"code-line\" dir=\"auto\" data-line=\"264\">Opzione A \u2014 Solo Controller (Companion Controller)<\/h4><ul class=\"code-line\" dir=\"auto\" data-line=\"266\"><li class=\"code-line\" dir=\"auto\" data-line=\"266\">Aggiungi\u00a0<strong>Microsoft MMRC Profile<\/strong>\u00a0tra i profili abilitati.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"267\">Non aggiungere\u00a0<strong>Hand Interaction Profile<\/strong>.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"268\">Il Companion Controller gestisce il puntamento; le mani possono essere usate come collider ma non come interactor di raycast.<\/li><\/ul><h4 id=\"opzione-b--solo-mani-dual-hand-mode\" class=\"code-line\" dir=\"auto\" data-line=\"270\">Opzione B \u2014 Solo Mani (Dual Hand Mode)<\/h4><ul class=\"code-line\" dir=\"auto\" data-line=\"272\"><li class=\"code-line\" dir=\"auto\" data-line=\"272\">Aggiungi\u00a0<strong>Hand Interaction Profile<\/strong>\u00a0tra i profili abilitati.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"273\">Non aggiungere\u00a0<strong>Microsoft MMRC Profile<\/strong>.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"274\">Rimuovi il Device Pointer Prefab dal Controller.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"275\">Entrambe le mani tracciate come interactor completi; nessun input dal telefono.<\/li><\/ul><h4 id=\"opzione-c--controller--una-mano\" class=\"code-line\" dir=\"auto\" data-line=\"277\">Opzione C \u2014 Controller + Una Mano<\/h4><ul class=\"code-line\" dir=\"auto\" data-line=\"279\"><li class=\"code-line\" dir=\"auto\" data-line=\"279\">Aggiungi\u00a0<strong>Microsoft MMRC Profile<\/strong>\u00a0tra i profili abilitati.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"280\">Lascia attivo solo il Right Hand Controller nell&#8217;XR Origin.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"281\">La mano sinistra pu\u00f2 ancora funzionare come collider e trigger per poke interaction, ma non come ray interactor.<\/li><\/ul><hr class=\"code-line\" dir=\"auto\" data-line=\"283\" \/><h3 id=\"8-unitask--operazioni-asincrone\" class=\"code-line\" dir=\"auto\" data-line=\"285\">8. UniTask \u2014 Operazioni Asincrone<\/h3><p class=\"code-line\" dir=\"auto\" data-line=\"287\"><strong>UniTask 2.5.10<\/strong>\u00a0\u00e8 incluso come dipendenza per gestire operazioni asincrone ad alte performance (caricamento asset, attesa di subsystem, ecc.) senza allocazioni GC.<\/p><h4 id=\"installazione-2\" class=\"code-line\" dir=\"auto\" data-line=\"289\">Installazione<\/h4><p class=\"code-line\" dir=\"auto\" data-line=\"291\">Installato tramite\u00a0<strong>Window &gt; Package Manager &gt; Unity Registry &gt; UniTask &gt; Install<\/strong>\u00a0(versione 2.5.10), oppure come git URL.<\/p><h4 id=\"utilizzo-base\" class=\"code-line\" dir=\"auto\" data-line=\"293\">Utilizzo Base<\/h4><pre><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"295\"><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\">\/\/ Attendi che il subsystem XR Hands sia pronto<\/span>\n        <span class=\"hljs-keyword\">await<\/span> UniTask.WaitUntil(() =&gt;\n            XRHandSubsystemUtility.GetSubsystem()?.running ?? <span class=\"hljs-literal\">false<\/span>);\n\n        Debug.Log(<span class=\"hljs-string\">\"XR Hands subsystem pronto.\"<\/span>);\n    }\n}\n<\/code><\/pre><p class=\"code-line\" dir=\"auto\" data-line=\"311\">UniTask \u00e8 usato internamente dall&#8217;LeonardoXR SDK per operazioni asincrone. Si raccomanda di usarlo anche nel codice dell&#8217;applicazione per coerenza con il lifecycle dell&#8217;SDK.<\/p><hr class=\"code-line\" dir=\"auto\" data-line=\"313\" \/><h3 id=\"riferimenti-ai-profili-di-interazione-openxr\" class=\"code-line\" dir=\"auto\" data-line=\"315\">Riferimenti ai Profili di Interazione OpenXR<\/h3><table class=\"code-line\" dir=\"auto\" data-line=\"317\"><thead class=\"code-line\" dir=\"auto\" data-line=\"317\"><tr class=\"code-line\" dir=\"auto\" data-line=\"317\"><th>Profilo<\/th><th>Uso<\/th><\/tr><\/thead><tbody class=\"code-line\" dir=\"auto\" data-line=\"319\"><tr class=\"code-line\" dir=\"auto\" data-line=\"319\"><td><strong>Microsoft Mixed Reality Motion Controller Profile<\/strong><\/td><td>Companion Controller (smartphone come controller)<\/td><\/tr><tr class=\"code-line\" dir=\"auto\" data-line=\"320\"><td><strong>Hand Interaction Profile<\/strong><\/td><td>Hand tracking con poke\/pinch interactor<\/td><\/tr><\/tbody><\/table><blockquote class=\"code-line\" dir=\"auto\" data-line=\"322\"><p class=\"code-line\" dir=\"auto\" data-line=\"322\"><strong>Ricorda:<\/strong>\u00a0I due profili non possono coesistere con raycast attivo su entrambi. Scegli una delle opzioni descritte nella sezione &#8220;Combinare Controller e Hand Tracking&#8221;.<\/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>Interaction Package Guides \u2014 LeonardoXR SDK Interaction Package Guides \u2014 LeonardoXR SDK Interaction Package Guides \u2014 LeonardoXR SDK Version:\u00a01.0.2\u00a0Target Device:\u00a0Youbiquo Leonardo XRBase SDK:\u00a0Snapdragon Spaces 1.0.4 Questa guida descrive come configurare il layer di interazione per applicazioni LeonardoXR usando i pacchetti standard Unity: XR Interaction Toolkit (XRIT) 3.3.0\u00a0\u2014 sistema di interazione ad alto livello per controller, ray interactor e direct interactor. XR Hands 1.7.2\u00a0\u2014 accesso ai dati delle giunture della mano e gesture recognition. Dipendenze e Versioni Pacchetto Versione Fonte XR Interaction Toolkit 3.3.0 Unity Registry XR Hands 1.7.2 Unity Registry AR Foundation 6.2.1 Unity Registry Snapdragon Spaces SDK 1.0.4 Tarball (Qualcomm) LeonardoXR SDK 1.0.2 Tarball (Youbiquo) UniTask 2.5.10 Unity Registry Nota:\u00a0Tutte le dipendenze devono essere installate secondo la procedura descritta in\u00a0Getting Started\u00a0prima di procedere con la configurazione dell&#8217;interazione. 1. Configurazione XR Interaction Toolkit Installazione Il pacchetto \u00e8 installato tramite\u00a0Window &gt; Package Manager &gt; Unity Registry &gt; XR Interaction Toolkit &gt; Install\u00a0(versione 3.3.0). Se durante l&#8217;installazione compare il prompt\u00a0&#8220;Enable the new input system?&#8221;, clicca\u00a0Yes. Se compare il prompt\u00a0&#8220;XR Interaction Layer Mask Update Required&#8221;, clicca\u00a0I Made a Backup, Go Ahead!\u00a0(per nuovi progetti) oppure\u00a0No Thanks\u00a0se non era gi\u00e0 presente una versione precedente di XRIT. Importa gli Starter Assets Apri\u00a0Window &gt; Package Manager, seleziona\u00a0In Project\u00a0e poi il pacchetto\u00a0XR Interaction Toolkit. Nella sezione\u00a0Samples, clicca\u00a0Import\u00a0su\u00a0Starter Assets. Clicca anche\u00a0Import\u00a0su\u00a0Hand Interaction Demo\u00a0(necessario per i sample di hand tracking). Gli Starter Assets includono: Input Action Asset preconfigurato per controller XR e hands. Prefab di riferimento per XR Origin con Ray Interactor e Direct Interactor. Material e shader di base per i visual feedback di interazione. Configurazione Input Actions Dopo l&#8217;import, un asset\u00a0XRI Default Input Actions\u00a0viene aggiunto in\u00a0Assets\/Samples\/XR Interaction Toolkit\/[versione]\/Starter Assets\/. Questo asset \u00e8 gi\u00e0 configurato per i profili controller standard (incluso il Companion Controller via Microsoft MMRC Profile) e per le mani. Per associare l&#8217;asset al sistema: Vai su\u00a0Edit &gt; Project Settings &gt; XR Plug-in Management &gt; Input System. Assicurati che\u00a0Active Input Handling\u00a0sia impostato su\u00a0Both\u00a0o\u00a0Input System Package (New). 2. Configurazione della Scena \u2014 XR Origin Struttura Base della Scena La gerarchia minima per una scena interattiva su LeonardoXR \u00e8: AR Session XR Origin (Action-based) \u2514\u2500\u2500 Camera Offset \u251c\u2500\u2500 Main Camera (tagged &#8220;MainCamera&#8221;) \u251c\u2500\u2500 LeftHand Controller \u2502 \u251c\u2500\u2500 XR Ray Interactor (sinistra) \u2502 \u2514\u2500\u2500 XR Direct Interactor (sinistra) \u2514\u2500\u2500 RightHand Controller \u251c\u2500\u2500 XR Ray Interactor (destra) \u2514\u2500\u2500 XR Direct Interactor (destra) Crea la struttura base selezionando\u00a0GameObject &gt; XR &gt; XR Origin (Action-based)\u00a0nel menu principale. Attenzione:\u00a0Disabilita il componente\u00a0AR Camera Background\u00a0\u2014 non \u00e8 supportato su LeonardoXR e viene disabilitato automaticamente a runtime. Disabilita anche\u00a0AR Camera Manager\u00a0se non recuperi frame RGB dalla camera. Input Action Manager Aggiungi il componente\u00a0Input Action Manager\u00a0all&#8217;XR Origin (o a un GameObject persistente). Nel campo\u00a0Action Assets, assegna: XRI Default Input Actions\u00a0(dagli Starter Assets importati). Snapdragon Spaces Input Actions\u00a0(da\u00a0Samples\/Snapdragon Spaces\/[versione]\/Core Samples\/Shared Assets\/Input Actions). 3. Configurazione Controller (Companion Controller) Il\u00a0Companion Controller\u00a0di Leonardo XR usa il\u00a0Microsoft Mixed Reality Motion Controller Profile\u00a0per inviare input di puntamento e pulsanti dall&#8217;app companion sullo smartphone. Aggiunta del Profilo Controller Vai su\u00a0Edit &gt; Project Settings &gt; XR Plug-in Management &gt; OpenXR &gt; Enabled Interaction Profiles. Clicca\u00a0+\u00a0e aggiungi\u00a0Microsoft Mixed Reality Motion Controller Profile. Nota:\u00a0Non aggiungere il\u00a0Hand Interaction Profile\u00a0insieme al Companion Controller \u2014 ha la precedenza e interferisce con il puntamento del controller. Device Pointer Prefab Trova il prefab del Device Pointer in\u00a0Samples\/Snapdragon Spaces\/[versione]\/Core Samples\/Shared Assets\/Prefabs\/Interaction. Aggiungilo come figlio del Controller (destra o sinistra) nell&#8217;XR Origin. Nel componente\u00a0XR Interactor Line Visual, imposta\u00a0Line Width\u00a0su\u00a00.005. 4. Configurazione XR Hands Installazione Installato tramite\u00a0Window &gt; Package Manager &gt; Unity Registry &gt; XR Hands &gt; Install\u00a0(versione 1.7.2). Importa i Hand Samples Apri\u00a0Window &gt; Package Manager &gt; In Project &gt; XR Hands &gt; Samples. Importa: Gestures\u00a0\u2014 sistema di riconoscimento gesture. Hand Visualizer\u00a0\u2014 visualizzazione delle mesh delle mani. Attivazione Hand Tracking Subsystem Vai su\u00a0Edit &gt; Project Settings &gt; XR Plug-in Management &gt; OpenXR\u00a0(scheda Android). In\u00a0All Features, abilita\u00a0Hand Tracking Subsystem. Abilita anche\u00a0Hand Tracking\u00a0nel Snapdragon Spaces feature group. Attenzione:\u00a0Il\u00a0Hand Tracking Subsystem\u00a0deve essere abilitato in\u00a0All Features\u00a0\u2014 non solo nella sezione Snapdragon Spaces \u2014 per funzionare correttamente su LeonardoXR. Attivazione Hand Interaction Profile Vai su\u00a0Edit &gt; Project Settings &gt; XR Plug-in Management &gt; OpenXR &gt; Enabled Interaction Profiles. Clicca\u00a0+\u00a0e aggiungi\u00a0Hand Interaction Profile. Nota:\u00a0Non aggiungere\u00a0Hand Interaction Profile\u00a0se stai usando il Companion Controller \u2014 i due profili sono in conflitto. Vedi la sezione &#8220;Combinare Controller e Hand Tracking&#8221; pi\u00f9 in basso. XR Hand Subsystem e XR Origin Il pacchetto XR Hands si integra con XR Interaction Toolkit tramite i componenti\u00a0XR Hand Tracking Events\u00a0e\u00a0XR Hand Skeleton Driver. Questi componenti vengono configurati automaticamente sugli XR Origin Controller se si usano i prefab degli Starter Assets del Hand Interaction Demo. Struttura raccomandata con XR Hands: XR Origin (Action-based) \u2514\u2500\u2500 Camera Offset \u251c\u2500\u2500 Left Hand \u2502 \u251c\u2500\u2500 XR Hand Skeleton Driver \u2502 \u251c\u2500\u2500 XR Hand Mesh Renderer (opzionale) \u2502 \u2514\u2500\u2500 XR Direct Interactor \u2514\u2500\u2500 Right Hand \u251c\u2500\u2500 XR Hand Skeleton Driver \u251c\u2500\u2500 XR Hand Mesh Renderer (opzionale) \u2514\u2500\u2500 XR Ray Interactor (per puntamento a distanza) Accesso ai Dati delle Giunture via XR Hands API using UnityEngine.XR.Hands; XRHandSubsystem handSubsystem = XRHandSubsystemUtility.GetSubsystem(); if (handSubsystem != null) { XRHand leftHand = handSubsystem.leftHand; if (leftHand.isTracked) { if (leftHand.GetJoint(XRHandJointID.IndexTip).TryGetPose(out Pose indexTipPose)) { \/\/ indexTipPose.position = posizione della punta dell&#8217;indice sinistro } } } Gesture Recognition Usa il sistema\u00a0Gestures\u00a0di XR Hands per rilevare pose statiche o dinamiche delle mani: using UnityEngine.XR.Hands; \/\/ Sulla scena: aggiungi XRHandGestures component all&#8217;XR Origin \/\/ Poi sottoscrivi gli eventi: [SerializeField] XRHandGestures gestures; void OnEnable() { gestures.gesturePerformed += OnGesturePerformed; } void OnGesturePerformed(XRHandGesture gesture, Handedness handedness) { Debug.Log($&#8221;Gesture: {gesture.gestureName} eseguita con {handedness}&#8221;); } 5. Configurazione degli Interactable Aggiungere Interactable a un Oggetto Per rendere un oggetto selezionabile da ray o direct interactor: Aggiungi un\u00a0Collider\u00a0all&#8217;oggetto (es. Box Collider). Aggiungi il componente\u00a0XR Grab Interactable\u00a0per oggetti afferrabili, oppure\u00a0XR Simple Interactable\u00a0per oggetti che ricevono eventi senza essere spostati. \/\/ Esempio: reazione al select con XR Simple Interactable using UnityEngine.XR.Interaction.Toolkit; public class MyButton : MonoBehaviour { [SerializeField] XRSimpleInteractable interactable; void OnEnable() { interactable.selectEntered.AddListener(OnSelected); } void OnSelected(SelectEnterEventArgs args) { Debug.Log(&#8220;Selezionato da: &#8221; + args.interactorObject); } } Interaction Layer Mask XRIT 3.x usa le\u00a0Interaction Layer Masks\u00a0per filtrare quali interactor possono interagire con quali interactable. Configura i layer dall&#8217;inspector o tramite: interactable.interactionLayers = InteractionLayerMask.GetMask(&#8220;Default&#8221;, &#8220;UI&#8221;); 6.<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":7,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-433","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/pages\/433","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/comments?post=433"}],"version-history":[{"count":4,"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/pages\/433\/revisions"}],"predecessor-version":[{"id":449,"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/pages\/433\/revisions\/449"}],"up":[{"embeddable":true,"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/pages\/7"}],"wp:attachment":[{"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/media?parent=433"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}