Meta Quest Unity Real Hands Building Block not showing real hands
Hi all! I'm somewhat new to VR development, especially in mixed reality. I am trying to use Meta's Real Hand building block, but I can't seem to get it to work. I have a very basic scene with some of the fundamental building blocks (camera rig, passthrough, passthrough camera access, interaction rig), along with the real hands building block and a single cube. When I build the project to my Quest (Meta Quest 3), and move my hands in front of the cube, I can only see the virtual hands - the occlusion does not work to show my real hands (i.e. it works the same as it did before I added the Real Hands building block). Why is this and how can I fix it? Unity Version: 6000.3.4f1 Meta Quest Packages: Meta XR Core SDK (85.0.0), Meta MR Utility Kit (85.0.0), Meta XR Interaction SDK (85.0.0) Steps to Replicate: Create a new empty scene Add the following building blocks: Camera Rig Passthrough Passthrough Camera Access Interactions Rig Real Hands Add a cube at (0, 0, 3) Build the project and deploy to the Quest Wave your hands in front of the cube - only virtual hands are visible, not real hands77Views0likes1CommentHow to make real-world objects appear in front of a virtual environment in Mixed Reality?
I am trying to create a Mixed Reality application in Unity where a virtual environment surrounds the user’s real room, so that the user feels like they are in a different environment while still being inside their real space. I experimented with the SpaceMap sample from the MR Utility Kit: https://github.com/oculus-samples/Unity-MRUtilityKitSample/tree/main/Assets/MRUKSamples/SpaceMap This sample actually does almost exactly what I want. However, I am facing the following issue: Real-world objects, people, and even my own body appear behind the virtual environment objects, so they become invisible. In other words, the virtual environment fully occludes the real world. What I would like to achieve instead is: Real-world objects, people, and my body should appear in front of the virtual environment based on depth. However, the room surfaces (walls, ceiling, and floor) should not occlude the virtual environment. So effectively: Real dynamic objects should appear in front of the virtual world. Static room geometry should not block the virtual environment. From my research, it seems possible to do something like this using opacity or passthrough techniques, but that’s not what I want. I would like the result to feel natural and realistic, without transparent effects. Since this is my first MR application, I might be missing something obvious. If anyone has experience with this or can point me in the right direction (depth APIs, occlusion techniques, or examples), I would really appreciate the help.85Views0likes1CommentOVRCameraRig per-eye camera mode appears to double effective IPD (world scale distortion)
I found what appears to be a stereo geometry bug in Unity when using OVRCameraRig in per-eye camera mode. Sharing this with the community so others can reproduce and verify. Summary With OVRCameraRig per-eye cameras, behavior suggests effective IOD/IPD is being applied twice: Left/right eye transforms are already separated, which is expected for per-eye mode. But the final rendered behavior still looks like additional eye separation is being applied elsewhere. In practice this causes: world appearing too small compressed perceived distances movement gain mismatch versus real-world motion This can persist even when Camera.stereoSeparation = 0, which suggests the extra separation is not only coming from that property. When both per-eye cameras are forced to the center-eye position, with zero horizontal separation, scale and distance perception return to normal while stereopsis remains visible. Testing Environment Unity 6000.3.2f1 LTS Meta XR SDK 85.0 Meta Quest 3 Meta Horizon Link Reproduce Project repo: https://github.com/Danial-Kord/meta-quest-sdk-stereo-ipd-bug Contains: minimal OVRCameraRig setup two behavior-based validation scenes world-space UI and controller tools workaround script: CustomIPDOverride Test A: Dual Iron-Sight Alignment (SampleScene) Two iron sights, one per eye. Adjust horizontal offsets until both sights perceptually align. Measured separation at alignment: Per-eye default: about 12 cm Non-per-eye: about 6 cm Per-eye plus override, cameras centered: about 6 cm This suggests per-eye default behaves like about 2x effective IOD. Test B: Monocular Head-Center Alignment (HeadCenterExperiment) This is a second test independent from dual-sight balancing. Procedure: Align a single iron sight while only one eye is active. Switch to the other eye only. Physically move to align the same sight again. Compare the two saved headset poses. The difference between the two saved headset poses is used as a measure of effective IOD. Compared modes: per-eye mode: about 12 cm after test per-eye plus centered-camera override: about 6 cm after test This provides another alignment-based check of geometry consistency. Interpretation Results suggest per-eye mode in OVRCameraRig may be composing eye separation from more than one source, such as transform offset plus another pipeline stage, yielding doubled effective IOD in default behavior. Possible Fix Direction For per-eye mode, use only one baseline source: Option A Keep per-eye transforms centered and let the internal or native stereo path apply IPD. Option B Use transform offsets of plus or minus IPD/2 and ensure no additional separation is applied downstream. But not both simultaneously. Workaround CustomIPDOverride, my custom camera placement override, hooks into: OVRCameraRig.UpdatedAnchors LateUpdate Application.onBeforeRender It forces anchors from center with a configurable proportion, including zero. In my tests, this restores expected alignment and perceived scale. Request for Reproduction If anyone can reproduce this on other versions or devices, please share results. I can also provide: in-headset videos runtime logs for OVRPlugin.ipd, eye anchor transforms, and camera separation values stripped-down package Links Project repo: https://github.com/Danial-Kord/meta-quest-sdk-stereo-ipd-bug GitHub: https://github.com/Danial-Kord/ Email: danielkordm@gmail.com Our lab: BioMotionLab - Nikolaus Troje | York University Thanks for reading! Let me know your comments on it. Best, Danial Kordmodanlou60Views0likes1CommentWhy does an MRUK Room sometimes get loaded at an angle?
I'm working on an AR app in Unity which makes used of the global mesh of the room I'm currently in. It seems that on rare occasions the whole room gets created/loaded at an angle. Not a rotation around the up-axis, but an actual tilt. I can easily detect that this happens, but from there on out I seem to be stuck. From what I can tell there is no API to go "hey, please attempt to reload the rooms again". I guess I could reload the scene, triggering a reload of the MRUK prefab, and see if that fixes things, but that's not ideal. So I guess my question is twofold. Is this a known bug/issue? How can I, when I detect this happens, cause a specific room to get "reloaded"? Unity Version: 6000.0.56f1 Current Meta Packages: 81.0.1 (Although the behaviour dates from well before that)175Views0likes4CommentsAccessibility Feature Request: Conversation Focus Mode for Ray-Ban Meta Display Glasses
Hi everyone! I’m a Ray-Ban Meta display glasses user who is hard of hearing and wears hearing aids daily. I’d love to see a conversation focus mode added that prioritizes voices directly in front of the wearer and reduces background noise. In busy environments, this would make a big difference for hearing-aid users and others who rely on clearer speech in real time. If this type of accessibility feature is ever developed, I would absolutely love the ability to have it added to my glasses and would be happy to provide feedback or participate in any beta or user-testing opportunities. I’ve also submitted this through support channels, but wanted to share here in case the team is gathering feedback.150Views1like0Comments3D Raycast from hands... where is it coming from?
I have a Unity Mixed Reality project... and added the hands and real hands and that's cool. Tossed in a Zombie so I can try to get him to follow me or I can shoot him (finger gun special). Now I want to fixup the ray cast from the hands/controllers so I can interact with game objects from afar... but I'm not even sure where that ray is coming from so I can see the script. My "change" would be to have the ray extend 50m... and return a bunch of "hits" with "target class:" GameObject, yellow [put an explosion effect on that zombie -- if it's hitting the mesh] Interactable, a blue disc appears [press trigger to activate object] something from the 3d depth [depth raycast], an orange disc appears [put bullet hole on that] a scene object [floor/wall], a green [grounded] disc appears (note that that may not be the final terminus -- if there's "more models" outside the window or wall (or maybe you're picking something on the other side of a table).... [code has to see if you can shoot through it] All of course, flat against the object, and usable in code (you might be able to fire a laser through the window, but it won't go through a wall; code will see if that works)... But... I don't know where to look... the ray from the hands does #3... but I don't know where in the Asset Tree it's coming from --it will probably also tell me how to make those discs (is it a Gizmo, or a GameObject?). I figure I can add #1/2 [from the cubes, but I haven't quite figured them out yet either, and #4 [EnvironmentalRayCast [ERC] but I might have to iterate on that one because I don't see a "give me all the hits" from the ERC). Questions: a) Where is this 3d ray coming from in the asset tree so I can learn? b) Is there a good way to "scale" the discs so they're "always ~20px dia" no matter how far away they are? c) It looks like I need to change the shader of my zombie, but I'm not getting the terminology -- it occludes fine (eventually I want the IRL table to occlude it), but I need to say "oh, user picked the bellybutton -- spawn an explosion effect in his gut..." -- and how do you change shaders anyway? I can change materials from the editor, but...?Solved49Views0likes1CommentStylized 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.28Views0likes0CommentsHorizonOS v81 update broke Passthrough in startup Splash Screens
Hi folks, This is for a project in a C++ UE 5.5.3-0+oculus-5.5.3-release-1.109.0-v77.0 engine from official Oculus Branch. A recent update to Horizon OS, likely v81, seems to have changed the way Splash screens are handled to now send the user to a black void with particles and wisps flying by. This has created a big problem for our MR application in that now NO Passthrough is visible during splash, which is causing us to fail VRC (Functional.14). This was not an issue before this OS update. These are the settings and image (PNG with transparency) we are using: Even forcing bAutoEnabled to True in DefaultEngine.ini does not help: Setting to Black also gives the same result, which is the black void with a very low resolution proxy of the PNG we have: For reference, this was the behavior before the v81 update: We also scouted other MR apps and it seems they face similar situations (?) Any help is appreciated as we'd rather not request any waivers during our QA process. Thank you! -Sebastian211Views0likes2Comments