scrollInfo is always zero when holding the trigger / too large thumbstick deadzone
My code has an input listener, and I am interested in thumbstick scrollInfo events. They work fine, but if I hold the trigger, the scrollInfo values are always 0, even though the internal PanelInputListener appears to receive the correct values, as it properly scrolls the UI when the trigger is held. I checked values of InputListener.onPointerEvent (addInputListener), and both isdkSystem.registerInteractableObserver and isdkSystem.registerObserver (I also tried creating a panel with PanelInputOptions(0)). 1) Is there a solution or workaround? Is it an intended limitation, or do you have plans to improve this? ...and extra related questions: 2) Is the thumbstick/scrollInfo deadzone ~0.2 intentional? (even though it is set to 0% in the OS) 3) Do you plan to expose scrollInfo without requiring pointing at a panel?27Views0likes0CommentsBest Method for LBE World Alignment on Quest 3: Shared Spatial Anchors vs QR Calibration?
Hi everyone, We are building a large LBE (Location-Based Entertainment) multiplayer experience on Quest 3 using Unity and Photon Fusion 2. Our play area is around 7.5 × 10 meters. We want to establish a stable, shared world origin across multiple headsets. I’m trying to understand the most reliable method for this and would appreciate clarification on the following: 1. Shared Spatial Anchors Are Shared Spatial Anchors considered the recommended solution for large LBE environments? Is there a clear, up-to-date development workflow or sample project for implementing SSA on Quest 3? 2. QR Codes / Visual Markers Is it technically viable to use QR codes (or similar visual markers) for 100% reliable positional calibration in a 7–10 m play space? Do these marker-based methods maintain accuracy over time for multiplayer alignment? 3. Third-Party Solutions Are there any third-party services or SDKs commonly used in VR arcades or arena-scale setups that provide spatial alignment for Quest devices? I’m looking for the most stable and commonly used approach for syncing the world space across multiple headsets in an LBE scenario. Thanks in advance!19Views0likes1CommentExperiencing soLoader issues with Meta Spatial SDK v0.10.0 update
Hello, I am trying to update my apps from Meta Spatial SDK from v0.9.2 to v0.10.0 and when deploying and running it on the Quest 3 headset, the application will crash and exit as soon as VrActivity runs onCreate. I am observing the following error on logcat: Abort message: 'JNI DETECTED ERROR IN APPLICATION: JNI NewGlobalRef called with pending exception java.lang.ClassNotFoundException: Didn't find class "com.facebook.soloader.MergedSoMapping$Invoke_JNI_OnLoad" on path: DexPathList[[zip file "/data/app/REDACTED_MY_APP/base.apk"],nativeLibraryDirectories=[/data/app/REDACTED_MY_APP/lib/arm64, /data/app/REDACTED_MY_APP/base.apk!/lib/arm64-v8a, /apex/com.meta.xr/priv-app/VrDriver/VrDriver.apk!/lib/arm64-v8a, /system/lib64, /system_ext/lib64]] The changes I did are minimal (version update on libs.versions.toml and XML component definitions and removing deprecated APIs). I tested also compiling several of the updated examples from the Meta-Spatial-SDK-Samples (such as MrukSample) and had the same behaviour: apps compile, deploy, open but crash as soon as entering in VR. Is anyone else having the same issue or is there anyone that was able to update successfully and run apps using the Meta Spatial SDK v0.10.0? Happy to provide further details if needed. Thanks in advance.Solved46Views0likes1CommentIssues with Gaussian Splatting integration in Meta Spatial SDK (v0.9.2) – Standalone Quest 3
Hi everyone, I am an architect and urban planner, developing VR/MR projects in my spare time. I’m currently working on a native Quest 3 application to view Gaussian Splats for highly detailed virtual project tours. My Goal: Render native Gaussian Splatting (3DGS) on Quest 3 (Standalone). Synchronize the splat position with the real world for a seamless transition from Mixed Reality (MR) to Virtual Reality (VR) with a skybox. Targeting a minimum of 150k splats with stable performance. Previous Attempts: I initially used Unity with the Aras/Ninja implementations. While it works perfectly via Oculus Link (PCVR), it’s not viable for my needs because: PC Builds don't support the specific MR features I need for this project. The Android build (standalone) performance is extremely poor, even with optimized settings and a small 50k splat PLY file (unusable frame rates). Current Issue with Meta Spatial SDK: I’ve switched to the Meta Spatial SDK (Packages v0.9.2) to leverage the new native splat support mentioned here: Spatial SDK Splats Documentation. Despite following the documentation step-by-step: The splats do not appear in the scene. I am getting several reference errors (MissingReference/NullReference) that I can't seem to resolve. My Question: Has anyone successfully created a native Quest 3 APK using the Spatial SDK to run Gaussian Splats (~150k splats)? If so, could you share the correct workflow or point out common pitfalls with this specific SDK version? Any help or documentation beyond the official guide would be greatly appreciated!537Views2likes12Comments[Spatial SDK, Bug] 2D HitInfo from PointerEvents is wrong when interacting with 2D curved panels
Hi, I am using the Meta Spatial SDK to interact with Webviews and UIs within curved panels. While the cursor is correctly rendered by the IsdkDefaultCursorSystem, UI and web interactions do not intersect correctly leading to not being able to interact with curved panels since the HitInfo.textureCoordinate does not take in account the curvature of the panel clamping values erroneously. How to test and validate the issue: Use the AnimationsSample of the Meta SDK Samples, place UI buttons on corners of the main panel, switch to a curve panel and try to use the buttons. Expected behaviour: Independently of the curved panel curvature, reachable buttons should be usable when the cursor overlays it. Current behaviour: UI elements are non interactable when the curvature of the panels differs from flatness significantly. Source of the problem PointerEvent.HitInfo.textureCoordinate provided by the IsdkSystemNative.tick function are incorrect leading to misbehaviour for any subcomponent that rely on 2D coordinates such as the ones providing input to the Android View system and any UI element (i.e. IsdkSystem, IsdkInputListenerSystem). Note: SDK Systems such as the IsdkDefaultCursorSystem that rely directly on PointerEvent.HitInfo.position and PointerEvent.HitInfo.normal will present 2D information such as the Cursor correctly. Current workaround Override IsdkSystemNativeApi tick method and fix hitInfo.textureCoordinate computation when curved panel entities are detected78Views1like3CommentsSplat load animate depth
I've setup a project to test displaying Gaussian Splats in Meta Spatial SDK. It is working great, but I was wondering if there was a way to animate the clipping plane of the splat to have a reveal effect as it is loaded rather than just suddenly appear?27Views0likes1CommentHow can i create Panels with Window Affordances (or equivalent functionality)
Meta's Horizon OS provides so called Window Affordances like the edge and resize handles. I have been so far unable to implement functionality inside an Meta Spatial SDK using android app. Marking a panel Grabbable in Meta Spatial Editor gives the ability to move it but doing so feels more difficult then with native windows. I have not found a way to make resizeable panels in a custom app yet. Even Meta's own applications like "Focus" aren't providing that functionality.32Views0likes0CommentsProblem with Quest 3 tracking mode
I have the following problem with spatial tracking on the Quest 3 headset. I noticed that during gameplay in the project I am working on, the headset seems to switch between two tracking modes. The project is about a climbing wall that rotates, and in VR we climb on it. Because the wall rotates and moves us downward, at the same time we move the virtual world (the player) upward. Here I noticed a problem: the wall moves at 2 cm/s, but the virtual world sometimes moves at 2 cm/s and sometimes at 20 cm/s. Depending on which tracking mode the headset switches to, the player (virtual world) is moved either correctly by 2 cm or incorrectly by 20 cm per second. I tried monitoring various headset parameters via logcat that could indicate the headset switching to a different tracking mode, but I couldn’t find anything. I should add that the headset operates during climbing in rather uncomfortable conditions (very close to the wall), so I take into account that these are not ideal operating conditions. However, I need to find out what exactly changes in the headset (at different moments) that causes the world offset to sometimes be 10× larger than it should be. If I were able to detect some variable that indicates switching to this second mode, I could correct the movement programmatically. Therefore, I would appreciate any suggestions as to what might be changing in the headset. I monitored the tracking origin to see if it switches between Floor and Eye, but everything looks fine there. Setting the boundary to Stationary or Roomscale also makes no difference. I will also add that for the purposes of this project I disable Boundaries, because we climb quite high (3 m) and the headset goes outside the play area. I would be very grateful for any suggestions on where I could look for or monitor variables that would allow me to determine the tracking mode the headset is using. The project is based on the Meta XR plugin and Hand Tracking.68Views0likes0CommentsStylized passthrough: How can i retexture walls?
Meta Horizons documentation on Scenes gives this image as an example of a Basic stylized passthrough. This looks to me like a screenshot of a stylized hall way. How can such an effect be accomplished in Kotlin without using Unity or Unreal? Can this effect also be achieved on Quest 2 or only on Quest 3(s)? The article mentions that Assisted scene capture (available on Quest 3(s) only) shouldn't be used to create such an effect.26Views0likes0Comments