Buffer-based Haptics are broken for Quest 2
Haptic controller vibrations are a crucial tool for creating game immersion. While simple "buzzes" (a constant vibration amplitude for a specified duration) can be serviceable, modern controllers allow developers to play custom waveforms through the controllers, such as sawtooth waves, sinewaves, and even Audio Clips. This adds texture and nuance to the effect, and is the superior way to play haptics in 2022. After much trying, it appears to me that the buffer-based haptics are fully broken for Quest 2 controllers in the Oculus integration for Unity. I have tried in 3 ways: Using the Unity generic XR system: byte[] samples = new byte[1000]; // This would be loaded with samples to create a custom vibration waveform var handDevice = InputDevices.GetDeviceAtXRNode(hand == Hand.right ? XRNode.RightHand : XRNode.LeftHand); // Pass the buffer into the controller if its "haptic capabilities" say that it supports buffer-based haptics if (handDevice.TryGetHapticCapabilities(out var capabilities) && capabilities.supportsBuffer) handDevice.SendHapticBuffer(0, samples); Using Rift S and Quest 1 Touch controllers, the above code runs successfully. Using Quest 2 and Touch 2 controllers, "supportsBuffer" is false on the capabilities class, and the samples cannot be successfully sent. I know that it is incorrect that the Touch 2 controllers do not support the feature, as I have in a few instances been able to send a buffer to Touch 2 controllers using the below method. Using OVRHaptics: var ovrHapticClip = new OVRHapticsClip(myAudioClipToTurnIntoVibration); var channel = OVRHaptics.RightChannel; channel.Queue(ovrHapticClip); The OVRHaptics class has a function for sending a haptic buffer in through a "channel" (controller). I can actually get this method to work in a test scene. However, it requires me to put the OVR plugin in a legacy setting (Oculus/Tools/OpenXR/Switch to Legacy OVERPlugin (with LibOVR and VRAPI backends) ). If I am not in this setting the function does nothing. In another project, if I set the project to this setting and try to send the haptics buffer, the engine gets stuck in an infinite loop. According to what I can find online, the OVRHaptics class is intended to be deprecated, anyway, so it doesn't seem like a good solution. Using OVRInput: My understanding is that OVRInput is the modern, sanctioned way of sending haptics to Oculus controllers without going through the generic Unity XR system, and they contain a method for a "simple buzz" (amplitude and duration parameters only) via OVRInput.SetControllerVibration. However, they seem to lack any functionality for sending in a custom buffer, unlike the deprecated OVRHaptics. I would love any advice regarding ways I can get this feature to work. I figure I'm either wrong about some of my conclusions above, or the feature is fully broken at the moment -- either way, I'd love to know. Thanks in advance for your help!3.1KViews13likes1CommentImmersive Debugger spams error message
Hello Community, i try to use the Immersive Debugger in a Unity 6 project. But i do not get to manage that the following error message disappear: "In the render graph API, the output Render Texture must have a depth buffer. When you select a Render Texture in any camera's Output Texture property, the Depth Stencil Format property of the texture must be set to a value other than None." My guess is, that the error appears because of the debugger itself. The error will not be printed in the Unity Log if i start the application with the Simulator (but it will also appear in the Immersive Debugger Log). Has someone an idea whats wrong?2.8KViews7likes14Comments[MetaXRFeature] spamming the unity console with logs when using OpenXR
Hi, when using Unity 2022.3.42f1 and Oculus Link with Meta Open XR feature sdk (com.meta.xr.sdk.core@68.0.2) , I get hundreds of log messages spamming the console similar to: [MetaXRFeature] OnAppSpaceChange: 144292415606376081 UnityEngine.Debug:Log (object) Meta.XR.MetaXRFeature:OnAppSpaceChange (ulong) (at ./Library/PackageCache/com.meta.xr.sdk.core@68.0.2/Scripts/OpenXRFeatures/MetaXRFeature.cs:228) UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) In general there is no way I see to turn off these kinds of logs from MetaXRFeature.cs which is very annoying. A few would be ok, but I'm seeing hundreds706Views7likes0CommentsSpatializer error with new projects
When I import Oculus Integration and then import Oculus via XR Management in a new 2020.2 project I get the following error: GUID [a57801270cf689244b48012cf9db1713] for asset 'Packages/com.unity.xr.oculus/Runtime/Android/arm64/libAudioPluginOculusSpatializer.so' conflicts with: 'Assets/Oculus/Spatializer/Plugins/Android/libs/arm64-v8a/libAudioPluginOculusSpatializer.so' (current owner) We can't assign a new GUID because the asset is in an immutable folder. The asset will be ignored. Think this is a bug that needs to be solved, so we don't have to pick one of the files and delete the other.4.3KViews6likes7CommentsUNITY 6 Logging Bugs (OVR / META XR / OPEN XR)
With UNITY 6 being released last month, we've gone in and logged some critical bugs that are preventing smooth Quest development on the new engine. If you find any bugs or, especially, find solutions let us know and leave them here! ----------------------------------------------------------------------------------------------- BUGS: #1: Disabled HeadTracking on play leading to stuttering and extremely low refresh rate Notes: - When playing preview with Questlink, it appeared that head tracking wasn't working and as a result the scene was refreshing in the headset and in the preview game view at extremely slow rates. Unplayable bug. SOLUTION: (Credit to LuffyYu ) - Uninstall OculusXR plugin and enable MetaXR within OpenXR plugin & enable "HandPoses" within MetaXR options. Solution notes: - Solution seems to have fixed refreshrate on start UNLESS hand tracking is enabled -- results in same drop in refresh rate. - Minor stuttering still present so potentially refresh rate isn't running entirely optimally. #2 No visible controllers on preview play (i.e. controller tracking isn't functioning in this environment atm) Notes: - When playing preview with Questlink, there are no visible controllers with no controller inputs registering (controllers are paired with full battery). SOLUTION: - No solution found yet. #3 Enabling hand tracking results in lost head tracking and extremely low frame rate (see bug #1 solution notes) Notes: - When playing preview with Questlink, after enabling hand tracking -- hands appear and have full tracking functionality, but we lose 360 stereoscopic view and revert to extremely low frame rates in headset and in game preview. SOLUTION: - No solution found yet. #4 Non-functional builds (APKs) Notes: - After building an APK to correct specs and sideloading to Quest 3, the APK cannot launch and when launched by the user. we're prompted with "CANNOT OPEN" "CONTINUOUSLY STARTING". Suggesting some kind of error with the apk build/compile process (maybe some discrepancy in the DLL/SO files? -- total speculation) SOLUTION: - No solution found yet. -- We've been finding some serious instability in some key parts of the dev experience with Meta XR on Unity 6 (preview, interaction SDKs, tracking, building etc.) all of which suggest a mismatch in potentially some of the lower-level infrastructure in Meta's plugins & Unity's updated engine (NOTE: we haven't observed any console logged errors during any of our testing -- on the surface things seem to be running fine, but we just have some inconsistent behaviors in engine typical of a new upgrade). We'll keep looking but if anyone finds anything let us know!2.1KViews6likes5CommentsError: "Saving Prefab to immutable folder is not allowed" in Unity with Meta All-In-One SDK
I am setting up a fresh Unity project for a VR project that uses Meta All-In-One SDK. To do this, I created a new 3D built-in render pipeline project, and I imported the Meta-All-In-One SDK (ver.68, but this happens with the 66 as well) from the Package Manager. After the package is imported, I fix and apply all the reccomended fixes, set up the build for Android, and select Oculus as XR plugin manager. Right after doing these operations, and as soon as I save the project, immediately an error pops up: Saving Prefab to immutable folder is not allowed: Packages/com.meta.xr.sdk.interaction.ovr/Editor/Blocks/Interactors/Prefabs/[BB] Hand Ray.prefab UnityEditor.EditorApplication:Internal_CallGlobalEventHandler () This happens mainly on these two objects: BB hand ray, and OVR camera rig interaction. Important to note is that no game objects or prefabs were added to the scene (that contains only Main Camera and Directional Light). This is a problem because is affecting the Build and Run operation, returning in errors when building Player. I also had a try on another, more developed project, and this same error happens, but the Play mode with Quest Link is not affected at all and the app works perfectly, when not built. Does anybody have this same experience and problem? If so, does anyone came up with a solution? I would greatly appreciate any help. Thanks a lot2.3KViews5likes7CommentsHey META we need to improve the way updates of the SDKs are made
First of all thank you Meta for the hard work to improve the SDK with a lot of frequency BUT can we please find a way to make the SDKs updates less horrible? 50% of the time after an update from the package manager something breaks in the project, and I dont mean incompatibly, I mean stuff with the packages, library folder etc I was so excited to try the new Depth API with v67, but I had to rollback everything to v66 because I couldn't get rid of an error not finding OVR Input. Its amazing to have a rapidly evolving environment for Quest but please lets make this in a better way, starting by updating the version number on ALL packages, make it as easy as update the main package and that it updated all the dependencies.5.2KViews5likes15CommentsQuest Only Renders Right Eye
Context: I recently upgraded to Unity (2020.3.30f1). I am using Oculus XR Plugin (1.11.2) and XR Plugin Management (4.2.1). I am using OpenGLES3 Graphics API, Multi Pass Stereo Rendering Mode, using the Default Render Pipeline. Issue: My build appears to render the right eye correctly. However, the left eye appears to show a single color sampled from somewhere on the display. As I turn my head I can see various colors from the scene in my left eye. It's as if my left eye were magnified down onto a single pixel. This issue even occurs during Unity's initial loading splash screen, before the scene's OVR Camera is even enabled. It also occurs in my custom made splash scene before the main scene loads. If I walk to the edge of my chaperone guardian I can see the boundaries with both eyes. If I open the Oculus menu I see it with both eyes. No errors in the editor. No errors in the build. I've removed Post Processing V2 from my Plugin Manager and anything dependent on it. I have tried changing to Multiview (Single Pass) stereo rendering, but then nothing renders in either eye. I have also tried enabling "Use Per Eye Cameras". No dice. I noticed this was not an issue when I switched to using OpenXR. However OpenXR does not support hand tracking to my knowledge, which it a critical necessity for my project. If anyone has had issues similar to this I'm open to suggestions.12KViews4likes10Comments