{"id":711,"date":"2026-10-09T14:04:03","date_gmt":"2026-10-09T12:04:03","guid":{"rendered":"https:\/\/www.youbiquo.eu\/leonardoxr\/?page_id=711"},"modified":"2026-10-09T14:04:24","modified_gmt":"2026-10-09T12:04:24","slug":"interaction-package-guides-leonardoxr-sdk","status":"publish","type":"page","link":"https:\/\/www.youbiquo.eu\/leonardoxr\/en\/leonardo-xr-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=\"711\" class=\"elementor elementor-711\" 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=\"Open table of contents\"><svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-chevron-down\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\"><\/path><\/svg><\/div>\n\t\t\t\t<div class=\"elementor-toc__toggle-button elementor-toc__toggle-button--collapse\" role=\"button\" tabindex=\"0\" aria-controls=\"elementor-toc__69e47bc\" aria-expanded=\"true\" aria-label=\"Close table of contents\"><svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-chevron-up\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z\"><\/path><\/svg><\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<div id=\"elementor-toc__69e47bc\" class=\"elementor-toc__body\">\n\t\t\t<div class=\"elementor-toc__spinner-container\">\n\t\t\t\t<svg class=\"elementor-toc__spinner eicon-animation-spin e-font-icon-svg e-eicon-loading\" aria-hidden=\"true\" viewBox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M500 975V858C696 858 858 696 858 500S696 142 500 142 142 304 142 500H25C25 237 238 25 500 25S975 237 975 500 763 975 500 975Z\"><\/path><\/svg>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-677117a e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"677117a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1a4d842 elementor-widget elementor-widget-text-editor\" data-id=\"1a4d842\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<h2 id=\"interaction-package-guides--leonardoxr-sdk\" class=\"code-line\" dir=\"auto\" data-line=\"0\">Interaction Package Guides \u2014 LeonardoXR SDK<\/h2>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"2\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"2\"><strong>Version:<\/strong> 1.0.2 <strong>Target Device:<\/strong> Youbiquo Leonardo XR <strong>Base SDK:<\/strong> Snapdragon Spaces 1.0.4<\/p>\n<\/blockquote>\n<p class=\"code-line\" dir=\"auto\" data-line=\"6\">This guide describes how to configure the interaction layer for LeonardoXR applications using standard Unity packages:<\/p>\n\n<ul class=\"code-line\" dir=\"auto\" data-line=\"8\">\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"8\"><strong>XR Interaction Toolkit (XRIT) 3.3.0<\/strong> \u2014 high-level interaction system for controllers, ray interactors, and direct interactors.<\/li>\n \t<li class=\"code-line code-active-line\" dir=\"auto\" data-line=\"9\"><strong>XR Hands 1.7.2<\/strong> \u2014 access to hand joint data and gesture recognition.<\/li>\n<\/ul>\n\n<hr class=\"code-line\" dir=\"auto\" data-line=\"11\" \/>\n\n<h3 id=\"dependencies-and-versions\" class=\"code-line\" dir=\"auto\" data-line=\"13\">Dependencies and Versions<\/h3>\n<table class=\"code-line\" dir=\"auto\" data-line=\"15\">\n<thead class=\"code-line\" dir=\"auto\" data-line=\"15\">\n<tr class=\"code-line\" dir=\"auto\" data-line=\"15\">\n<th>Package<\/th>\n<th>Version<\/th>\n<th>Source<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"code-line\" dir=\"auto\" data-line=\"17\">\n<tr class=\"code-line\" dir=\"auto\" data-line=\"17\">\n<td>XR Interaction Toolkit<\/td>\n<td>3.3.0<\/td>\n<td>Unity Registry<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"18\">\n<td>XR Hands<\/td>\n<td>1.7.2<\/td>\n<td>Unity Registry<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"19\">\n<td>AR Foundation<\/td>\n<td>6.2.1<\/td>\n<td>Unity Registry<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"20\">\n<td>Snapdragon Spaces SDK<\/td>\n<td>1.0.4<\/td>\n<td>Tarball (Qualcomm)<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"21\">\n<td>LeonardoXR SDK<\/td>\n<td>1.0.2<\/td>\n<td>Tarball (Youbiquo)<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"22\">\n<td>UniTask<\/td>\n<td>2.5.10<\/td>\n<td>Unity Registry<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"24\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"24\"><strong>Note:<\/strong> All dependencies must be installed following the procedure described in <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> before proceeding with the interaction configuration.<\/p>\n<\/blockquote>\n\n<hr class=\"code-line\" dir=\"auto\" data-line=\"26\" \/>\n\n<h3 id=\"1-configuration-of-xr-interaction-toolkit\" class=\"code-line\" dir=\"auto\" data-line=\"28\">1. XR Interaction Toolkit Configuration<\/h3>\n<h4 id=\"installation\" class=\"code-line\" dir=\"auto\" data-line=\"30\">Installation<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"32\">The package is installed via <strong>Window &gt; Package Manager &gt; Unity Registry &gt; XR Interaction Toolkit &gt; Install<\/strong> (version 3.3.0).<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"34\">If the prompt <strong>&#8220;Enable the new input system?&#8221;<\/strong> appears during installation, click <strong>Yes<\/strong>. If the prompt <strong>&#8220;XR Interaction Layer Mask Update Required&#8221;<\/strong> appears, click <strong>I Made a Backup, Go Ahead!<\/strong> (for new projects) or <strong>No Thanks<\/strong> if a previous version of XRIT was already present.<\/p>\n\n<h4 id=\"import-starter-assets\" class=\"code-line\" dir=\"auto\" data-line=\"36\">Import Starter Assets<\/h4>\n<ol class=\"code-line\" dir=\"auto\" data-line=\"38\">\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"38\">Open <strong>Window &gt; Package Manager<\/strong>, select <strong>In Project<\/strong>, and then select the <strong>XR Interaction Toolkit<\/strong> package.<\/li><li class=\"code-line\" dir=\"auto\" data-line=\"39\">In the <strong>Samples<\/strong> section, click <strong>Import<\/strong> on <strong>Starter Assets<\/strong>.<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"40\">Also click <strong>Import<\/strong> on <strong>Hand Interaction Demo<\/strong> (required for hand tracking samples).<\/li>\n<\/ol>\n<p class=\"code-line\" dir=\"auto\" data-line=\"42\">The Starter Assets include:<\/p>\n\n<ul class=\"code-line\" dir=\"auto\" data-line=\"43\">\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"43\">Pre-configured Input Action Asset for XR controllers and hands.<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"44\">Reference Prefab for XR Origin with Ray Interactor and Direct Interactor.<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"45\">Basic materials and shaders for interaction visual feedback.<\/li>\n<\/ul>\n<h4 id=\"configurazione-input-actions\" class=\"code-line\" dir=\"auto\" data-line=\"47\">Input Actions Configuration<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"49\">After import, an <code>XRI Default Input Actions<\/code> asset is added to <code>Assets\/Samples\/XR Interaction Toolkit\/[version]\/Starter Assets\/<\/code>. This asset is already configured for standard controller profiles (including the Companion Controller via the Microsoft MMRC Profile) and for hands.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"51\">To assign the asset to the system:<\/p>\n\n<ol class=\"code-line\" dir=\"auto\" data-line=\"52\">\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"52\">Go to <strong>Edit > Project Settings > XR Plug-in Management > Input System<\/strong>.<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"53\">Ensure that <strong>Active Input Handling<\/strong> is set to <strong>Both<\/strong> or <strong>Input System Package (New)<\/strong>.<\/li>\n<\/ol>\n\n<hr class=\"code-line\" dir=\"auto\" data-line=\"55\" \/>\n\n<h3 id=\"2-configurazione-della-scena--xr-origin\" class=\"code-line\" dir=\"auto\" data-line=\"57\">2. Scene Configuration \u2014 XR Origin<\/h3>\n<h4 id=\"struttura-base-della-scena\" class=\"code-line\" dir=\"auto\" data-line=\"59\">Basic Scene Structure<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"61\">The minimum hierarchy for an interactive scene on LeonardoXR is:<\/p>\n\n<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 (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>\n<p class=\"code-line\" dir=\"auto\" data-line=\"76\">Create the base structure by selecting <strong>GameObject > XR > XR Origin (Action-based)<\/strong> from the main menu.<\/p><blockquote class=\"code-line\" dir=\"auto\" data-line=\"78\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"78\"><strong>Warning:<\/strong> Disable the <strong>AR Camera Background<\/strong> component \u2014 it is not supported on LeonardoXR and will be automatically disabled at runtime. Also disable <strong>AR Camera Manager<\/strong> if you are not retrieving RGB frames from the camera.<\/p>\n<\/blockquote>\n<h4 id=\"input-action-manager\" class=\"code-line\" dir=\"auto\" data-line=\"80\">Input Action Manager<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"82\">Add the <strong>Input Action Manager<\/strong> component to the XR Origin (or to a persistent GameObject). In the <strong>Action Assets<\/strong> field, assign:<\/p>\n\n<ol class=\"code-line\" dir=\"auto\" data-line=\"84\">\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"84\"><code>XRI Default Input Actions<\/code> (from the imported Starter Assets).<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"85\"><code>Snapdragon Spaces Input Actions<\/code> (from <code>Samples\/Snapdragon Spaces\/[version]\/Core Samples\/Shared Assets\/Input Actions<\/code>).<\/li>\n<\/ol>\n\n<hr class=\"code-line\" dir=\"auto\" data-line=\"87\" \/>\n\n<h3 id=\"3-configurazione-controller-companion-controller\" class=\"code-line\" dir=\"auto\" data-line=\"89\">3. Controller Configuration (Companion Controller)<\/h3>\n<p class=\"code-line\" dir=\"auto\" data-line=\"91\">Leonardo XR&#8217;s <strong>Companion Controller<\/strong> uses the <strong>Microsoft Mixed Reality Motion Controller Profile<\/strong> to send pointing and button inputs from the companion app on your smartphone.<\/p>\n\n<h4 id=\"aggiunta-del-profilo-controller\" class=\"code-line\" dir=\"auto\" data-line=\"93\">Adding the Controller Profile<\/h4>\n<ol class=\"code-line\" dir=\"auto\" data-line=\"95\">\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"95\">Go to <strong>Edit &gt; Project Settings &gt; XR Plug-in Management &gt; OpenXR &gt; Enabled Interaction Profiles<\/strong>.<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"96\">Click <strong>+<\/strong> and add <strong>Microsoft Mixed Reality Motion Controller Profile<\/strong>.<\/li>\n<\/ol>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"98\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"98\"><strong>Note:<\/strong> Do not add the <strong>Hand Interaction Profile<\/strong> alongside the Companion Controller \u2014 it takes precedence and will interfere with controller pointing.<\/p>\n<\/blockquote>\n<h4 id=\"device-pointer-prefab\" class=\"code-line\" dir=\"auto\" data-line=\"100\">Device Pointer Prefab<\/h4>\n<ol class=\"code-line\" dir=\"auto\" data-line=\"102\">\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"102\">Locate the Device Pointer prefab in <code>Samples\/Snapdragon Spaces\/[version]\/Core Samples\/Shared Assets\/Prefabs\/Interaction<\/code>.<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"103\">Add it as a child of the Controller (left or right) within the XR Origin.<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"104\">In the <strong>XR Interactor Line Visual<\/strong> component, set <strong>Line Width<\/strong> to <code>0.005<\/code>.<\/li>\n<\/ol>\n\n<hr class=\"code-line\" dir=\"auto\" data-line=\"106\" \/>\n\n<h3 id=\"4-configurazione-xr-hands\" class=\"code-line\" dir=\"auto\" data-line=\"108\">4. XR Hands Configuration<\/h3>\n<h4 id=\"installazione-1\" class=\"code-line\" dir=\"auto\" data-line=\"110\">Installation<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"112\">Installed via <strong>Window &gt; Package Manager &gt; Unity Registry &gt; XR Hands &gt; Install<\/strong> (version 1.7.2).<\/p>\n\n<h4 id=\"importa-i-hand-samples\" class=\"code-line\" dir=\"auto\" data-line=\"114\">Importing the Hand Samples<\/h4>\n<ol class=\"code-line\" dir=\"auto\" data-line=\"116\">\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"116\">Open <strong>Window &gt; Package Manager &gt; In Project &gt; XR Hands &gt; Samples<\/strong>.<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"117\">Import:\n<ul class=\"code-line\" dir=\"auto\" data-line=\"118\">\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"118\"><strong>Gestures<\/strong> \u2014 gesture recognition system.<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"119\"><strong>Hand Visualizer<\/strong> \u2014 hand mesh visualization.<\/li>\n<\/ul>\n<\/li>\n<\/ol><h4 id=\"attivazione-hand-tracking-subsystem\" class=\"code-line\" dir=\"auto\" data-line=\"121\">Enable Hand Tracking Subsystem<\/h4>\n<ol class=\"code-line\" dir=\"auto\" data-line=\"123\">\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"123\">Navigate to <strong>Edit &gt; Project Settings &gt; XR Plug-in Management &gt; OpenXR<\/strong> (Android tab).<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"124\">Under <strong>All Features<\/strong>, enable <strong>Hand Tracking Subsystem<\/strong>.<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"125\">Also enable <strong>Hand Tracking<\/strong> in the Snapdragon Spaces feature group.<\/li>\n<\/ol>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"127\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"127\"><strong>Warning:<\/strong> The <strong>Hand Tracking Subsystem<\/strong> must be enabled in <strong>All Features<\/strong> \u2014 not only in the Snapdragon Spaces section \u2014 to function correctly on LeonardoXR.<\/p>\n<\/blockquote>\n<h4 id=\"attivazione-hand-interaction-profile\" class=\"code-line\" dir=\"auto\" data-line=\"129\">Enable Hand Interaction Profile<\/h4>\n<ol class=\"code-line\" dir=\"auto\" data-line=\"131\">\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"131\">Navigate to <strong>Edit &gt; Project Settings &gt; XR Plug-in Management &gt; OpenXR &gt; Enabled Interaction Profiles<\/strong>.<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"132\">Click <strong>+<\/strong> and add <strong>Hand Interaction Profile<\/strong>.<\/li>\n<\/ol>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"134\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"134\"><strong>Note:<\/strong> Do not add <strong>Hand Interaction Profile<\/strong> if you are using the Companion Controller \u2014 the two profiles conflict. See the &#8220;Combining Controllers and Hand Tracking&#8221; section below.<\/p>\n<\/blockquote>\n<h4 id=\"xr-hand-subsystem-e-xr-origin\" class=\"code-line\" dir=\"auto\" data-line=\"136\">XR Hand Subsystem and XR Origin<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"138\">The XR Hands package integrates with the XR Interaction Toolkit via the <strong>XR Hand Tracking Events<\/strong> and <strong>XR Hand Skeleton Driver<\/strong> components. These components are automatically configured on the XR Origin Controller when using the Starter Assets prefabs from the Hand Interaction Demo.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"140\"><strong>Recommended hierarchy with XR Hands:<\/strong><\/p>\n\n<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 (optional)\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 (optional)\n              \u2514\u2500\u2500 XR Ray Interactor (for distance pointing)\n<\/code><\/pre><h4 id=\"accesso-ai-dati-delle-giunture-via-xr-hands-api\" class=\"code-line\" dir=\"auto\" data-line=\"155\">Access to Joint Data via XR Hands API<\/h4>\n<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 = left index tip position<\/span>\n        }\n    }\n}\n<\/code><\/pre>\n<h4 id=\"gesture-recognition\" class=\"code-line\" dir=\"auto\" data-line=\"175\">Gesture Recognition<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"177\">Use the XR Hands Gestures system to detect static or dynamic hand poses:<\/p>\n\n<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\">\/\/ On the scene: add the XRHandGestures component to the XR Origin<\/span>\n<span class=\"hljs-comment\">\/\/ Then subscribe to the events:<\/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> performed with <span class=\"hljs-subst\">{handedness}<\/span>\"<\/span>);\n}\n<\/code><\/pre>\n\n<hr class=\"code-line\" dir=\"auto\" data-line=\"198\" \/>\n\n<h3 id=\"5-configurazione-degli-interactable\" class=\"code-line\" dir=\"auto\" data-line=\"200\">5. Configuring Interactables<\/h3>\n<h4 id=\"aggiungere-interactable-a-un-oggetto\" class=\"code-line\" dir=\"auto\" data-line=\"202\">Adding an Interactable to an Object<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"204\">To make an object selectable by a ray or direct interactor:<\/p>\n\n<ol class=\"code-line\" dir=\"auto\" data-line=\"206\">\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"206\">Add a <strong>Collider<\/strong> to the object (e.g., Box Collider).<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"207\">Add the <strong>XR Grab Interactable<\/strong> component for grabbable objects, or <strong>XR Simple Interactable<\/strong> for objects that receive events without being moved.<\/li>\n<\/ol>\n<pre><code class=\"code-line language-csharp\" dir=\"auto\" data-line=\"209\"><span class=\"hljs-comment\">\/\/ Example: reacting to a select with 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\">\"Selected by: \"<\/span> + args.interactorObject);\n    }\n}\n<\/code><\/pre>\n<h4 id=\"interaction-layer-mask\" class=\"code-line\" dir=\"auto\" data-line=\"229\">Interaction Layer Mask<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"231\">XRIT 3.x uses <strong>Interaction Layer Masks<\/strong> to filter which interactors can interact with which interactables. Configure the layers via the Inspector or by using:<\/p>\n\n<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\" \/>\n\n<h3 id=\"6-ui-canvas-e-interazione\" class=\"code-line\" dir=\"auto\" data-line=\"239\">6. UI Canvas and Interaction<\/h3>\n<h4 id=\"canvas-in-world-space\" class=\"code-line\" dir=\"auto\" data-line=\"241\">Canvas in World Space<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"243\">For interactive 3D UI on LeonardoXR:<\/p>\n\n<ol class=\"code-line\" dir=\"auto\" data-line=\"245\">\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"245\">Create a <strong>Canvas<\/strong> and set <strong>Render Mode<\/strong> to <strong>World Space<\/strong>.<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"246\">Add the <strong>Tracked Device Graphic Raycaster<\/strong> component to the Canvas (replacing the standard Canvas Graphic Raycaster).<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"247\">Add the <strong>XR UI Input Module<\/strong> to the scene&#8217;s <strong>EventSystem<\/strong> GameObject (replacing the default UI Input Module).<\/li>\n<\/ol>\n<h4 id=\"impostazioni-canvas-consigliate\" class=\"code-line\" dir=\"auto\" data-line=\"249\">Recommended Canvas Settings<\/h4>\n<table class=\"code-line\" dir=\"auto\" data-line=\"251\">\n<thead class=\"code-line\" dir=\"auto\" data-line=\"251\">\n<tr class=\"code-line\" dir=\"auto\" data-line=\"251\">\n<th>Parameter<\/th>\n<th>Recommended Value<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"code-line\" dir=\"auto\" data-line=\"253\">\n<tr class=\"code-line\" dir=\"auto\" data-line=\"253\">\n<td>Render Mode<\/td>\n<td>World Space<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"254\">\n<td>Dynamic Pixels Per Unit<\/td>\n<td>1<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"255\">\n<td>Reference Pixels Per Unit<\/td>\n<td>100<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"256\">\n<td>Scale<\/td>\n<td>0.001 (for a ~1m canvas = 1000 pixel units)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\n<hr class=\"code-line\" dir=\"auto\" data-line=\"258\" \/>\n\n<h3 id=\"7-combinare-controller-e-hand-tracking\" class=\"code-line\" dir=\"auto\" data-line=\"260\">7. Combining Controllers and Hand Tracking<\/h3>\n<p class=\"code-line\" dir=\"auto\" data-line=\"262\">On LeonardoXR, it is not possible to simultaneously use the Companion Controller (with raycast) and full Hand Tracking (with raycast from both hands) due to OpenXR profile conflicts.<\/p>\n\n<h4 id=\"opzione-a--solo-controller-companion-controller\" class=\"code-line\" dir=\"auto\" data-line=\"264\">Option A \u2014 Controllers Only (Companion Controller)<\/h4>\n<ul class=\"code-line\" dir=\"auto\" data-line=\"266\">\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"266\">Enable the <strong>Microsoft MMRC Profile<\/strong> among the available profiles.<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"267\">Do not add the <strong>Hand Interaction Profile<\/strong>.<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"268\">The Companion Controller handles pointing; hands can be used as colliders but not as raycast interactors.<\/li>\n<\/ul>\n<h4 id=\"opzione-b--solo-mani-dual-hand-mode\" class=\"code-line\" dir=\"auto\" data-line=\"270\">Option B \u2014 Hands Only (Dual Hand Mode)<\/h4>\n<ul class=\"code-line\" dir=\"auto\" data-line=\"272\">\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"272\">Enable the <strong>Hand Interaction Profile<\/strong> among the available profiles.<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"273\">Do not add the <strong>Microsoft MMRC Profile<\/strong>.<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"274\">Remove the Device Pointer Prefab from the Controller.<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"275\">Both hands are tracked as full interactors; no input from the mobile device.<\/li>\n<\/ul><h4 id=\"opzione-c--controller--una-mano\" class=\"code-line\" dir=\"auto\" data-line=\"277\">Option C \u2014 Controller + One Hand<\/h4>\n<ul class=\"code-line\" dir=\"auto\" data-line=\"279\">\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"279\">Add the <strong>Microsoft MMRC Profile<\/strong> to the enabled profiles.<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"280\">Keep only the Right Hand Controller active in the XR Origin.<\/li>\n \t<li class=\"code-line\" dir=\"auto\" data-line=\"281\">The left hand can still function as a collider and trigger for poke interactions, but not as a ray interactor.<\/li>\n<\/ul>\n\n<hr class=\"code-line\" dir=\"auto\" data-line=\"283\" \/>\n\n<h3 id=\"8-unitask--operazioni-asincrone\" class=\"code-line\" dir=\"auto\" data-line=\"285\">8. UniTask \u2014 Asynchronous Operations<\/h3>\n<p class=\"code-line\" dir=\"auto\" data-line=\"287\"><strong>UniTask 2.5.10<\/strong> is included as a dependency to handle high-performance asynchronous operations (asset loading, waiting for subsystems, etc.) without GC allocations.<\/p>\n\n<h4 id=\"installazione-2\" class=\"code-line\" dir=\"auto\" data-line=\"289\">Installation<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"291\">Installed via <strong>Window > Package Manager > Unity Registry > UniTask > Install<\/strong> (version 2.5.10), or as a git URL.<\/p>\n\n<h4 id=\"utilizzo-base\" class=\"code-line\" dir=\"auto\" data-line=\"293\">Basic Usage<\/h4>\n<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\">\/\/ Wait for the XR Hands subsystem to be ready<\/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 ready.\"<\/span>);\n    }\n}\n<\/code><\/pre>\n<p class=\"code-line\" dir=\"auto\" data-line=\"311\">UniTask is used internally by the LeonardoXR SDK for asynchronous operations. It is recommended to use it in your application code as well to maintain consistency with the SDK lifecycle.<\/p>\n\n\n<hr class=\"code-line\" dir=\"auto\" data-line=\"313\" \/>\n\n<h3 id=\"riferimenti-ai-profili-di-interazione-openxr\" class=\"code-line\" dir=\"auto\" data-line=\"315\">OpenXR Interaction Profile References<\/h3>\n<table class=\"code-line\" dir=\"auto\" data-line=\"317\">\n<thead class=\"code-line\" dir=\"auto\" data-line=\"317\">\n<tr class=\"code-line\" dir=\"auto\" data-line=\"317\">\n<th>Profile<\/th>\n<th>Usage<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"code-line\" dir=\"auto\" data-line=\"319\">\n<tr class=\"code-line\" dir=\"auto\" data-line=\"319\">\n<td><strong>Microsoft Mixed Reality Motion Controller Profile<\/strong><\/td>\n<td>Companion Controller (smartphone as controller)<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"320\">\n<td><strong>Hand Interaction Profile<\/strong><\/td>\n<td>Hand tracking with poke\/pinch interactors<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"322\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"322\"><strong>Note:<\/strong> The two profiles cannot coexist with raycasting enabled on both. Select one of the options described in the &#8220;Combining Controllers and Hand Tracking&#8221; section.<\/p>\n<\/blockquote>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Interaction Package Guides \u2014 LeonardoXR SDK Interaction Package Guides \u2014 LeonardoXR SDK Interaction Package Guides \u2014 LeonardoXR SDK Version: 1.0.2 Target Device: Youbiquo Leonardo XR Base SDK: Snapdragon Spaces 1.0.4 This guide describes how to configure the interaction layer for LeonardoXR applications using standard Unity packages: XR Interaction Toolkit (XRIT) 3.3.0 \u2014 high-level interaction system for controllers, ray interactors, and direct interactors. XR Hands 1.7.2 \u2014 access to hand joint data and gesture recognition. Dependencies and Versions Package Version Source 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 Note: All dependencies must be installed following the procedure described in Getting Started before proceeding with the interaction configuration. 1. XR Interaction Toolkit Configuration Installation The package is installed via Window &gt; Package Manager &gt; Unity Registry &gt; XR Interaction Toolkit &gt; Install (version 3.3.0). If the prompt &#8220;Enable the new input system?&#8221; appears during installation, click Yes. If the prompt &#8220;XR Interaction Layer Mask Update Required&#8221; appears, click I Made a Backup, Go Ahead! (for new projects) or No Thanks if a previous version of XRIT was already present. Import Starter Assets Open Window &gt; Package Manager, select In Project, and then select the XR Interaction Toolkit package. In the Samples section, click Import on Starter Assets. Also click Import on Hand Interaction Demo (required for hand tracking samples). The Starter Assets include: Pre-configured Input Action Asset for XR controllers and hands. Reference Prefab for XR Origin with Ray Interactor and Direct Interactor. Basic materials and shaders for interaction visual feedback. Input Actions Configuration After import, an XRI Default Input Actions asset is added to Assets\/Samples\/XR Interaction Toolkit\/[version]\/Starter Assets\/. This asset is already configured for standard controller profiles (including the Companion Controller via the Microsoft MMRC Profile) and for hands. To assign the asset to the system: Go to Edit > Project Settings > XR Plug-in Management > Input System. Ensure that Active Input Handling is set to Both or Input System Package (New). 2. Scene Configuration \u2014 XR Origin Basic Scene Structure The minimum hierarchy for an interactive scene on LeonardoXR is: 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 (Left) \u2502 \u2514\u2500\u2500 XR Direct Interactor (Left) \u2514\u2500\u2500 RightHand Controller \u251c\u2500\u2500 XR Ray Interactor (Right) \u2514\u2500\u2500 XR Direct Interactor (Right) Create the base structure by selecting GameObject > XR > XR Origin (Action-based) from the main menu. Warning: Disable the AR Camera Background component \u2014 it is not supported on LeonardoXR and will be automatically disabled at runtime. Also disable AR Camera Manager if you are not retrieving RGB frames from the camera. Input Action Manager Add the Input Action Manager component to the XR Origin (or to a persistent GameObject). In the Action Assets field, assign: XRI Default Input Actions (from the imported Starter Assets). Snapdragon Spaces Input Actions (from Samples\/Snapdragon Spaces\/[version]\/Core Samples\/Shared Assets\/Input Actions). 3. Controller Configuration (Companion Controller) Leonardo XR&#8217;s Companion Controller uses the Microsoft Mixed Reality Motion Controller Profile to send pointing and button inputs from the companion app on your smartphone. Adding the Controller Profile Go to Edit &gt; Project Settings &gt; XR Plug-in Management &gt; OpenXR &gt; Enabled Interaction Profiles. Click + and add Microsoft Mixed Reality Motion Controller Profile. Note: Do not add the Hand Interaction Profile alongside the Companion Controller \u2014 it takes precedence and will interfere with controller pointing. Device Pointer Prefab Locate the Device Pointer prefab in Samples\/Snapdragon Spaces\/[version]\/Core Samples\/Shared Assets\/Prefabs\/Interaction. Add it as a child of the Controller (left or right) within the XR Origin. In the XR Interactor Line Visual component, set Line Width to 0.005. 4. XR Hands Configuration Installation Installed via Window &gt; Package Manager &gt; Unity Registry &gt; XR Hands &gt; Install (version 1.7.2). Importing the Hand Samples Open Window &gt; Package Manager &gt; In Project &gt; XR Hands &gt; Samples. Import: Gestures \u2014 gesture recognition system. Hand Visualizer \u2014 hand mesh visualization. Enable Hand Tracking Subsystem Navigate to Edit &gt; Project Settings &gt; XR Plug-in Management &gt; OpenXR (Android tab). Under All Features, enable Hand Tracking Subsystem. Also enable Hand Tracking in the Snapdragon Spaces feature group. Warning: The Hand Tracking Subsystem must be enabled in All Features \u2014 not only in the Snapdragon Spaces section \u2014 to function correctly on LeonardoXR. Enable Hand Interaction Profile Navigate to Edit &gt; Project Settings &gt; XR Plug-in Management &gt; OpenXR &gt; Enabled Interaction Profiles. Click + and add Hand Interaction Profile. Note: Do not add Hand Interaction Profile if you are using the Companion Controller \u2014 the two profiles conflict. See the &#8220;Combining Controllers and Hand Tracking&#8221; section below. XR Hand Subsystem and XR Origin The XR Hands package integrates with the XR Interaction Toolkit via the XR Hand Tracking Events and XR Hand Skeleton Driver components. These components are automatically configured on the XR Origin Controller when using the Starter Assets prefabs from the Hand Interaction Demo. Recommended hierarchy with 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 (optional) \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 (optional) \u2514\u2500\u2500 XR Ray Interactor (for distance pointing) Access to Joint Data 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 = left index tip position } } } Gesture Recognition Use the XR Hands Gestures system to detect static or dynamic hand poses: using UnityEngine.XR.Hands; \/\/ On the scene: add the XRHandGestures component to the XR Origin \/\/ Then subscribe to the events: [SerializeField] XRHandGestures gestures; void OnEnable() { gestures.gesturePerformed += OnGesturePerformed; } void OnGesturePerformed(XRHandGesture gesture, Handedness handedness) { Debug.Log($&#8221;Gesture: {gesture.gestureName} performed with {handedness}&#8221;); } 5. Configuring Interactables Adding an Interactable to an Object To<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":614,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-711","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/pages\/711","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=711"}],"version-history":[{"count":4,"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/pages\/711\/revisions"}],"predecessor-version":[{"id":715,"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/pages\/711\/revisions\/715"}],"up":[{"embeddable":true,"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/pages\/614"}],"wp:attachment":[{"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/media?parent=711"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}