I'm pretty excited by the Khronos announcement today. We've been experimenting with bringing 3D capabilities to the web for some time now, in the form of Canvas 3D, an experimental binding of an OpenGL subset to a HTML5 Canvas context. This work has been going off and on for the past while, mainly as a side project of mine.
For a number of reasons, I think now is the time to bring this out into a wider audience, and to figure out what an initial take of 3D on the web should look like. First, the intense focus on Javascript performance over the past year has seen tremendous improvements across all browsers. Raw language performance is getting to the point where it can keep up with the raw computational requirements of 3D. It will only continue to improve, spurred on by 3D and other use cases. Second, the hardware required for accelerated 3D is becoming pervasive; hardly any desktop computer ships without some form of hardware acceleration, and the latest crop of smartphones almost uniformly have at least OpenGL ES 1.1, if not 2.0 available. Starting this work now ensures that a standard will be ready when web developers want to take advantage of the capabilities available in hardware.
Finally, people are doing more and more on the web, and are coming to expect more from the applications that they use. Web applications already have access to features that have traditionally been reserved for desktop apps, including being able to work while offline, storing data locally, multiple choices for 2D graphics, and native audio & video support. Adding 3D to this mix ensures that current web apps can experiment with new user experiences, while also enabling new classes of web applications.
26 Comments to “3D on the Web: It’s Go Time”
- 1 Pingback on Mar 24th, 2009 at 1:00 pm
- 2 Pingback on Mar 24th, 2009 at 2:50 pm
- 3 Pingback on Mar 24th, 2009 at 10:41 pm
- 4 Pingback on Mar 25th, 2009 at 4:23 am
- 5 Pingback on Mar 25th, 2009 at 6:02 am
- 6 Pingback on Mar 25th, 2009 at 8:59 am
- 7 Pingback on Mar 25th, 2009 at 10:11 am
- 8 Pingback on Mar 25th, 2009 at 2:53 pm
- 9 Pingback on Mar 25th, 2009 at 4:23 pm
- 10 Pingback on Mar 26th, 2009 at 4:36 am
- 11 Pingback on Mar 26th, 2009 at 6:29 am
- 12 Pingback on Mar 26th, 2009 at 7:23 am
- 13 Pingback on Mar 26th, 2009 at 2:21 pm
- 14 Pingback on Mar 26th, 2009 at 11:01 pm
- 15 Pingback on Mar 27th, 2009 at 10:00 am
Finally! I was really afraid that this had gone the way of the Dodo. Question is: when can we expect to see this in nightly buidls and/or your experimental extension updated? I loved working with it when it came out and actually used it a few times but when there didn’t appear to be any updates any more I turned my attention to software rendering (also through canvas) again.
It’s not just about websites. Canvas3D actually makes for a great application development experience when hosted (via -chrome) inside a local Firefox (beta) installation.
So, is there any schedule for this yet? Maybe an addon for 3.5 and a planned release with 4.0?
Oh and have you talked to Chris Double yet about using the same code base for video scaling?
And finally, what will the fallback behaviour be? Will Firefox have a OpenGL ES software implementation included for systems without acceleration?
Well, Christopher’s post pretty much answered the schedule question :)
I’ve also been watching the 3D Canvas work and looking forward to it appearing. How we can utilize the access to the 3D hardware for video is also something I’m very interested in (as Hans mentions :-)
Cool stuff! Have you thought at all about exposing OpenCL also?
@cdouble:
For example if the gst/dshow backend is ready, we can deal with nearly all the video types.
This canvas 3D approach may help the video scaling, but how about the alpha-blending with other contents on the web page?If user wanna customize the UI themselves, that would be the key point right?
@vlad:
What’s the relationship between canvas 3D and 3D for the whole mozilla platform?
Thanks!
@vlad
The standard for 3D on the web is X3D – an XML based format. X3D supports animation, interactivity, scripting, extensibility, and a whole lot more, so it does everything you want it to do. Also, it’s been standardized, the specification and schema are published freely online, it has an active working group, and it is in version 3.2 (at the time I’m writing this), so it’s been well vetted. X3D currently requires a browser plugin (or standalone player); however, I’m sure that they would love to get native browser support. Also, there are already some open source implementations of X3D.
Email me if you want more information (there is a bunch of online documentation and videos describing the spec).
No Need To Recreate The Wheel,
Joshua Burkholder
How to deal with the IE6 majority?
@joshua I think you have the wrong idea about this; there’s no wheel-reinventing here. X3D is a model file format and scene graph, while OpenGL is a rendering API. OpenGL isn’t a competitor to X3D at all, it’s a *way of implementing* X3D. COLLADA would be Khronos’s X3D competitor, but nobody is suggesting to build COLLADA support into browsers (or X3D support for that matter).
Once OpenGL is built into browsers via the Canvas element someone can write a Javascript X3D library and you’ll have X3D support with no plugin. Won’t that be cool?
I don’t understand why you would expose the low level rendering API of OpenGL when the first thing people are going to want to do is draw Boxes and Cones and Spheres and then you need to add in things like the GLUT (?) extensions.
X3D abstracts away from those low level bindings, but sure you can still draw TriangleStripSets and the like if you need to.
But X3D gives you so much more with sound and text fonts and …
Why didn’t you just pick up something like OpenVRML or FreeWRL and integrate those directly into your web browser?
Oh, and DirectX was the OpenGL/Khronos competitor no? Presumably Collada builds on top of DirectX or OpenGL.
A javascript library to render X3D using the mozilla exposed OpenGL bindings ? That would be one hell of a download!
If you’ve ever tried to download Xj3D as a java applet, that can take 5 minutes already, and thats byte compiled.
doobs wrote “But X3D gives you so much more with sound and text fonts and …”
That kind of spec bloat is exactly why it isn’t appropriate for basic browser capabilities. It is better to provide the fundamental rendering capabilities that enable people to build libraries on top of it, especially since there are a lot of us who want to build 3D apps without the baggage of VRML/X3D.
In my opinion (http://bitsofmymind.com/permalink/2009/5/5/a-restful-3d-web#content) it would be wrongful to use JavaScript to render 3D. As much as everyone likes the language, its purpose is to add interactivity, not to render representations. If you think about it, X3D is to 3D what HTML, CSS and SVG are to 2D; X3D is a natural progression and it should not be treated differently than HTML, would you build an API to render text and images on the Web? Obviously not, the browser interpreting the HTML does that for you and makes the building of web pages a whole lot easier (provided you know HTML).
The declarativity of those languages is the reason the the Web is so simple and yet so useful. When Dr. Fielding (creator of HTTP) formulated the REST architecture (onto which the Web works), it was a tentative to prevent the Web from turning into just another inconsistent pile of APIs, libraries and programs, like the software world generally is; the web we use today is testament to this sucess.