What is the 3D web?
When you click on the URL for a 3D world in your browser, the world's scene is displayed and becomes explorable in 3-dimensions. This is in contrast to web pages which always remain flat. The experience is much like playing a 3D videogame: the camera moves as you shift perspective, re-rendering the scene with full perspective and lighting 60 times every second. You can interact with the world in real-time, either as a single user or side-by-side with other visitors. An even more immersive experience become possible when using a virtual reality (VR) headset.
How is this different than using a PC to play games?
With PC games you must first visit some game distribution site (e.g., Steam or iTunes) to acquire the game and then wait for the game to download to your PC before you can start experiencing it. By contrast, distributing 3D content directly via the browser offers a more immediate and convenient click-and-play experience. The 3D web takes advantage of the open architecture of the Internet. Instead of content being locked behind proprietary distribution channels, you can freely access 3d content located on any Internet server anywhere in the world. You benefit from open, timely, world-wide access to 3D content, much like what you enjoy today with web pages.
So the 3D Web is just for games?
Not at all. As 3D content becomes progressively easier and less expensive to create, its use will diversify. Imagine the possibilities: architectural and landscape designs, medical imagery, virtual museums, real and imaginary time and place travel adventures, static and animated 3D art and entertainment, online shopping with more realistic, customizeable products viewable from all angles, virtual communities, online training and education, etc.
Hasn't the 3D Web already been attempted?
Yes, it has. Several times, in fact:
- Virtual Reality Markup Language (VRML) (1994). It never took off. Static, low-fi content is not very attractive.
So, the 3D Web is just WebAssembly and WebGL?
Cone's 3D libraries provide built-in support for features typically found in 3D engines, making it possible for 3D worlds to: create 3D objects (including procedural generation), render physically-realistic scenes and heads-up display controls via WebGL, oversee particle motion and rendering, calculate motion and collision physics, animate skeletons, handle user input, networking and timer event communications, and so on.
Specifying 3D content in Cone is like filling out an outline. World parts are modular URL resources, snapped together like toy bricks. Complex behaviors can be facilitated in simple ways using various built-in rules engines.
How are Cone 3D worlds delivered via web browsers?
3D worlds are a combination of Cone programs as well as other assets, such as texture images, sounds, models, etc. The Cone programs are pre-compiled to WebAssembly's wasm files and stored with other assets on the world's server. When a browser is pointed to the URL for a 3D world, the browser automatically loads all necessary assets (just as it does for the 2D web) and then brings the world to life, ready to interact with each user according to its rules.
Why not use 3d engines like Unity, Unreal or Godot for 3D web, rather than Cone?
Several 3D engines, including Unity, support the deployment of 3D content via the browser. Other engines are likely to follow. For example, this Unity-based tank game was ported to WebAssembly.
However, the biggest obstacle to delivering quality 3D web content is the bandwidth limitations of the Internet. These market-leading 3-D engines were built for a dedicated gaming platform, where assets and the runtime are stored locally on a high-capacity, high-speed storage drive. When these assets must be delivered over the typical ADSL connection, load and start-up times will feel like they take forever, even for something as simple as this tank game. Imagine how much worse for a high-quality game...
Success with web-based delivery of 3-D content requires a leaner, more flexible architecture. For one, the runtime and 3D assets need to be as small as possible. To gain significant reductions in asset size while still maintaining visual quality, procedural generation of assets must be far more common and quickly performed. Similarly, rather than expecting all assets to be already available on demand, assets need to be scheduled, streamed and staged even while the user has already started interacting with the already-downloaded portions of the world.
Cone and its 3D libraries are designed to support these lean, just-in-time architectural strategies. Additionally, Cone facilitates the openness of the 3D web (vs. proprietary world), encouraging the use of hyperlinked portals between worlds and modular, cross-domain hyperlinks to sharable content.
Last, but not least, Cone and its libraries are open-source and carry no licensing fees.