<?xml version="1.0"?>
<oembed><version>1.0</version><provider_name>Geckode!</provider_name><provider_url>https://www.youbiquo.eu/geckode</provider_url><author_name>Aida Garfami</author_name><author_url>https://www.youbiquo.eu/geckode/author/aida-garfami/</author_url><title>LeonardoXR SDK Documentation - Geckode!</title><type>rich</type><width>600</width><height>338</height><html>&lt;blockquote class="wp-embedded-content" data-secret="z9rB1ahabw"&gt;&lt;a href="https://www.youbiquo.eu/geckode/en/leonardoxr-sdk-documentation/"&gt;LeonardoXR SDK Documentation&lt;/a&gt;&lt;/blockquote&gt;&lt;iframe sandbox="allow-scripts" security="restricted" src="https://www.youbiquo.eu/geckode/en/leonardoxr-sdk-documentation/embed/#?secret=z9rB1ahabw" width="600" height="338" title="&#x201C;LeonardoXR SDK Documentation&#x201D; &#x2014; Geckode!" data-secret="z9rB1ahabw" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" class="wp-embedded-content"&gt;&lt;/iframe&gt;&lt;script&gt;
/*! This file is auto-generated */
!function(d,l){"use strict";l.querySelector&amp;&amp;d.addEventListener&amp;&amp;"undefined"!=typeof URL&amp;&amp;(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&amp;&amp;!/[^a-zA-Z0-9]/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret="'+t.secret+'"]'),o=l.querySelectorAll('blockquote[data-secret="'+t.secret+'"]'),c=new RegExp("^https?:$","i"),i=0;i&lt;o.length;i++)o[i].style.display="none";for(i=0;i&lt;a.length;i++)s=a[i],e.source===s.contentWindow&amp;&amp;(s.removeAttribute("style"),"height"===t.message?(1e3&lt;(r=parseInt(t.value,10))?r=1e3:~~r&lt;200&amp;&amp;(r=200),s.height=r):"link"===t.message&amp;&amp;(r=new URL(s.getAttribute("src")),n=new URL(t.value),c.test(n.protocol))&amp;&amp;n.host===r.host&amp;&amp;l.activeElement===s&amp;&amp;(d.top.location.href=t.value))}},d.addEventListener("message",d.wp.receiveEmbedMessage,!1),l.addEventListener("DOMContentLoaded",function(){for(var e,t,s=l.querySelectorAll("iframe.wp-embedded-content"),r=0;r&lt;s.length;r++)(t=(e=s[r]).getAttribute("data-secret"))||(t=Math.random().toString(36).substring(2,12),e.src+="#?secret="+t,e.setAttribute("data-secret",t)),e.contentWindow.postMessage({message:"ready",secret:t},"*")},!1)))}(window,document);
//# sourceURL=https://www.youbiquo.eu/geckode/wp-includes/js/wp-embed.min.js
&lt;/script&gt;
</html><description>LeonardoXR SDK Documentation LeonardoXR SDK Documentation &#x2014; LeonardoXR SDK Youbiquo &#x2014; LeonardoXR SDK &#x2014; Developer Documentation &#xA0; &#xA0; SDK Version 1.0.2 Target Device Youbiquo Leonardo XR Spaces SDK Snapdragon Spaces 1.0.4 Unity Version 6000.0.58f2 Language English Document Index # 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 Getting Started Version 1.0.2 | Device: Youbiquo Leonardo XR | Base SDK: Snapdragon Spaces 1.0.4 Introduction This guide explains how to configure a Unity project for development on Leonardo XR, the Youbiquo AR headset based on Snapdragon Spaces. The goal is to familiarise developers with the SDK configuration for building applications on Leonardo. The next guide covers how to interact with controllers and hands. Leonardo XR runs Android 12 and follows a development workflow familiar to anyone who has previously built Android applications. Required Software Before starting, make sure the following software and packages are installed at the specified versions: 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 &#x2014; NOTE&#xA0;Unlike the base Snapdragon Spaces guide (which recommends v1.10.0 for Unity 2022), Unity 6 with LeonardoXR uses OpenXR 1.15.1. Do not modify this version manually &#x2014; the Package Manager handles it through the SDK dependencies. Create a New Project Open Unity Hub and click&#xA0;New Project. Select the&#xA0;Universal 3D&#xA0;template. Name the project (e.g.&#xA0;LeonardoXR_Test) and choose a destination folder. Click&#xA0;Create Project. After creation, Unity opens the project with a sample scene in the Hierarchy panel. Switch Platform to Android From the main menu select&#xA0;File &gt; Build Profiles. In the Build Profiles window select&#xA0;Android&#xA0;from the Platform list. Click&#xA0;Switch Platform&#xA0;and wait for the process to complete. Close the Build Profiles window. Install Snapdragon Spaces SDK IMPORTANT&#xA0;Snapdragon Spaces SDK&#xA0;must be installed before&#xA0;the LeonardoXR SDK. The LeonardoXR runtime depends on it and will not compile without it. Download Snapdragon Spaces SDK v1.0.4 from the Qualcomm developer portal (a developer account is required):&#xA0;https://spaces.qualcomm.com/developer/vr-mr-sdk/#downloads Open the Package Manager (Window &gt; Package Manager). Click&#xA0;+&#xA0;and select&#xA0;Add package from tarball&#x2026; Browse to the downloaded&#xA0;.tgz&#xA0;file and click&#xA0;Open. Installation will start automatically. During installation, two prompts may appear: &#x201C;Enable the new input system?&#x201D; &#x2192; click&#xA0;Yes. &#x201C;XR Interaction Layer Mask Update Required&#x201D; &#x2192; for a new project, click&#xA0;I Made a Backup, Go Ahead! NOTE&#xA0;The editor will restart after installation &#x2014; this is expected behaviour, not a crash. For version control, copy the&#xA0;.tgz&#xA0;into the project&#x2019;s&#xA0;Packages/&#xA0;folder before adding it; the manifest will then use a relative path, which is better for source control. Unity 6.3+ &#x2014; Known Spaces SDK issue:&#xA0;After installation you may see the following compile error: BaseRuntimeFeature.InterceptEnvironmentBlendMode.cs(15,10): error CS0592: Attribute 'SerializeField' is not valid on this declaration type. To fix it, double-click the error in the Console to open the file, then remove the&#xA0;[SerializeField]&#xA0;attribute on line 15. This is a bug in Snapdragon Spaces 1.0.4 that only surfaces on Unity 6.3 and above. Install LeonardoXR SDK Download LeonardoXR SDK v1.0.2 from the Youbiquo Developer area. Open the Package Manager (Window &gt; Package Manager). Click&#xA0;+&#xA0;and select&#xA0;Add package from tarball&#x2026; Browse to the LeonardoXR SDK&#xA0;.tgz&#xA0;file and click&#xA0;Open. The SDK will be installed together with its dependencies:&#xA0;OpenXR Plugin 1.15.1,&#xA0;AR Foundation 6.2.1,&#xA0;XR Interaction Toolkit 3.3.0, and&#xA0;XR Hands 1.7.2&#xA0;&#x2014; no manual installation of these packages is required. LeonardoXR SDK Manager After the LeonardoXR SDK is installed, a&#xA0;LeonardoXR SDK Manager&#xA0;window opens automatically. If it does not appear, open it from&#xA0;LeonardoXR &gt; SDK Manager&#xA0;in the menu bar. The window has two tabs: Setup tab&#xA0;&#x2014; displays the status of the two packages that cannot be resolved automatically: Package Status Action Snapdragon Spaces SDK 1.0.4 &#x2713; / &#x2717; Browse&#x2026;&#xA0;&#x2014; opens a file picker to select the&#xA0;.tgz&#xA0;and installs it via Package Manager UniTask 2.5.10 &#x2713; / &#x2717; Install&#xA0;&#x2014; installs UniTask directly from the official Cysharp Git repository Once both packages show &#x2713;, the setup is complete. Use the&#xA0;&#x21BA; Refresh&#xA0;button at any time to re-check the current state. About tab&#xA0;&#x2014; displays version information for the SDK, device, and Unity Editor. Configure XR Plugin Management and OpenXR Open Project Settings Go to&#xA0;Edit &gt; Project Settings&#xA0;and select&#xA0;XR Plug-in Management&#xA0;in the left sidebar. Enable OpenXR and Snapdragon Spaces Click the&#xA0;Android&#xA0;tab (top right of the window). Under&#xA0;Plug-in Providers, ensure both are checked:&#xA0;OpenXR&#xA0;and&#xA0;Snapdragon Spaces feature group. Configure OpenXR Features Click&#xA0;OpenXR&#xA0;in the left sidebar. In the Snapdragon Spaces feature list, enable only&#xA0;Base Runtime&#xA0;and disable all others. Advanced features (Hit Testing, Plane Detection, etc.) can be enabled later as needed. NOTE&#xA0;For Hand Tracking to work correctly on LeonardoXR, the&#xA0;Hand Tracking Subsystem&#xA0;option must be enabled in the&#xA0;All Features&#xA0;section of OpenXR. Add LeonardoXR Feature Group Return to&#xA0;XR Plug-in Management &gt; Android. In the Plug-in Providers list, also check&#xA0;LeonardoXR feature group. Run Project Validation In the Project Settings sidebar click&#xA0;Project Validation. The window shows a list of configuration errors to fix. Click&#xA0;Fix All&#xA0;to resolve them automatically. NOTE&#xA0;Some fixes may require an editor restart. Re-run validation after restarting to confirm all errors are resolved. Import Samples Before creating your own scenes it is useful to import the samples included in each package. For each package: open&#xA0;Window &gt; Package Manager, select&#xA0;In Project, select the package, expand the&#xA0;Samples&#xA0;section and click&#xA0;Import. Package Samples XR Hands Gestures, Hand Visualizer XR Interaction Toolkit Starter Assets, Hand Interaction Demo Snapdragon Spaces Core Samples LeonardoXR Core Samples, Documentation After importing all samples, add scenes to the build via&#xA0;Window &gt; XR &gt; Snapdragon Spaces &gt; Add Scenes to Build Settings. Configure URP Graphics and Quality Settings Open&#xA0;Edit &gt; Project Settings &gt; Graphics. Under&#xA0;Default Render Pipeline, click the circle and select&#xA0;Mobile_RPAsset. Go to&#xA0;Project Settings &gt; Quality. In the Levels section, ensure&#xA0;Mobile&#xA0;has a green checkbox in the Android column. If not, click the&#xA0;Default&#xA0;triangle under Android</description></oembed>
