Object placed above MRUK furniture "jumps" up/down when pushing right thumbstick
Context Unity + Meta XR Building Blocks. I'm building an AR app (Passthrough + MR Utility Kit). I show a world-space UI dialog above an MRUK table (Canvas in world space, RectTransform placed at the table center + slight lift to sit on the surface -> all via script). Symptom Whenever I push the right controller thumbstick downward, the dialog appears to "jump" ~0.5 m up, and pushing again makes it jump back down. This happened both on the device and in the Simulator. What it actually is It's not the dialog moving. Logging showed Camera.main.transform.position.y toggling between two values (1.047 <-> 1.547), while the dialog's world Y stayed constant.Solved57Views0likes1CommentVr passthrough captions for hearing impaired to let you read what people around you are saying
Enhancing Accessibility with Meta Quest 3's Passthrough Captions Imagine a world where Virtual Reality (VR) isn't just a medium for gaming and entertainment but a powerful tool for accessibility. The Meta Quest 3, with its advanced passthrough capabilities, has the potential to transform this vision into reality by incorporating real-time captions for the hearing impaired. How It Works: The Meta Quest 3's passthrough technology allows users to see the real world around them while still being immersed in the virtual environment. By integrating real-time speech-to-text technology, the headset could display captions for conversations happening in the user's vicinity. This feature would enable hearing-impaired users to understand and participate in conversations effortlessly while using the VR headset. Impact on Accessibility: According to the World Health Organization, around 10% of the global population, which translates to approximately 900 million people, have some degree of hearing impairment. For these individuals, daily interactions and communications can be challenging. By offering real-time captions, the Meta Quest 3 can make VR more inclusive, ensuring that hearing-impaired users can enjoy and benefit from VR experiences just as much as others. Boosting Sales and Market Reach: Meta, as a $1.27 trillion company, stands to gain significantly from such an inclusive feature. Even a modest increase in sales can have a substantial financial impact. For instance: If the global population is approximately 9 billion, about 900 million people are hearing impaired. Capturing just 1% of this market with the new feature could result in 9 million additional users. Given the average price of a VR headset, this could translate into billions in additional revenue. By integrating real-time captioning, the Meta Quest 3 not only enhances the user experience for a significant portion of the population but also opens doors to a vast, untapped market. This accessibility feature would position Meta as a leader in inclusive technology, likely resulting in increased sales, a broader customer base, and a stronger market presence. In summary, incorporating real-time captions in the Meta Quest 3's passthrough view is not just a step towards greater accessibility—it is a strategic move that can drive significant business growth and reinforce Meta's commitment to innovation and inclusivity.896Views2likes3CommentsQuest 3 passthrough black after developing with Unreal.
Hey, the normal passthrough function in the Quest 3 doesn't function anymore / is black after diving into Unreal development and setting everything up. The toggle in the menu is NOT greyed out. Passthrough works when playing First Encounters though. Anyone experienced the same thing? Thankful for any kind of help!8.9KViews0likes20CommentsUnable to find UE5 equivalent documentation on WebCamTexture
Hi all, I've found out that with MetaXR's Passthrough API, using Unity, you can access the WebCamTexture to display on, for example, a plane. I'm in need of this feature in my project made using Unreal 5 and the lastest MetaXR plugin yet I cannot find any information or documentation on how to do so. Going through the C++ files I fail to find any references to that system or equivalent. Why is this missing? Kind regards, Stijn SimonsSolved204Views0likes10CommentsPhysical transition between rooms in XR Quest 3 - How to?
Hello, I'm making a mixed reality app, and I have scanned two rooms in my house. I have used the Passthrough, MR Utility Kit and Effect Mesh building blocks, but I can't move between rooms without the screen getting covered up in grey, even though I can see the other room being rendered in the effect mesh. How can I disable this "out-of-bounds" effect in order to transition physically between both rooms? The first image is from the room I started the app, the second is from the second room looking towards the first.89Views0likes1CommentNeed help using preset avatars from the Meta Avatars SDK
Device: Quest 3 I have to run an experiment for my project that requires me to assign a participant an avatar from a list of avatars. Once the participant selects an avatar from the list, the full body avatar should appear in front of them from a third-person perspective (3PP), and they should also be able to see the avatar's hands superimposed on their own (1PP, this is important). Both the 3PP and 1PP avatars should mimic the user's hand and head movements. So far, the existing MirrorScene is working for me with Passthrough and a Grab cube interaction. https://developers.meta.com/horizon/documentation/unity/meta-avatars-samples#mirror-scene . I can see the avatar in 1PP and 3PP. I need to know how I can swap out this avatar for another. I believe the current avatar is a fallback avatar. NOTE: I want to use the existing presets available for Quest. There are 33 preset avatars labelled as 0_quest, 1_quest...32_quest. I will only be using a handful of avatars from these presets. I am NOT using avatars from users' Meta profiles. P.S: I gave Mixamo a shot, but it's kinda time-consuming to make each joint work as I want, and making the Meta XR Interaction SDK work with Mixamo models is a pain. TLDR: I want to swap the avatar in the MirrorScene with other presets available locally. How do I do it? First-person perspective (1PP) avatar is crucial. I can't find many resources to guide me with this. https://developers.meta.com/horizon/documentation/unity/meta-avatars-overview Just FYI, I am familiar with coding but have limited knowledge of Unity and Quest.137Views0likes1CommentUnity OpenXR Meta regression: passthrough doesn't work when focus is lost and regained
Problem: 1. Passthrough initially works fine in the app. 2. Take the headset off, the display goes dark. 3. Put the headset back on, the display turns back on. 4. Unexpected: passthrough no longer works in the app! Also, passthrough doesn't work in the first run after the app has been installed. This is a regression. Passthrough always worked in the last version of the Unity OpenXR Meta package I used, which I think was 2.0.1. Suspected Cause: MetaOpenXRPassthroughLayer.Dispose() in the Unity OpenXR Meta package appears to be broken - it's not idempotent. When Unity's OpenXRCompositionLayersFeature.OnSessionEnd() disposes it, the underlying resources are gone for good. So when OpenXRCompositionLayersFeature.OnSessionBegin() creates a new one, it doesn't work. Version: Unity 6 (6000.0.51f1) My selected XR plugin: Unity OpenXR Meta 2.2.0 Meta Quest 3 I think these packages are irrelevant to this problem, but including the versions anyway: Meta XR Core SDK 77.0.0 Meta MR Utility Kit v77.0.0 Meta XR Platform SDK 77.0.0279Views2likes2CommentsTracked hand pushing away menu (canvas) attached to other hand
I am keeping my left hand almost completely still here in the video demo below, but something pushes the left hand or the menu away when I get the right hand near the other hand/ menu (hard to tell if tracking issue due to other hand being near left hand vs hand interacting with menu or menu item colliders or rigibodies. Video of error in demo Video of unity project setup I have an empty gameobject called 'menu-hand_attatcher' with this script on: using System.Collections; using System.Linq; using UnityEngine; using Oculus.Interaction; // for OVRHand & OVRSkeleton public class AttachMenuToHand : MonoBehaviour { [Tooltip("The disabled Canvas or prefab you want to spawn")] public GameObject menuPrefab; // assign your menu_0 prefab here [Tooltip("Which bone/joint to anchor the menu to")] public OVRSkeleton.BoneId anchorJoint = OVRSkeleton.BoneId.Hand_WristRoot; [Tooltip("Offset from that joint in metres")] public Vector3 localOffset = new Vector3(0f, 0.05f, 0.06f); private OVRHand hand; // we’ll find this automatically private bool attached; private void Awake() { // Auto-find the first active OVRHand in the scene (left or right) hand = FindFirstObjectByType<OVRHand>(); } private IEnumerator Start() { if (hand == null) { Debug.LogError("❌ No OVRHand component found anywhere in the scene!", this); yield break; } // Grab the OVRSkeleton attached to that hand OVRSkeleton skel = hand.GetComponent<OVRSkeleton>(); if (skel == null) { Debug.LogError("❌ OVRHand has no OVRSkeleton component!", this); yield break; } // Wait until the system has tracked the hand & built out all bones while (!hand.IsTracked || skel.Bones.Count == 0) { yield return null; } // Find the specific bone (wrist, index tip, etc.) by BoneId OVRBone targetBone = skel.Bones .FirstOrDefault(b => b.Id == anchorJoint); if (targetBone == null) { Debug.LogError($"❌ Couldn't find bone {anchorJoint} on the skeleton!", this); yield break; } Transform jointTransform = targetBone.Transform; // Spawn or enable the menu prefab GameObject menuInstance = menuPrefab.activeSelf ? menuPrefab : Instantiate(menuPrefab); menuInstance.SetActive(true); menuInstance.transform.SetParent(jointTransform, worldPositionStays: false); menuInstance.transform.localPosition = localOffset; menuInstance.transform.localRotation = Quaternion.identity; attached = true; } private void LateUpdate() { if (attached && Camera.main != null) { // Keep the menu facing the user’s camera transform.LookAt(Camera.main.transform.position, Vector3.up); } } } Anchor joint is set to XR Hand_Start Items in menus have collider + rigidbody (no gravity) to allow acting as trigger It's not so clear in the video but it appears going near the colliders for the buttons freaks it out and flips the menu around, but so does just crossing the right hand over the left (menu anchored to left wrist), or getting it near the canvas. So hard to tell what its interacting with. 1. What can I try using this method I'm already using? (I'm very new to Unity and coding so redoing things or doing them a different way could take me a lot of time and I don't have much) 2. If I were to - is there a better way to do this menu/canvas and hand attachment? Here's my script of my menus using UnityEngine; using UnityEngine.UI; public class MenuNavigator : MonoBehaviour { [Tooltip("Prefab of the submenu to open when this button is poked")] public GameObject submenuPrefab; // debounce flags private bool _hasActivated = false; private bool _ignoreNextTrigger = true; private Transform _canvasRoot; void Awake() { // cache the Canvas transform so we know where our menus live Canvas c = GetComponentInParent<Canvas>(); if (c != null) _canvasRoot = c.transform; else Debug.LogError("[MenuNavigator] No Canvas found!", this); } void OnEnable() { // every time this menu (and its buttons) become active: _ignoreNextTrigger = true; _hasActivated = false; } void OnTriggerEnter(Collider other) { if (_ignoreNextTrigger) return; // ignore the initial overlap if (_hasActivated) return; // and only fire once per exit/enter // 1) Spawn the next submenu prefab under the Canvas if (submenuPrefab != null && _canvasRoot != null) { var newMenu = Instantiate(submenuPrefab, _canvasRoot); newMenu.transform.localPosition = Vector3.zero; newMenu.transform.localRotation = Quaternion.identity; newMenu.transform.localScale = Vector3.one; } else { Debug.LogWarning("[MenuNavigator] Missing submenuPrefab or Canvas!", this); } // 2) Find *your* menu panel: the direct child of the Canvas Transform panel = transform; while (panel != null && panel.parent != _canvasRoot) { panel = panel.parent; } if (panel != null) { Destroy(panel.gameObject); } else { Debug.LogWarning("[MenuNavigator] Couldn't find menu panel root!", this); } _hasActivated = true; } void OnTriggerExit(Collider other) { // 1st exit after spawn turn off ignore, subsequent exits clear the activated flag: if (_ignoreNextTrigger) _ignoreNextTrigger = false; else _hasActivated = false; } } Many thanks :)30Views0likes0CommentsPassthrough activates on Unity App on Resume from Stand-By
So I've build an app using Unity and the SDK provided by Meta on Unity Asset Store. The verison is the 2022.3.44f1 and the application works on Quest 2 and Quest 3 devices. The problem is that when the devices go in Stand-By mode and then they "Wake up" again, the application starts to flicker showing the reality with the passthrough and the application in a very fast and flashing way. The only way to stop this is to press the Power Button and make them go sleep again and then retry waking them up hoping that the problem is gone, sometimes it works at first attempt other times it needs more times. Is there somethign that I can do? This last part is interesting: https://youtube.com/shorts/7aZ976HhLz4?feature=share I'm also posting a video recorded with the phone through the lens because when I tried to use the recording program of the Quest, this was properly recording the applicazion while the flickering was happening, so the passthrough was not visible in the recording. This let's me think that the problem doesn't come from the Unity application or other settings that I should do...464Views0likes1Comment