I worked on a WebVR tool called Patches with some kick-ass ex-demosceners based in Helsinki. We used Three.js under the hood. Then we did something else using React VR / React 360. Then a 3D WebGL game using AFrame. Three.js ends up in the internals of all these because it abstracts WebGL pretty well.
It’s complex and time-consuming to produce WebVR. It’s good for weird, and weird is somewhat easier to make on it, especially with custom shaders and to work on a specific device. In fact VR is a good medium for digital art on its own, gives you a sense of having been somewhere (as opposed to having seen something). It’s a fun medium to work with if you’re not trying to get anywhere fast. The “Vaporwave” aesthetic isn’t compulsory, maybe it just lends itself readily to the medium. 3D sound is a bit hard to do, and doesn’t sound too nice until you can get to the actual audio graph under the hood and aggressively reconfigure panning and dynamics.
It’s a “game programming minus minus” of sorts, with the browser being a huge framework and the language being fixed to Javascript. The WebVR dev process is riddled with bugs, device inconsistencies, browser issues, etc. Optimisation is key and it ends up requiring you to have intimate knowledge of both CGI tools and 3D math, in addition to demanding a fast machine from the viewer (mostly desktop class and mostly Windows). Finished pieces end up being rather large and for say physics-based motion, you’d have to wait for tens-hundreds of MB to fully load before you can start playback. All become arguments against WebVR and for shipping native code through e.g. Steam or Oculus, or for doing it all in Unity.
Learning pathway is steep, for WebVR you need:
- Javascript
- CGI basic scene knowledge (models, materials, mapping, lights, camera)
- Three.js or AFrame knowledge (how to construct the above)
- 3D math for transformations (Vec3, Euler, Quaternion, Matrix)
- Shader knowledge
- Blender or another CGI tool for modelling (or fixing third-party models)
- An image editor for textures
- ? for paths and animation
- web audio graph nodes for sound (no algo reverb, but you can construct your own:)