RIA Trends: 3D on the Web
3D is on a rise lately as Hollywood begins to embrace it more and more. Of course whether it is used as a gimmick or it actually adds depth to the film depends on the film in question.
On the other hand 3D gaming has been on the rise for over a decade, and by now is pretty much the definition of a PC or console game. The fact that a computer game is 3D is pretty much taken for granted — this is not to say that 2D games do not exist or are in any way inferior.
3D vs 3D
There are two different contexts in which we can speak of 3D content. The first is in the sense of 3D films such as Avatar, while the other is 3D animations such as Toy Story 1 and 2. Gaming is has been rendered in 3D for a long time, however recently stereoscopic games are becoming popular.
Of course there is a huge difference in what 3D means in both these cases. In 3D Gaming, 3D means, an illusion of depth, where the scenes on screen are rendered by manipulating virtual objects in three dimensions.
For 3D movies such as Avatar it means capturing stereoscopic video (separate video angles for the right and left eye), such that you actually feel that objects and scenes are popping into or out of the screen. (How 3D TV works: Part 1 & Part II)
A lot of applications that used to be desktop-only, from word processors to audio / video editors have not moved to the cloud, but editing 3D content on the web still remains under-explored, there are innovative products such as Autodesk HomeStyler, (previously Autodesk Dragonfly), however true-3D rendering still hasn’t taken off.
Why so? Websites have to run on all kinds of computers, from cheap low-powered mobile phones to high-end workstations, and as such must be designed for the lowest common denominator. The range in graphics acceleration is too wide currently that while there may be some people who have multiple high-end graphics cards, the other might have a simple netbook with shared graphics RAM, and a graphics core such as the Intel GMA900 with a pixel fill rate of 1332 megapixels per second, to a GeForce GTX 480 with 33600 megapixels per second. The CPU can be orders of magnitude slower than the GPU when comes to kind of tasks the GPU is used for, and as such is usually not a suitable replacement of fallback.
Recent trends show an increasing number of devices shipping with a dedicated GPU, such that soon this lowest common denominator will include some form of graphics acceleration chipset, as these are making their way not only into cheap laptops and a desktops but even mobile phones. The time is coming when graphics acceleration will become as ubiquitous as full color displays are now. Just in time new web technologies for 3D content are coming about.
The next step to rich 3D content on the web is hardware acceleration of 3D content in the browser itself. To this end, an effort called WebGL is underway that will standardize 3D content in HTML and JavaScript. It adds a 3D context to the HTML Canvas element such that high-performance rendered 3D content can be displayed within the browser itself. If you have a beta version of Firefox 4 or Google Chrome, you will be able to see just what is possible in the browser by checking out these demos.
If you have checked out Microsoft’s Internet Explorer 9 Test Drive demo: FishIETank you will instantly recognize WebGL aquarium which takes the same concept of fishes in a tank to 3D with a 3D scene having Fishing floating in a spherical glass bowl, while the view itself rotates around the scene. In this demo we were able to go as far as a 1000 fishes without the frame-rate falling below 24fps. On the other hand the FishIETank demo which is a 2D canvas demo drops below 20fps with the same number of fishes.
The WebGL effort is being managed by the Khronis Group, which is also responsible for OpenGL, and is in fact based on OpenFL ES 2.0 itself. Since OpenGL ES 2.0 is finding its way in a greater number of hardware devices, WebGL can be supported on mobile devices as well.
Another technology for 3D on the web, that is quite popular is Unity3D, which provides content creators an authoring tool for 3D content as well as a plugin for browsers. While Unity is supported on Windows, Mac OSX, and devices such as Wii, and iPhone / iPad, it is not not fully cross-platform as it is not supported on Linux.
Recently Adobe too has jumped fully into 3D by announcing that an upcoming future version of Flash Player will include an API for using a system’s hardware 3D acceleration capabilities. The new API’s code named “Molehill” will give low-level access to hardware such that games and applications built using “Molehill” will be orders of magnitude richer and faster than those built with Flash Player 10’s “3D” capabilities. Since Flash Player is available for all major platforms, Windows, Linux and Mac OSX, as well as an increasing number of devices it promises to be more cross-platform-ready than Unity, but perhaps not as much as WebGL can be. One advantage Unity has compared to WebGL and Adobe Flash, is that it is available right now.
The future of the web is sure to be more immersive, with richer hardware-rendered content, more powerful applications, and browser games which come closer to the games of today rather than those of a decade ago. However 3D on the web is not here yet, and is still a few crucial years away richer runtimes emerge, and WebGL capable browsers reach the masses.