State Of X3D For The Web Browser Today

While researching trying to find a good software to recommend for X3D on the web, I came to the sad conclusion that most of the solutions, that initially were available, are in fact unavailable or have stopped their development.

We have come to the paradox that VRML has more effective software available than X3D.

As I plan to run a X3D course in the classic VRML encoding course in this site, I needed 2 kind of tools:

- One of standalone visualization, and debugging and easy error fixing in our files, that will most likely be Xj3D, because it gives very understandable error messages and has a strict syntax tolerance.

- Another to visualize the contents of a X3D file embedded in a web page. The reason to this is that Xj3D has not a browser plugin.

The problem comes with the last, as there is no decent X3D browser plugin, it seems. All of them have some probem.

For example:

Octaga:  works great but shows a giant logo in a corner. Your visitors will have to buy the software to remove it, although it is not expensive (50 euro), but most of them won't do it, as browser plugins are universally conceived as free (do you imagine paying to see Flash content?), so your visitors will have a frustrating experience.

BSContact: The same as Octaga, but this time they ask you 300-2000 euro depending on the license type, which is exaggerated.

Xj3D: As said, it is a standalone, no plugin, application. There's an applet version that is rather buggy and no help docs. Passing urls from the browser to the application seems not easy, Firefox doesn't pass them.

Vivaty: Many people did not realize that it was a good browser plugin and just used it for Facebook. It was fast. Their shadow engine was not so good as BSContact or Octaga, but was quite cool. Unfortnatelly, Vivaty closed down, so this player may not be available soon. There is still hope that someone buys the code and makes a freely available X3D plugin, with no disturbing logos.

Cortona: Can't display X3D, just some nodes. Works great, although a bit slow, but only with VRML.

Instant Player: Has a plugin that hangs Firefox when you change of tab or refresh the screen. The plugin project was abandoned by the institution behind Instantreality. Can run a link in standalone when clicked in Firefox, although it's a little slow to open, because Instant Player is a heavy application.

FreeWRL: Recently, the project was abandoned. Anyway it had no browser plugin.

Kambi's View3DScene: Can open a X3D file when a link is clicked, not in the page but in a standalone window. It works great and has fantastic graphic possibilities, shaders and many custom nodes that can make awesome sceneries. The only drawback is the lack of sound. We hope they add it soon.

As things are now, there are still solutions, that may happen or not:

  • Kamburelis, the developer of View3DScene, may consider the addition of sound if he gets enough test cases for sound nodes (this is, worlds made in VRML or X3D using sound nodes) to include in his test suite. I plan to contribute making some. May be the best solution for now, at least it is easy to trigger into Firefox or IE.
  • The makers of BSContact or Octaga get enlightened and remove the horrible logo, getting thousands of visitors and becoming a standard de-facto plugin like Blaxxun did for some time.
  • The makers of Xj3D develop a browser plugin bridge, that embeds a java window inside the web page, maybe using JavaFX.
  • Cortona adds support for X3D.

This is the situation, and the paradox. Making something with VRML may be more visible to web users than making it with X3D.

I think this is more a marketing and planning failure than a development or technical failure. If X3D had been called VRML 3.0, many of the developers of the past had just upgraded their software and allow more or less powerful  solutions. But they have perceived it as a different thing, just as many web users, and considered VRML 2.0 too old (who in earth had the idea to call it VRML97 ?) and X3D a not enough widespread thing.

-Jordi R. Cardona-


© 2008 by Jordi R. Cardona. Link to this post without copying the text.

If you liked this post, get updates of Hiperia3D News for FREE

11 comments

Ange Zanetti said...

Maybe it's time to switch to Unity3D or WebGL ? :)

Jordi R Cardona said...

Maybe, anyway Unity3D is not an open standard, but I like it very much. One can do things in all those systems. WebGL is a low level api, not too low anyway but not a high level descriptive language.

X3D had serious advantages for web designers and public in general, but they are in fact letting it die.

I think I will focus on building and modeling and recommend everyone do the same, not focus in any particular discipline of implementation, let it be VRML, X3D, Flash, WebGL or Unity.
No one knows what future will be.

mcfly said...

