Known Issues, FAQ, and Debugging Guide¶
Known Issues (Unity Plugin)¶
- Controller Support limited to Oculus Quest
Other controllers will function, but not display correctly
- Issues in Sample Code
Autoconnect sample requires specifying IP address at compile-time
Lobby UI sample only tested working on Oculus Quest (uses Quest on-screen keyboard)
- CxruReprojection.shader issues
Vertical banding distortion: some or all platforms exhibit a “blurriness” in the form of 6-10 regularly spaced vertical bands of distortion
Speckling: small number of pixels showing random noise, noticeable in dark scenes
Turnaround with stalled input: If the input pose is frozen and the HMD turns “all the way around”, the shader shows a distorted version of the frame rather than the correct black
- Requires Unity OpenXR-based plugin provider
Currently, this plugin uses Unity’s OpenXR plugin to get performance-critical pose information directly from a runtime
Plugin providers such as ARCore and OculusXR that do not use OpenXR are not supported at this time
- CloudXR 4.0 only
This plugin will not work with previous versions of CloudXR, and is only tested with CloudXR 4.0
- Incompatible with Unity Multithreaded Rendering
On by default, this will cause various issues and will not work properly.
- Unity’s
runInBackground
setting in ProjectSettings/ProjectSettings.asset
needs to be set to1
in order for HMD transform to be correct during Oculus system menu
- Unity’s
HTC VIVE OpenXR (Mobile) plugin for Unity 2.0 - No longer includes
libc++_shared.so
- Now requires “standard” version of package (notsans-libc++
variant)
Frequently Asked Questions¶
- Can I make tablet AR clients?
Not yet. Tablet AR support is our highest priority upcoming feature.
Debugging Guide¶
- CXRU_HMD not defined
- Symptoms
Compilation error on first import of CloudXR package
- Issue
Either CXRU_HMD or (in future) CXRU_TABLET must be defined to select the right code paths in the plugin
- Resolution
Project Settings > Player > Other Settings
Define a new symbol CXRU_HMD in the list of conditional compilation defines
- CloudXR Tuned Pose Capture not enabled
- Symptoms
logcat: Error Unity DllNotFoundException: Unable to load DLL ‘libCloudxrClientlibCsharp.so’ (continuous)
- Issue
Unity has failed to determine that the libraries in the provided AAR are required, and has not included them
- Resolution
Ensure that the “CloudXR Tuned Pose Capture” feature is enabled in Project Settings > OpenXR > OpenXR Feature Groups
- HMD Origin incorrect
- Symptoms
HMD is located on the “floor” of the remote environment
- Issue
OpenXR poses are not aligned to Unity poses
- Resolution
Set “Tracking Origin Mode” to “Device” on XR Rig/Origin object in scene
- Render Order Incorrect
- Symptoms
Objects in (local) scene fail to render during streaming (e.g., Mixed Reality Toolkit UI objects)
- Issue
CloudXR sample renderer features/shaders are “overwriting” other rendered objects
- Resolution
Option 1: Use the “UI” layer on all objects to be rendered “over top of”
- Option 2: Add the “Render Objects” renderer to URP-Performant-Renderer (or the correct URP renderer settings in the Project Window > Settings)
Set Event to “AfterRenderingTransparents”, which will force this to be after CxruRendererFeature runs, rendering local objects over top of the streamed pixels
- MainCamera issues
- Symptoms:
- logcat has many of this error:
Unity NullReferenceException: Object reference not set to an instance of an object.
Unity at CxruClientSampleOculusUI.UpdatePlatform () [0x00000] in <00000000000000000000000000000000>:0
Unity at CxruClientSampleOculusUI.Update () [0x00000] in <00000000000000000000000000000000>:0
Inside HMD, view may be “locked”
- Issue:
MainCamera is not configured properly
- Resolution:
Ensure only one MainCamera tagged camera in the scene
Ensure that MainCamera is attached to an XR Origin or XR Rig
Ensure that CloudXRManager.cs is active on that camera object
- Android Internet permission missing
- Symptoms
Build for Android HMD
Undebuggable failure to connect to CloudXR server
In Package Manager, the version of the OpenXR plugin is 1.8.2 (or possibly higher)
- Examine exported Android Studio project, AndroidManifest.xml does not contain Internet permission
Even if this permission is enabled in Project > Player Settings
- Issue
As of OpenXR Plugin 1.8.2, Unity has added drill-down settings for the built-in Android Meta Quest Support feature, which includes a “Force Disable Internet Permission” that is on by default (why, I don’t know).
Unfortunately, this force disable internet feature is (incorrectly) applied to any Android platform, whether or not the Quest Support feature itself is enabled. So any APK produced by this will never ever connect to a CloudXR server.
- Resolution
Project Settings > XR Plug-in Management > OpenXR
- OpenXR Feature Groups > Meta Quest support
Look for the gear icon to the right of this
Find and disable “Force Remove Internet Permission”
- libc++_shared.so collisions
- Symptoms
- Build for these Android platforms:
HTC VIVE OpenXR - Android
Qualcomm Spandragon Spaces SDK for Unity
any other that includes libc++_shared.so
- Build fails with a Gradle error
More than one file was found with OS independent path ‘lib/arm64-v8a/libc++_shared.so’
- Issue
The CloudXR combined AAR library includes a library that ships with a version of lib_c++_shared.so`
These platforms’ Unity plugin packages also ship with a version of lib_c++_shared.so
Only one can be included
- Resolution
Use the sans-libc++ variant of the main CloudXR Client Unity Plugin (which excludes libc++_shared.so)
- Justification
Assumption: all libc++_shared.so files come from Android NDK of similar versions
Observation: there is an actual name collision on libc++_shared.so (i.e., no libstdc++_shared.so or similar)
Result: All libc++_shared.so libraries are from the same implementation, and are both ABI and implementation compatible
Thus: Any of the libc++_shared.so files will work as the one, singular, permitted shared libc++ implemenation in a combined AAR or final APK.
- Android run-in-background unset
- Symptoms
On Oculus (and possibly other Android platforms), press (right hand) system menu
Move head
System menu “tracks” correctly, Unity tracks wrongly
- Issue
Uncertain; something between Unity, Android, XR runtime
- Resolution
Edit this file: ProjectSettings/ProjectSettings.asset
Change the value of runInBackground from 0 to 1