Opened 3 years ago
Last modified 3 years ago
#7693 assigned defect
VR flickers with Quest 2 and AirLink or link cable
Reported by: | Tom Goddard | Owned by: | Tom Goddard |
---|---|---|---|
Priority: | moderate | Milestone: | |
Component: | VR | Version: | |
Keywords: | Cc: | ||
Blocked By: | Blocking: | ||
Notify when closed: | Platform: | all | |
Project: | ChimeraX |
Description
The Quest 2 headset exhibits jitter running ChimeraX with connection by wifi using Quest AirLink. The jitter can be small fast shaking about 10% of the time when moving my head as if rendering is dropping every other frame, or possibly 2 frame drops, and about every 5 seconds of motion a bigger drop where the molecule freezes and jump about 5 centimeters. My test molecule had only about 20 atoms, PubChem 5957, in stick display style. This was the observed behavior at home with my wifi router downstairs and testing 40 feet away upstairs, so wifi signal strength was average. Also the router is 802.11ac on 5 GHz using 80 MHz channel width. Quest 2 AirLink advises using the more modern 802.11ax ("wifi 6") and using the router in the same room. So the observed jitter is not too surprising. When I moved to the same room as the router the jitter was much less, maybe one big jump each 60 seconds, and only barely perceptible fine jitter. AirLink was at its default configuration of Dynamic bandwidth targeting 100 Mbits/second. When I switched to using the link cable to USB 3.1 on the Windows 10 computer (GTX 1080 Ti graphics), the jumps disappeared and jitter was very fine. The jitter was still much more noticeable than what is seen in the AirLink home panels which appear completely smooth during head motion. Possibly SteamVR introduces the jitter. Should experiment moving around the SteamVR home room on AirLink.
The reason I did this test was because I also observed jitter and jumps in the vizvault in N453 with a wifi 6 router in the same room. I need to retest in the vizvault to quantify how severe the problem is.
Change History (13)
comment:2 by , 3 years ago
Molecule jitters even with link cable
With cable the ChimeraX molecule still jitters with a fine shudder, of maybe a few millimeters and once every 60 seconds a burst of bigger jitter like 10 half centimeter jumps as my head moves. It looks like it is simply dropping frames. Maybe ChimeraX does provide the frames with a consistent timing so frames are dropped. Maybe Python garbage collection or Qt event handling causes the Qt redraw timer to not be called quickly enough.
A next step to evaluate this would be to compare the quality to a non-Oculus, native SteamVR headset such as the Vive Pro or Valve Index. I have the feeling those are smoother, but it needs testing.
comment:3 by , 3 years ago
Level of jitter is too much for routine use
The level of jitter with Quest 2 cable or AirLink is not extreme, but it is sufficiently bad that I think it would be a strong reason for not using VR. Perfectly smooth appearance is needed and ChimeraX is not achieving that.
comment:4 by , 3 years ago
Valve Index headset shows no jitter
Testing same molecule, same ChimeraX, same Windows computer with Valve Index and it is completely smooth, no jitter at all. So the problem seems to be with Quest 2.
Maybe the bandwidth on the link cable over USB 3.1 is not enough to give smooth appearance -- but since the SteamVR room and paint tool achieves smooth appearance that does not seem to be the factor.
Next it would be worth comparing to Oculus Rift S which is designed to be cabled.
comment:5 by , 3 years ago
Oculus Rift headset shows no jitter
I tried an original Oculus Rift CV1 with 3 tracking cameras (March 2016!), works completely smooth with same test molecule and computer. Zach has the Oculus Rift S at home so I have not tested with that.
So frustratingly, only the newest most popular headset that has most of the VR market share performs poorly!
Maybe the trouble is that the PC has to compress the video for the Quest 2 and that speed bottleneck causes the problems. But because other Windows apps like SteamVR is smooth the machine is able to give smooth performance. Maybe it is that ChimeraX is providing OpenGL textures while game engines are using Vulkan which somehow puts it on a faster path. Since Oculus Rift and Valve Index are perfectly smooth it seems clear that ChimeraX delivers the frames fast enough. Maybe research online will give some clue.
comment:6 by , 3 years ago
Other tests to try
Sent Phil and Meghan email about the Quest 2 jitter. Possibly they will have seen ChimeraX work smoothly with Quest 2 which would give a lead to the magic needed to fix the rendering.
What next steps could figure out the cause and solution for the jitter? Try not mirroring graphics to desktop display. Check PC CPU load during rendering. Search online for info about Quest 2 jitter with PC games. Try Steam Beat Saber and see if it exhibits any jitter. SteamVR home is smooth but has one less app in the pipeline so good to try Beat Saber running through SteamVR. Write a minimal Python / pyopenvr / pyopengl app to render say a GLTF file (that will probably take a few days of work).
comment:7 by , 3 years ago
Is jitter caused by inadequate wifi/cable bandwidth?
Back to testing Quest 2 with link cable. I unplugged the 3 Oculus Rift USB base stations -- probably they don't use any bandwidth when not in use, but want to make sure the jitter is not caused by other USB devices taking bandwidth. It would make sense to test on a few other computers. This report is all using my home Windows 10 machine. If the jitter is related to USB 3 performance other machines may do better. The AirLink performance may just be a limitation of wifi and also worth comparing that at the vizvault versus my home setup.
The quest 2 does give brief (< 5 second) periods of smooth rendering while moving my head. When head is still jitter is rare, but still a few times per minute halfbond color boundaries flicker by millimeters.
I'm especially puzzled by the jumping half-bond color boundaries. They seem to flicker a few millimeters, only some of them, and not when the whole molecule jitters, the whole molecule can be perfectly still. Maybe it is a compression artifact? Maybe the jitter problems of Quest 2 versus say the Oculus Rift is just because it is much higher resolution so needs higher video bandwidth that neither the USB 3 link cable nor wifi reliably provides.
comment:8 by , 3 years ago
Default Quest 2 frame rate is 72 Hz
My quest 2 tests all were running at the default framerate of 72 frames/sec and default resolution of automatic which is 3616 x 1840 on my home 1080 Ti system, set in the Oculus desktop app under Devices / Graphics Preferences.
comment:9 by , 3 years ago
"USB 3 connection recommended" warning
The Oculus desktop app under Devices / Quest 2 is now saying "USB 3 connection recommended". It is plugged into a port that says USB 3.1 on it on the back of my Windows 10 machine. When I plug it into the other USB 3 ports Windows gives a notifications "The last USB device plugged in was not recognized" and the Oculus desktop app says the quest 2 is not connected. Only the single USB 3.1 port connects but then the Oculus app says "USB 3 connection recommended".
I restarted headset and PC following suggestions at
https://smartglasseshub.com/usb-3-connection-recommended-oculus-link-quest-2/
but still get the "USB 3 connection recommended". That message only appears after clicking "Allow" in the headset on the "Allow PC to Access Headset files" panel. The next suggestion on the above web page was to try flipping the USBC connection 180 degrees. My cable is USBC on the headset end, and USBA at the PC. So only the headset can be flipped. Flipping the headset connection fixed it -- no more "USB 3 connection recommended". Unfortunately this cable has the connector at right angles to the cable and seems intended to have the cable exit from the headset toward the person's body. But that way gives the "USB 3 connection recommended" warning, apparently indicating it got only USB 2, while the other orientation works. It is usable in the other orientation.
Possibly all my previous tests with the link cable were not using USB 3. The warning is shown in the Oculus desktop app under Devices after clicking on the Quest 2 device.
Testing without the USB 3 warning it seemed less jittery in some ways. The flicker of the halfbond color boundaries disappeared. Also the finest scale jitter disappeared. But the coarser jitter, half-centimeter jumps, 10 in a row over half a second, are still frequent when moving the head or moving the molecule, happening maybe every 10 seconds. These coarse jitters are probably more disturbing than the other two jitters that seem to have gone away with the USB 3 connection fix. I suspect the coarse jitter is simply dropping every other frame at the slow 72 frames / second.
Maybe the USB 3 warning is spurious, a bug in the Oculus app
I switched to 90 hz framerate restarted headset and now I am back to getting the "USB 3 connection recommended" warning with the cable in either orientation! Restarted PC and headset, still get the USB 3 warning. Maybe this warning message is simply wrong. In the 90 Hz default resolution test in the following comment it was the smoothest ever despite having this warning. This equipment is so flaky, it is no wonder that VR gaming has had such poor adoption.
comment:10 by , 3 years ago
Changing resolution or framerate
I tried using a fixed resolution factor 0.7 (~2400 x 1200) in the Oculus desktop app, requiring headset reset. The app recommends against using fixed resolution. The former automatic resolution was using factor 1.0. It may have reduced the frequency of coarse jitter or maybe didn't reduce it at all -- it is still very common, at least 2 or 3 times per minute when moving head or molecule. The pixel aliasing along bond cylinder edges looked worse. It is especially bad on a black background, less bad on a gray background.
90 Hz framerate is far smoother
I went back to automatic resolution and tried frame rate 90 Hz. Resolution factor was 1.0, 3264 x 1648. I could not get rid of the "USB 3 connect recommended" warning. But the rendering was smoother and less jittery than any previous tests I did. It still jitters a little but significantly less frequent (once every few minutes) and the jitters look like single frame drops instead of 10 consecutive drops of every other frame. I tested 90 Hz with AirLink and it was equally smooth as with the cable when I was in the same room as the wifi router. It was somewhat jittery when in a different room 40 feet away.
comment:11 by , 3 years ago
Headset can't find PC
When trying to launch quest link (cable) the headset often can't find the PC. It says searching for minutes and never finds it. This inspite of the fact that the Oculus App saying it is connected to the headset. Just one more flaky behavior. Only repeated attempts, restarting the Oculus App, restarting headset, ..., does it eventually find the PC connected by cable.
comment:12 by , 3 years ago
Summary: | VR flickers with Quest 2 and AirLink → VR flickers with Quest 2 and AirLink or link cable |
---|
comment:13 by , 3 years ago
Next steps, test 90 Hz in VizVault
Try 90 Hz frame rate with AirLink or cable in VizVault to see if it is smooth enough for use.
Might also try 120 Hz.
SteamVR home room shows no jitter
I tested with the link cable at home looking for jitter in the SteamVR home room. There is a paint brush tool that allows drawing tubes that are the same size as the molecule stick tubes ChimeraX shows for the pubchem 5957 small molecule. The painted tubes show no jitter. Switching to ChimeraX it shows lots of fine jitter. Partly it may be because the background is black. Changing ChimeraX background to white or gray reduced the jitter appearance at the sharp bond cylinder edges but did not eliminate it. It may be that the SteamVR room is using full scene anti-aliasing which is giving it much smoother appearance. The jitters are quite noticeable for bonds that use two colors (e.g. carbon tan to oxygen red). The sharp dividing line between the colors very noticeably jitters and jumps. The SteamVR paint tool paints in one color at a time. I painted multiple colored tubes crossing each other. No jitter when moving head.