I like the fact that with vrml and x3d you can look at the code in notepad, and mix it up with html, the 2d layout of the page. But it needs more sample codes like in javascript: things like browser detection, loading bars, rollover highlights. I am super impressed by recent projects in VRML/x3d: www.leelh.com. Thats fully realized!

Jordi R Cardona said...

Yes I like it too, but I also would like to hide my code if I want. X3D was going to make it possible through the binary encoding (and also allow more powerful and big sceneries) but it is almost abandoned :(

What is www.leelh.com? Looks good. What is the play of VRML or X3D there?

mcfly said...

Thats too bad. Thats right, since x3d doesn't have binary encoding, one may as well return to embedding VRML .wrl files. Without binary encoding a small scene can be a big file.
I find it fun to open VRML code in notepad and do
little tweaks: move stuff around etc.
leelh uses BS Contact (without a logo!). Besides
the fact that it uses a vrml browser, its just
a very good and interesting MMO. I had to cruise the site with a french-english dictionary.

Jordi R Cardona said...

It has binary encoding, there are convertors, but was I meant was that it was said that binary could also add encryption but I saw no efforts on this.

You may be meaning compressed, and yes, X3D can be compressed, just they say you must use the gz extension .wrl.gz, or .x3dv.gz Something horrible, though.

I will have a lok to leelh, it looks good!

Michalis said...

As for "hiding" your X3D content: I don't think this will be possible ever. X3D browser must be able to read actual nodes and fields, which means that it must be able to decode the file (from X3D binary encoding, from any sort of PGP encryption etc.).

In other words, any browser that can *display* X3D (encoded in any way) must be also able to convert the file to e.g. unencrypted X3D in classic encoding. It has all the information.

This "inabiliy to hide" is very connected with the major X3D strength --- that it's a nice, declarative language, so you can edit your X3D content and save it back into X3D. You could convert X3D to something more cryptic, like a series of OpenGL commands, but then you loose the ability to comfortably edit your content.

This is the same problem many programming languages have, where you distribute the source code of your script (JavaScript) or something that can be disassembled into readable form (Java butecode). The typical solution is obfuscation.

Jordi R Cardona said...

Some companies made it possible. Bitmanagement and Cortona have applications for encryption of VRML files so no one may be able to open them.
But they are really expensive and force you to use their viewer.
Some free solution may have boosted the propagation of X3D enormously.

This keeps good modelers away from X3D for the web. No one wants their work of months to be robbed by some student for their university end of studies project, or for a local business page, like happened to me several times.

Being able to close your code from the eyes of undesirable people is always an advantage. You can always share with friends, make tutorials, or show your code.
I learned a lot from tutorials, and almost nothing from other people's code.

Michalis said...

Hm, I was reading about the "BS Encrypt" solution on http://www.bitmanagement.com/en/products/authoring-tools/bs-encrypt . Looks like this relies on a license file, that (together with resource URL) contains a decryption key.

Which means that if I know original URL of the file, and I have the license file (which I can probably download from appropriate location, pretending to be a BS Contact viewer), then I can decrypt your X3D file and do with it whatever I like.

To counter this, they probably embed another necessary decryption key part inside their software. This makes the security solid, but it also makes it limited to the only one closed-source producer.

So, inherently, you cannot make this open-source. You cannot even make it closed-source across more than one viewer...

Obfuscation seems to me the only choice if you want real cross-browser security. It's not easy, but it could be implemented open-source as well (not that I promise to implement it myself soon :)

Michalis said...

(P.S. to my last post: I wrote "makes the security solid" --- of course as long as noone hacks BS Contact executable to extract their secret bit.

P.S.2: Disclamer: I didn't actually use "BS Encrypt", and my understanding about their approach may be wrong. You're welcome to prove me wrong :)

However, the key point still stands: software that *renders* your X3D world must have all the information necessary to save it / convert it to unencrypted format.)

Jordi R Cardona said...

Yes Michalis, you are right.

When all this X3D stuff was being done, I saw some suggested that as it's xml, use encryptors for this format and also binary converters, so there's a bigger variety and thus more hard to convert.

Also some solution, not remember if it was Cortona, turned vrml files to another proprietary format so it can't be read easily.

Hacking things is not impossible, but any security is good, because at least people have to do something hard or illegal to break your files, and many just don't do it.

Post a Comment