{"id":696,"date":"2026-10-09T13:22:40","date_gmt":"2026-10-09T11:22:40","guid":{"rendered":"https:\/\/www.youbiquo.eu\/leonardoxr\/?page_id=696"},"modified":"2026-10-09T13:23:02","modified_gmt":"2026-10-09T11:23:02","slug":"vr-mr-leonardoxr-sdk","status":"publish","type":"page","link":"https:\/\/www.youbiquo.eu\/leonardoxr\/en\/leonardo-xr-manuali-duso\/vr-mr-leonardoxr-sdk\/","title":{"rendered":"VR\/MR \u2014 LeonardoXR SDK"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"696\" class=\"elementor elementor-696\" 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\">VR\/MR \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\tVR\/MR \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=\"vrmr--leonardoxr-sdk\" class=\"code-line code-active-line\" dir=\"auto\" data-line=\"0\">VR\/MR \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<br \/><strong>Target Device:<\/strong> Youbiquo Leonardo XR<br \/><strong>Base SDK:<\/strong> Snapdragon Spaces 1.0.4<\/p>\n<\/blockquote>\n<hr class=\"code-line\" dir=\"auto\" data-line=\"6\" \/>\n<h3 id=\"configurazione-manuale-del-progetto-unity\" class=\"code-line\" dir=\"auto\" data-line=\"8\">Manual Unity Project Configuration<\/h3>\n<p class=\"code-line\" dir=\"auto\" data-line=\"10\">It is recommended to use the <strong>Configuration Tool<\/strong> for the initial project setup (see <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>). This guide describes the equivalent manual steps for users who prefer direct control over the settings.<\/p>\n<h4 id=\"modifica-le-project-settings\" class=\"code-line\" dir=\"auto\" data-line=\"12\">Edit Project Settings<\/h4>\n<ol class=\"code-line\" dir=\"auto\" data-line=\"14\">\n<li class=\"code-line\" dir=\"auto\" data-line=\"14\">Go to <strong>Edit > Project Settings > XR Plug-in Management<\/strong> and open the <strong>Android<\/strong> tab.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"15\">Enable the <strong>OpenXR<\/strong> plug-in and the <strong>Snapdragon Spaces feature group<\/strong>.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"16\">Click the red exclamation mark next to <strong>OpenXR<\/strong> to open the <strong>OpenXR Project Validation<\/strong> window.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"17\">Click <strong>Fix<\/strong> next to each item.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"18\">Apply the &#8220;Enable both Input Systems&#8221; setting <strong>last<\/strong>, as it requires restarting the editor.<\/li>\n<\/ol><blockquote class=\"code-line\" dir=\"auto\" data-line=\"20\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"20\"><strong>Play In Editor:<\/strong> For additional settings regarding the editor workflow, see the dedicated section 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>.<\/p>\n<\/blockquote>\n<h4 id=\"abilita-le-spaces-features\" class=\"code-line\" dir=\"auto\" data-line=\"22\">Enable Spaces Features<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"24\">Enable the features that must be active at runtime in <strong>OpenXR Settings<\/strong>. Each feature corresponds to an AR Foundation Manager and an XR Subsystem:<\/p>\n<table class=\"code-line\" dir=\"auto\" data-line=\"26\">\n<thead class=\"code-line\" dir=\"auto\" data-line=\"26\">\n<tr class=\"code-line\" dir=\"auto\" data-line=\"26\">\n<th>Feature<\/th>\n<th>AR Foundation Manager<\/th>\n<th>XR Subsystem<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"code-line\" dir=\"auto\" data-line=\"28\">\n<tr class=\"code-line\" dir=\"auto\" data-line=\"28\">\n<td>Base Runtime<\/td>\n<td>AR Session<\/td>\n<td>XRSessionSubsystem<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"29\">\n<td>Camera Frame Access<\/td>\n<td>AR Camera Manager<\/td>\n<td>XRCameraSubsystem<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"30\">\n<td>Hit Testing<\/td>\n<td>AR Raycast Manager<\/td>\n<td>XRRaycastSubsystem<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"31\">\n<td>Image Tracking<\/td>\n<td>AR Tracked Image Manager<\/td>\n<td>XRImageTrackingSubsystem<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"32\">\n<td>Plane Detection<\/td>\n<td>AR Plane Manager<\/td>\n<td>XRPlaneSubsystem<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"33\">\n<td>Spatial Anchors<\/td>\n<td>AR Anchor Manager<\/td>\n<td>XRAnchorSubsystem<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"34\">\n<td>Spatial Meshing<\/td>\n<td>AR Mesh Manager<\/td>\n<td>XRMeshSubsystem<\/td>\n<\/tr>\n<\/tbody>\n<\/table><h4 id=\"add-feature-usage-data-to-the-android-manifest\" class=\"code-line\" dir=\"auto\" data-line=\"36\">Add Feature Usage Data to the Android Manifest<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"38\">Navigate to <strong>Edit > Project Settings > Snapdragon Spaces Launcher Settings<\/strong> to declare the features required or supported by your application, including: <strong>Hand Tracking<\/strong>, <strong>Eye Tracking<\/strong>, <strong>Passthrough<\/strong>, <strong>Controllers<\/strong>, and <strong>Room Scale<\/strong>.<\/p>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"40\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"40\"><strong>Warning:<\/strong> By default, all <code>uses-feature<\/code> values are set to <code>true<\/code>. Set to <code>false<\/code> any features not used by the application to avoid incorrect feature declarations in the manifest.<\/p>\n<\/blockquote>\n<h4 id=\"import-samples\" class=\"code-line\" dir=\"auto\" data-line=\"42\">Import Samples<\/h4>\n<ol class=\"code-line\" dir=\"auto\" data-line=\"44\">\n<li class=\"code-line\" dir=\"auto\" data-line=\"44\">Open <strong>Window > Package Manager<\/strong> and select the Snapdragon Spaces package.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"45\">Click <strong>Import<\/strong> on <strong>Core Samples<\/strong>.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"46\">Add all scenes to the build via <strong>Window > XR > Snapdragon Spaces > Add Scenes to Build Settings<\/strong>.<\/li>\n<\/ol>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"48\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"48\"><strong>Important:<\/strong> The Camera Frame Access sample requires unsafe code mode to be enabled in <strong>Player Settings > Android > Other Settings > Script Compilation > Allow &#8216;unsafe&#8217; Code<\/strong>.<\/p>\n<\/blockquote>\n<hr class=\"code-line\" dir=\"auto\" data-line=\"50\" \/>\n<h3 id=\"passthrough-setup\" class=\"code-line\" dir=\"auto\" data-line=\"52\">Passthrough Setup<\/h3>\n<p class=\"code-line\" dir=\"auto\" data-line=\"54\"><strong>Passthrough<\/strong> allows you to view the physical environment as an image overlay on VR headsets. It is available on LeonardoXR for compatible devices.<\/p>\n<ul class=\"code-line\" dir=\"auto\" data-line=\"56\">\n<li class=\"code-line\" dir=\"auto\" data-line=\"56\">It is activated via the <strong>Extend Content<\/strong> panel in the in-app UI (visible only on devices with Passthrough support).<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"57\">It can also be toggled using the <strong>X<\/strong> and <strong>A<\/strong> buttons on the controller.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"58\">The enabling function is <code>OnPassthroughToggle()<\/code> in <code>MainMenuSampleController<\/code>, which sets <code>PassthroughToggle<\/code> on <code>BaseRuntimeFeature<\/code>.<\/li>\n<\/ul>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"60\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"60\"><strong>WARNING:<\/strong> The session camera must have the <strong>Alpha<\/strong> channel of the <strong>Background<\/strong> set to <strong>0<\/strong> to use Passthrough correctly. An automatic warning will be logged if the settings are incorrect.<\/p>\n<\/blockquote><p class=\"code-line\" dir=\"auto\" data-line=\"62\">The delegate <code>OnSpacesAppSpaceChange<\/code> in <code>BaseRuntimeFeature<\/code> notifies when the device performs a recenter (triggered by holding down the menu button for 2 seconds on the VRX).<\/p>\n<hr class=\"code-line\" dir=\"auto\" data-line=\"64\" \/>\n<h2 id=\"scene-setup\" class=\"code-line\" dir=\"auto\" data-line=\"66\">Scene Setup<\/h2>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"68\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"68\"><strong>Note:<\/strong> This guide assumes prior knowledge of AR Foundation and OpenXR. Refer to the official AR Foundation and OpenXR documentation for basic concepts.<\/p>\n<\/blockquote>\n<h4 id=\"gerarchia-minima-della-scena\" class=\"code-line\" dir=\"auto\" data-line=\"70\">Minimum Scene Hierarchy<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"72\">To enable positional head tracking on LeonardoXR, the following objects are required:<\/p>\n<pre><code class=\"code-line\" dir=\"auto\" data-line=\"74\">AR Session\nXR Origin\n  \u2514\u2500\u2500 Camera Offset\n        \u2514\u2500\u2500 Main Camera (tagged as \"MainCamera\")\n<\/code><\/pre>\n<p class=\"code-line\" dir=\"auto\" data-line=\"81\">Create them by right-clicking in the Hierarchy window and selecting <strong>XR > AR Session<\/strong> or <strong>XR > XR Origin<\/strong>.<\/p>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"83\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"83\"><strong>Warning:<\/strong> Disable the <strong>AR Camera Manager<\/strong> component if you are not retrieving RGB frames from the camera, to avoid lifecycle issues.<br \/><strong>Important:<\/strong> Disable the <strong>AR Camera Background<\/strong> component \u2014 it is not supported and will be automatically disabled at runtime.<\/p>\n<\/blockquote><hr class=\"code-line\" dir=\"auto\" data-line=\"86\" \/>\n<h3 id=\"application-lifecycle--compatibilit%C3%A0-con-runtime-precedenti\" class=\"code-line\" dir=\"auto\" data-line=\"88\">Application Lifecycle \u2014 Compatibility with Older Runtimes<\/h3>\n<p class=\"code-line\" dir=\"auto\" data-line=\"90\">The <strong>Older Runtime Compatibility<\/strong> library prevents the application from launching when the SDK is not compatible with the OpenXR runtime installed on the device.<\/p>\n<p class=\"code-line\" dir=\"auto\" data-line=\"92\">Upon launch, two entries are added to the Android manifest:<\/p>\n<ul class=\"code-line\" dir=\"auto\" data-line=\"94\">\n<li class=\"code-line\" dir=\"auto\" data-line=\"94\"><strong><code>targetAPI<\/code><\/strong> \u2014 corresponds to the version of the OpenXR runtime included in the SDK.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"95\"><strong><code>minAPI<\/code><\/strong> \u2014 the minimum runtime version supported by each feature.<\/li>\n<\/ul>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"97\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"97\"><strong>Version:<\/strong> Starting with Snapdragon Spaces 1.0.4, the <code>minAPI<\/code> for all features is <code>0.22.0<\/code>.<\/p>\n<\/blockquote>\n<h4 id=\"risultati-di-compatibilit%C3%A0\" class=\"code-line\" dir=\"auto\" data-line=\"99\">Compatibility Results<\/h4>\n<table class=\"code-line\" dir=\"auto\" data-line=\"101\">\n<thead class=\"code-line\" dir=\"auto\" data-line=\"101\">\n<tr class=\"code-line\" dir=\"auto\" data-line=\"101\">\n<th>Result<\/th>\n<th>Description<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"code-line\" dir=\"auto\" data-line=\"103\">\n<tr class=\"code-line\" dir=\"auto\" data-line=\"103\">\n<td><strong>Success<\/strong><\/td>\n<td>No incompatibility detected.<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"104\">\n<td><strong>Error Runtime Failure<\/strong><\/td>\n<td>OpenXR runtime error.<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"105\">\n<td><strong>Error Validation Failure<\/strong><\/td>\n<td>Older Runtime Compatibility validation error.<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"106\">\n<td><strong>Error Uninitialized System<\/strong><\/td>\n<td>Error due to missing initialization.<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"107\">\n<td><strong>Error Runtime Too Old For Application<\/strong><\/td>\n<td>The installed runtime is too old for the SDK.<\/td>\n<\/tr>\n<tr class=\"code-line\" dir=\"auto\" data-line=\"108\">\n<td><strong>Error Application Too Old For Runtime<\/strong><\/td>\n<td>The SDK is too old for the installed runtime.<\/td>\n<\/tr>\n<\/tbody>\n<\/table><p class=\"code-line\" dir=\"auto\" data-line=\"110\">When an incompatibility is detected, a popup appears with an error message and a <strong>Quit<\/strong> button. For apps using Dual Render Fusion, the user is notified, but the application can still launch.<\/p>\n<hr class=\"code-line\" dir=\"auto\" data-line=\"112\" \/>\n<h3 id=\"known-issues--vrmr-su-leonardoxr\" class=\"code-line\" dir=\"auto\" data-line=\"114\">Known Issues \u2014 VR\/MR on LeonardoXR<\/h3>\n<blockquote class=\"code-line\" dir=\"auto\" data-line=\"116\">\n<p class=\"code-line\" dir=\"auto\" data-line=\"116\">For issues not listed here, refer to the general known issues of the Snapdragon Spaces platform.<\/p>\n<\/blockquote>\n<h4 id=\"gradle-build-issue\" class=\"code-line\" dir=\"auto\" data-line=\"118\">Gradle Build Issue<\/h4>\n<p class=\"code-line\" dir=\"auto\" data-line=\"120\">Adding a custom controller archive may cause Gradle caching errors. Deleting the <code>Temp > gradleOut<\/code> folder generally resolves the issue.<\/p>\n<p>AR Foundation Issues<\/p>\n<ul class=\"code-line\" dir=\"auto\" data-line=\"124\">\n<li class=\"code-line\" dir=\"auto\" data-line=\"124\"><strong>Incorrect Trackable ID returned by AR Raycast Hit<\/strong> \u2014 <code>ARRaycastHit.trackableId<\/code> always returns <code>0-0<\/code>.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"125\"><strong>Plane Detection Frozen<\/strong> \u2014 Mesh triangulation enters an infinite loop in AR Foundation 6.2.1.<\/li>\n<\/ul>\n<h4 id=\"xrit-issues\" class=\"code-line\" dir=\"auto\" data-line=\"127\">XRIT Issues<\/h4>\n<ul class=\"code-line\" dir=\"auto\" data-line=\"129\">\n<li class=\"code-line\" dir=\"auto\" data-line=\"129\"><strong>AR Raycast Manager Automatically Added<\/strong> \u2014 XRIT 3.x automatically adds an <code>AR Raycast Manager<\/code> when an <code>XR Raycast Interactor<\/code> is present, enabling Spatial Meshing regardless of the <code>EnableARRaycasting<\/code> flag. This may reduce performance.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"130\"><strong>Unsupported AR Mesh Manager Properties<\/strong> \u2014 Using unsupported properties generates runtime warnings.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"131\"><strong>AR Camera Manager \/ AR Camera Background Issues<\/strong> \u2014 Switching between scenes with the <code>AR Camera Manager<\/code> enabled may cause freezing. Disable <code>AR Camera Background<\/code> to avoid rendering issues.<\/li>\n<\/ul>\n<h4 id=\"play-in-editor-known-issues\" class=\"code-line\" dir=\"auto\" data-line=\"133\">Play In Editor Known Issues<\/h4>\n<ul class=\"code-line\" dir=\"auto\" data-line=\"135\">\n<li class=\"code-line\" dir=\"auto\" data-line=\"135\"><strong>Memory Leak in Camera Access Simulation<\/strong> \u2014 Resolved in AR Foundation 6.0+.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"136\"><strong>AR Mesh Manager Crash Without Normals<\/strong> \u2014 Update AR Foundation or enable normals.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"137\"><strong>QR Code Tracking Not Loaded in Simulation<\/strong> \u2014 No simulation subsystem exists; bypass checks in editor builds.<\/li>\n<li class=\"code-line\" dir=\"auto\" data-line=\"138\"><strong>ScriptableSingleton Warning<\/strong> \u2014 Resolved in AR Foundation 5.1.2+.<\/li>\n<\/ul>\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>VR\/MR \u2014 LeonardoXR SDK VR\/MR \u2014 LeonardoXR SDK VR\/MR \u2014 LeonardoXR SDK Version: 1.0.2Target Device: Youbiquo Leonardo XRBase SDK: Snapdragon Spaces 1.0.4 Manual Unity Project Configuration It is recommended to use the Configuration Tool for the initial project setup (see Getting Started). This guide describes the equivalent manual steps for users who prefer direct control over the settings. Edit Project Settings Go to Edit > Project Settings > XR Plug-in Management and open the Android tab. Enable the OpenXR plug-in and the Snapdragon Spaces feature group. Click the red exclamation mark next to OpenXR to open the OpenXR Project Validation window. Click Fix next to each item. Apply the &#8220;Enable both Input Systems&#8221; setting last, as it requires restarting the editor. Play In Editor: For additional settings regarding the editor workflow, see the dedicated section in Getting Started. Enable Spaces Features Enable the features that must be active at runtime in OpenXR Settings. Each feature corresponds to an AR Foundation Manager and an XR Subsystem: Feature AR Foundation Manager XR Subsystem Base Runtime AR Session XRSessionSubsystem Camera Frame Access AR Camera Manager XRCameraSubsystem Hit Testing AR Raycast Manager XRRaycastSubsystem Image Tracking AR Tracked Image Manager XRImageTrackingSubsystem Plane Detection AR Plane Manager XRPlaneSubsystem Spatial Anchors AR Anchor Manager XRAnchorSubsystem Spatial Meshing AR Mesh Manager XRMeshSubsystem Add Feature Usage Data to the Android Manifest Navigate to Edit > Project Settings > Snapdragon Spaces Launcher Settings to declare the features required or supported by your application, including: Hand Tracking, Eye Tracking, Passthrough, Controllers, and Room Scale. Warning: By default, all uses-feature values are set to true. Set to false any features not used by the application to avoid incorrect feature declarations in the manifest. Import Samples Open Window > Package Manager and select the Snapdragon Spaces package. Click Import on Core Samples. Add all scenes to the build via Window > XR > Snapdragon Spaces > Add Scenes to Build Settings. Important: The Camera Frame Access sample requires unsafe code mode to be enabled in Player Settings > Android > Other Settings > Script Compilation > Allow &#8216;unsafe&#8217; Code. Passthrough Setup Passthrough allows you to view the physical environment as an image overlay on VR headsets. It is available on LeonardoXR for compatible devices. It is activated via the Extend Content panel in the in-app UI (visible only on devices with Passthrough support). It can also be toggled using the X and A buttons on the controller. The enabling function is OnPassthroughToggle() in MainMenuSampleController, which sets PassthroughToggle on BaseRuntimeFeature. WARNING: The session camera must have the Alpha channel of the Background set to 0 to use Passthrough correctly. An automatic warning will be logged if the settings are incorrect. The delegate OnSpacesAppSpaceChange in BaseRuntimeFeature notifies when the device performs a recenter (triggered by holding down the menu button for 2 seconds on the VRX). Scene Setup Note: This guide assumes prior knowledge of AR Foundation and OpenXR. Refer to the official AR Foundation and OpenXR documentation for basic concepts. Minimum Scene Hierarchy To enable positional head tracking on LeonardoXR, the following objects are required: AR Session XR Origin \u2514\u2500\u2500 Camera Offset \u2514\u2500\u2500 Main Camera (tagged as &#8220;MainCamera&#8221;) Create them by right-clicking in the Hierarchy window and selecting XR > AR Session or XR > XR Origin. Warning: Disable the AR Camera Manager component if you are not retrieving RGB frames from the camera, to avoid lifecycle issues.Important: Disable the AR Camera Background component \u2014 it is not supported and will be automatically disabled at runtime. Application Lifecycle \u2014 Compatibility with Older Runtimes The Older Runtime Compatibility library prevents the application from launching when the SDK is not compatible with the OpenXR runtime installed on the device. Upon launch, two entries are added to the Android manifest: targetAPI \u2014 corresponds to the version of the OpenXR runtime included in the SDK. minAPI \u2014 the minimum runtime version supported by each feature. Version: Starting with Snapdragon Spaces 1.0.4, the minAPI for all features is 0.22.0. Compatibility Results Result Description Success No incompatibility detected. Error Runtime Failure OpenXR runtime error. Error Validation Failure Older Runtime Compatibility validation error. Error Uninitialized System Error due to missing initialization. Error Runtime Too Old For Application The installed runtime is too old for the SDK. Error Application Too Old For Runtime The SDK is too old for the installed runtime. When an incompatibility is detected, a popup appears with an error message and a Quit button. For apps using Dual Render Fusion, the user is notified, but the application can still launch. Known Issues \u2014 VR\/MR on LeonardoXR For issues not listed here, refer to the general known issues of the Snapdragon Spaces platform. Gradle Build Issue Adding a custom controller archive may cause Gradle caching errors. Deleting the Temp > gradleOut folder generally resolves the issue. AR Foundation Issues Incorrect Trackable ID returned by AR Raycast Hit \u2014 ARRaycastHit.trackableId always returns 0-0. Plane Detection Frozen \u2014 Mesh triangulation enters an infinite loop in AR Foundation 6.2.1. XRIT Issues AR Raycast Manager Automatically Added \u2014 XRIT 3.x automatically adds an AR Raycast Manager when an XR Raycast Interactor is present, enabling Spatial Meshing regardless of the EnableARRaycasting flag. This may reduce performance. Unsupported AR Mesh Manager Properties \u2014 Using unsupported properties generates runtime warnings. AR Camera Manager \/ AR Camera Background Issues \u2014 Switching between scenes with the AR Camera Manager enabled may cause freezing. Disable AR Camera Background to avoid rendering issues. Play In Editor Known Issues Memory Leak in Camera Access Simulation \u2014 Resolved in AR Foundation 6.0+. AR Mesh Manager Crash Without Normals \u2014 Update AR Foundation or enable normals. QR Code Tracking Not Loaded in Simulation \u2014 No simulation subsystem exists; bypass checks in editor builds. ScriptableSingleton Warning \u2014 Resolved in AR Foundation 5.1.2+.<\/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-696","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/pages\/696","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=696"}],"version-history":[{"count":4,"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/pages\/696\/revisions"}],"predecessor-version":[{"id":700,"href":"https:\/\/www.youbiquo.eu\/leonardoxr\/wp-json\/wp\/v2\/pages\/696\/revisions\/700"}],"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=696"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}