1
0
Verdi 4183ae2530 Fix stereo rendering glitches on Meta Quest browsers
Replace camera reference comparison with view matrix eye detection
for more reliable left/right eye identification. Recent Quest Browser
updates (Chromium 138/140, Horizon OS v83) changed WebXR multiview
behavior, causing the previous xrCamera.cameras[0]/[1] comparison
to fail intermittently on the left eye.

The new approach uses activeCamera.matrixWorldInverse.elements[12]
(the X translation in the view matrix) which reliably indicates:
- Negative value = left eye
- Positive value = right eye

This method is consistent across both Quest Browser and Safari/VisionOS.

Also adds explicit video texture synchronization in the render loop
to prevent timing-related glitches.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 18:20:13 -06:00
2025-08-01 14:38:42 -05:00
2025-06-04 16:22:25 -05:00
2025-08-01 14:45:12 -05:00
2025-08-01 14:38:42 -05:00

VR180 Web Player

A web-based video player for 180 degree, 3D video.

Got an immersive video you want people to see with the Apple Vision Pro or Meta Quest headsets? Now you can put it on your website just like any other video! People will see the immersive 3D video if they have a capable headset or they'll get a 2D version on other devices.

How to use it

  1. Drop the vr180player directory in the root level of your website.
  2. Link to the player CSS file <link rel="stylesheet" href="vr180player/vr180-player.css">.
  3. Add the player script <script type="module" src="vr180player/vr180-player.js"></script> before the closing body tag.
  4. And use this HTML snippet to embed your video:
<div id="vr-container">
	<video id="vr180" poster="poster.jpg" title="Demo Video" crossOrigin="anonymous" playsinline>
		<source src="sbs-video.mp4" type="video/mp4">
	</video>
</div>

How it works

When the webpage loads, the video file is embeded normally, with a play button positioned over the poster frame. When the user clicks play, the player script checks if navigator.xr exists. If it does, a VR experience is initiated. If not, it builds a rectilinear, 2D view of your video and plays it that way.

VR on Apple Vision Pro vr

2D in Safari on Mac

You can drag the 2D video around to see things outside the frame. 2d

Video Format

The player only supports 2:1, side-by-side video using either H.264 or HEVC in an mp4 file. It does not support over-under, MV-HEVC, APMP, or .aivu.

Support

I'm not a developer and I might not be able to help you if you run into problems, want to customize this, or add new features (not that I won't try). I'm releasing this with the unlicense so you're free to do anything at all with it. That said, if you have ideas or want to contribute code, I'd love to hear from you.

Demo

Test it out! Open https://verdi.github.io/VR180-Web-Player/ in a browser on your headset (or another device). Or check out this short film I made -> Blandscape

Description
No description provided
Readme Unlicense 246 MiB
Languages
TypeScript 68.7%
JavaScript 23%
CSS 6.2%
HTML 2.1%