VRML and X3D don’t suck. If we don’t get that, we suck.

Posted on November 15th 2006 • Permalink


There has been a lot of discussion comparing VRML/X3D to Second Life (SL) and MMORPG such as World of Warcraft (WOW). To some it appears that X3D is simply too difficult to use and the money is going to be made in SL or similar “user friendly environment” that are focused on social spaces and shared worlds. The argument further goes that building behaviors and hacking geometry in VRML/X3D are too difficult for mass market use.


I agree that working in the vertex economy is not as productive as working in the scene economy.  I don’t think the situation is as bad as we may think but I defer that topic to later in this blog.

Regarding social worlds and X3D, it seems to me the right thing to do right now is ask how H-Anim and NetworkSensor are going to interact and how one creates messages among them.

Designing a behavior language is fairly straightforward *once you define the level of abstraction*.  Welcome to domain specificity.  This problem has been solved dozens of times since Logo.  Now ‘moveTo’ or ‘walkTo’ or ‘flyTo’? Does this behavior apply to an ‘object’, a ‘tank’, a ‘human’ or a ‘gazorpFromGazeek’? Will you implement this as ‘objects passing standard messages’ or ‘scriptable API calls’?

As early VRML developers, we proposed again and again that an author-  friendly High Level Language for Reactive Behaviors be specified.  The closest we ever got to having this was the submission from Microsoft for VRML 2.0.  It was soundly rejected in favor of the Moving Worlds(?) proposal which was the basis for VRML97 which is the basis for X3D. Some of us worked on the Human Markup Language project at OASIS but that was not promoted as a virtual character language; it became a project for describing political negotiations and has died of neglect.  That was a much tougher problem than making a language from which gestures for avatars can be derived for multiple cultures.

Trying to create generalized languages that do too much rather than focusing on a narrow but achieveable application is the most common way such projects do fail.  This is the Scylla and Charibis of language design:  too simple and it takes too much scripting to do interesting work.  Look at HTML squarely and tell me it is an interesting language without JavaScript and CSS to do the heavy lifting.  On the other hand, the one constant in my VRML work of late has been how often I tried to create an effect through intricate scripting only to discover that the right combinations of sensors and fields in the language already do that.

I get up every day to wash the feet of the KISS gods and watch them wag their pointy tongues at me laughing.

Some say X3D/VRML is too general.  I don’t because I’ve built enough with it to see that it is in the sweet spot of the learning curve.  It is hard initially but the basis in geometry, interpolated engines, and a scene graph or network for passing event values is just flexible enough to do hard things and easy things.  Graphics are not easy and never will be when one is working with indexed face sets and scripting, but this is the cost of having a language that one can apply repeatedly to different tasks. 

The success we see in any one application such as SL or WOW we see repeated in many applications using X3D and without having to rent space on a privately owned server farm or learn technology that can only be applied on that server farm.  So observably, X3D gets the level of abstraction right even with the learning curve.  I’d rather climb that hill once and get the power where I need it then have to climb dozens of hills that all look alike but do simple things differently.

X3D/VRML for multi-user worlds isn’t dead yet.  As Eric Maranne notes, the VR market is really only now beginning to emerge commercially and it is too early to pronounce one application the winner and another the loser.  I don’t think real-time 3D when applied to virtual reality or simulation or training or real world mapping shakes out to be a single market with a single application language unless that language is standard, unencumbered and powerful. 

There are things I note that make me confident that ISO X3D is the right standard for 3D on the web and that the 3D revolution has come.

  1. Note Kurt Cagle’s xml.com article on JSON.  Note that he is providing an example of a game object message.  That’s a clue about what he and others are thinking.  Kurt was a member of the HUML Working Group at OASIS.  I suspect there are those outside this list working on a prize of such a messaging standard.  Will they apply that to Second Life?  Could they?  Kurt is thinking about X3D as he chats with Mark Pesce and others. People in the XML community who have historically kept 3D graphics at arms length are warming up to X3D now that they see more successful 3D projects.  In this case, Second Life is the best thing that could happen to 3D on the web and X3D in particular.  It validates one segment of a fast growing market, but only one.
  2. X3D is still the ISO standard for real time 3D on the web.  You undervalue that and as a result, you don’t take advantage of what momentum you can build with that advantage.
  3. VRML and X3D have been picked up by government agencies.  That won’t last if there aren’t good results quick.  Developers who focus on VR get this and they are successfully selling product, not vertices and syntax to these agencies.

Can we make X3D easier?  Certainly.  Actually, some already have.

If you want a high level building language built over VRML/X3D, you must have a library of VRML/X3D objects that support a network API such that dragging and dropping objects into scenes is fast and painless.  If you spend a little time Googling for proto libraries, you discover there are some excellent open resources for these libraries.  People like Eric Maranne, Cecile Muller, Braden McDaniel, Herbert Stocker and others have been creating and releasing these for years.  It is very easy to put together a scene with simulated day and night, follower objects, shooting stars, GPS metadata and a lot more.  The more professional open code we have, the faster we can build and as one who had been at this as a hobbyist since VRML’s salad days, compared to where we were when VRML was The Winner, the available free libraries are far more extraordinary and provide more than enough to build compelling 3D worlds.

I’ve been saying this for so many years now that it feels like a rant but it is the reality of the marketplace:

ANY SINGLE COMPANY UNDER A SINGLE MANAGEMENT USING A PROPRIETARY TECHNOLOGY AND THEIR OWN SERVER FARM CAN MOVE FASTER THAN YOU CAN.

No coordination problems; just design, code, release and debug.  It works for Second Life for the same reason it works for Microsoft.

BUT NO SMART AGENCY OR COMPANY RENTS THESE FOR VERY LONG IF IT THREATENS THE SECURITY OF THEIR OWN COMMUNICATIONS.

You would be stupid as a cow to host your design world communications in Second Life.  Those server and chat logs are gold.  How are they protected?  That doesn’t mean some companies won’t do it.  It means they will have second thoughts about their second lives once the first disgruntled employee or clever hacker pilfers those logs.

The success of Second Life IS about presence, yes, but people gather in communities for lots of reasons.  Identify more reasons that people get together to chat or do other things at a distance where presence improves the communication and build for that, but before you spend too much time on designing a behavior language, pick exactly the right level of specificity. We tackled this problem in HUML and discovered it isn’t trivial. You either take a Gencode approach (HTML is a GenCode) and keep adding nouns and verbs, or you take an abstract class approach. Remember, XML is not really an extensible language.  It is a means to create languages.  Full stop.

One last thing:  as a professional musician who has spent a lifetime in one band after another, it’s my experience that spending too much time worried about the success of others is deadly bad juju.  It’s ok to be enamored of the success of other bands if it makes you competitive.  That is the right thing to feel.  OTOH, if all it results in is sitting around the studio whining and carping about why their band has gigs and your band doesn’t, it is more than a waste of time. It rots the very morale of a band from the inside out.  You don’t pick material, you don’t rehearse, you don’t write, you don’t record.  You just whine.  At the next awards ceremony, you aren’t even invited.

You have more advantages in this market than you will be led to believe by the press or your competitors.  You forfeit them by doing nothing.  A band that does that does suck. 

There is incredibly stunning VRML and X3D out there and this community built it.  I am in utter awe of the VRML and X3D code I find out there ready to be used just for the acknowledgement of the person who wrote it. I don’t understand people who don’t get that and I never will.  VRML and X3D don’t suck.  They are marvelous.  If we don’t get that, we suck.