Call for Collaboration between Web3D Consortium and Browser Vendors

About a week ago, a question was posed on the X3D-Public mailing list: "Is Web3D beyond its infancy?". The following is my belated response.

I'd like to answer this question from the point of view of someone who is very new to the X3D community.

In terms of technology I don't think it's fair to say Web3D is in its infancy, it's very mature by software timescales. X3D is an ISO standard with multiple implementations and has a good pedigree.

However, in terms of adoption I think X3D is very much in its infancy. The truth is, I've been interested in X3D for about 5 years and in that time I've not come across a single person who isn't a software engineer who has an X3D browser installed on their computer. Why is this?! People have Flash, Java and PDF plugins in their browsers, they even have limited support for SVG, but not X3D.

In my opinion, it has very little to do with how good the technology is. There are only two ways I can think of to raise X3D adoption significantly. One is the egg, and one is the chicken.

  1. A killer Web3D app.
  2. Collaboration with browser vendors (by browser vendors I mean Microsoft, Mozilla, Apple, Google etc.) to get native support for X3D into existing web browsers

I'm sure that many members of the Web3D consortium are trying very hard on number 1 (Vivaty for example), but who is working on number 2?

Samuel Degrande touched on this in the thread [on the Web3D mailing list] about Khronos' new initiatitve to create a standard for accelerated 3D on the web. He said "the ultimate choice would be to have a native 3D renderer, just as SVG is natively embedded in Gecko".

I think there's an important lesson to learn from SVG here. SVG support is slowly getting native support in Gecko and Webkit based browsers, but unfortunately the demand isn't really there. In the case of SVG, a proprietary alternative (namely Flash) got there first. Flash is not only widely used for 2D vector graphics, but is also used for embedding video in web pages. Proprietary solutions – 2, web standards – nil.

There are many competitors to X3D out there for interactive 3D graphics on the web. Third party 3D engines for Flash, direct use of Java3D in an applet, Acrobat3D, a possible Canvas3D element in HTML5, Khronos' new initiative, a significant other I know of going on behind closed doors and lots of proprietary gaming plugins.

The one thing all the competitors seem to have in common (please correct me if I'm wrong) is that they use an imperative approach rather than the declarative approach taken by X3D. The XML-based solution implemented by X3D seems to me to fit much better with the architecture of the web. (The exception is that X3D has presentation and logic mixed in with content, whereas best practices have emerged on the web which create a clear separation between data, logic and presentation – namely XHTML, ECMAScript and CSS).

Many competing solutions take the approach of creating a JavaScript API which (to my untrained eye) looks very much like a slightly higher level abstraction of OpenGL! If you're going to bother creating a high level graphics language, then it seems much more worthwhile creating a declarative approach which operates in the descriptive realm of the content creator rather than the logical realm of the software engineer.

So what do you think? Should there be a "Mozilla X3D" or "Webkit X3D" project? I think such a project would massively increase the chances of X3D beating a proprietary competitor to the post.

I'm not sure which will come first on the 3D web – the chicken or the egg – but what I do know is that the chances of either coming about are greatly increased by the existence of the other.

Leave a Reply

Your email address will not be published. Required fields are marked *