Ask HN: 3D Websites?
Well, it kind of depends on what you mean by &quot;3D website&quot;.<p>There are CSS 3D transforms that you can apply to elements. Some people use them sparingly to give some visual relief to otherwise 2D UIs. Some people have exploited them to make full 3D environments: <a href="https:&#x2F;&#x2F;pantel.is&#x2F;projects&#x2F;css3d&#x2F;" rel="nofollow">https:&#x2F;&#x2F;pantel.is&#x2F;projects&#x2F;css3d&#x2F;</a><p>There are WebGL websites that people have built that use 3D as their main representation, like this famous resume site: <a href="https:&#x2F;&#x2F;bruno-simon.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;bruno-simon.com&#x2F;</a><p>And then there are WebXR (<a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;WebXR" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;WebXR</a>) applications. The WebXR API gives WebGL applications access to be able to render on VR headsets [0], AR headsets [1], or smartphones with AR capability [2].<p>Most often, these sorts of sites are built using a 3D rendering library like Three.js or Babylon.js.<p>I myself build a WebXR app at work. I work for a foreign language instruction company. We have our own VR training environment for students to practice speaking with their instructors in different cultural and role-play settings. There are some WebXR games out there, if you search [3]. And there are a few VR chat environments, like Mozilla Hubs.<p>To be completely honest, I struggle to call these things &quot;3D&#x2F;VR Websites&quot;, because they take exclusive control of the user&#x27;s view and require the developer to completely define 100% of the interactions available in the application.<p>It&#x27;d be like if all we had for the 2D Web was HTML5 Canvas and you had to figure out on your own how to draw all your text blocks, links, buttons, etc., and how to wire up mouse and keyboard events to interact with those elements. There&#x27;s no multitasking. There&#x27;s no linking between sites&#x2F;apps while remaining in immersive mode.<p>They&#x27;re really more like games that happen to run in the browser environment. They aren&#x27;t built anything like websites, other than the tertiary fact that you&#x27;re programming them in JavaScript. These are all &quot;XR on the Web&quot;. Not &quot;the Web in XR&quot;.<p>A Web browser in an XR world needs to be a windowless system for loading 3D assets into the user&#x27;s home space. Those elements would be declaratively coded. There&#x27;d be a rich set of behaviors codified by different types of elements. Not every application needs to be innovating on interactions. A calculator app should probably just be a grid of buttons and a display. The developer should not have to know if the user is using a controller or hand tracking. The interactions should be baked into the OS.<p>And it needs to be a single standard, that multiple browsers implement, like HTML. There are app frameworks like A-Frame and React VR that provide a declarative, HTML-like syntax for building XR apps. But again, there is still the issue of being exclusive-mode and defining all interactions, even if some of the interactions are provided for you by 3rd party scripts. It needs to be a part of the runtime environment already, because it needs to already be on the user&#x27;s device.<p>Users and developers need to be able to rely on there being a single, shared UI metaphor. We don&#x27;t have to relearn how to use the mouse on every 2D website, or what buttons and textboxes look like, or how keyboards behave.<p>X3D, the successor to VRML, was kind of an attempt at doing this. I have not been able to find any meaningful updates from the X3D project since 2015. There was some discussion on potentially making it possible to render DOM elements in WebXR (though it has stalled for a few years now). There are some &quot;alternatives to the browser&quot; platforms like JanusVR that attempt to make a Web-like experience through their own application. But there is really nothing that integrates with the user&#x27;s system quite the same way that the 2D web integrates with our 2D GUI systems.<p>So the answer is: the enabling tech just doesn&#x27;t exist yet. I&#x27;ve been developing VR apps for the Web for 8 years now (yes, even predating the WebVR API that predated WebXR). It&#x27;s only been within the last 4 years of those years that WebXR was a reliable target for <i>any</i> platform. It&#x27;s only been within the last 3 to 6 months that one could reasonably expect to be able to run WebXR apps on <i>all</i> currently available VR headsets. Mozilla dropped the ball with WebXR support in Firefox almost 3 years ago now, leaving it in a nearly completely broken state. Google has only put their own efforts into desktop VR support, though I don&#x27;t know how much they really do anymore beyond upstreaming contributions from Microsoft. Meta was the only company putting significant effort into a browser for standalone VR headsets (they have a Chromium-based browser on Quest and Quest 2), but recently a company from Spain called Igalia forked Firefox and created Wolvic, finally fixing the issues and bringing it to standalone headsets not owned by Meta. It&#x27;s going to take a while still before we start seeing truly innovative takes on an &quot;XR Web&quot; beyond just &quot;make the basic capabilities available&quot;.<p>[0] Between Google Chrome and Igalia Wolvic, almost every VR headset currently on the market has some degree of WebXR support.<p>[1] Well, last time I checked, it was only the HoloLens 2. I had heard from someone that maybe the Magic Leap One could, as well, but I sold mine on eBay a few years ago, and it was not possible by that point, so I don&#x27;t know.<p>[2] Eeeeh, it&#x27;s pretty much just Google Chrome on Android devices, though there is some speculation that Safari might receive the ability on iOS devices sometime soon.<p>[3] I&#x27;m not going to link to any of them. Honestly, I&#x27;ve tried a bunch and they&#x27;re mostly all crap.