Notes on
VRML1, VRML2, and X3D files

including notes
on viewers,
converters,
test/demo files


'whitedune' VRML2 viewer
and editor - GUI interface

Home > RefInfo menu >

Computer topics menu >

Linux Guides/Notes by Blaze menu >

3D Viewers & Converters (on Linux) Intro page >

This VRML1 and VRML2 (and X3D) Notes page

! Note !
More notes on VRML1 , VRML2, and X3D files
may be added --- including notes on software
(viewers, converters, editors) and notes on
the file formats and features ---
if/when I re-visit this page.

< Go to Table of Contents, below. >
(Skip Introduction)

INTRODUCTION :

This page is meant to be a collection place for notes on the VRML1 and VRML2 (and SGI Inventor) file formats --- and the follow-on X3D file format, based on XML.

For a nice introduction to the history of the VRML1 and VRML2 (= VRML97) file formats, you can see the Wikipedia page on VRML.


My background on 3D viewers and converters :
(i.e. foundations of my interest in 3D files like VRML)

I spent about 10 years (about 1995 to 2004) working on SGI (Silicon Graphics) Unix workstations, installing and supporting software for engineering purposes --- especially Finite Element Analysis and for Large Scale Visualization.

About 1993 to 1998 were the 'boom years' for SGI.

During that time, their talented people had come out with the Inventor file format for 3D models --- with lighting and some built-in animation capabilities included in the format specification.

VRML 1 was a subset of the Inventor specification.

In those years working on SGI workstations, I had a few opportunities to try out the SGI Cosmoplayer plug-in for the Netscape web browser --- to see some of the VRML2 file capabilities, including animated files and the ability to 'grab' VRML objects with the mouse and drag them along 'constraint lines'.

I was in a position to get to try out the SGI 'ivview' and 'Cosmoplayer' programs on various demo Inventor and VRML files.

It seemed like there was a lot of potential there --- in the advertising and presentations world, as well as in the engineering world.

Fizzling Out

Unfortunately, that potential seems to have fizzled out.

I think it is partly due to mistakes made in implementing the 'Cosmoplayer' viewer --- only as a web browser plug-in and not as a stand-alone viewer.

One reason the PDF document format 'took off' is because Adobe provided (for free) a stand-alone viewer of PDF files --- as well as PDF-reader plug-ins for web browsers.

SGI should have done the same.

It would have been pretty easy for SGI to 'fork' the Cosmoplayer plug-in to a stand-alone VRML file player program.

Another mistake SGI made is that VRML1 and VRML2 were different --- that is, VRML1 was not a subset of VRML2.

So a VRML2 'player' could not 'play' VRML1 files.

There was a lot of confusion generated because SGI would often use the term VRML when sometimes it was referring to VRML1 format and other times it was referring to the VRML2 format.

People would often use the same file suffix for VRML1 and VRML2 files.

SGI should have made the distinction clearer instead of muddying the waters.

SAD!


In any case:
The following 'Table of Contents' provides links to sections of this page that contain info on VRML1, VRML2, and X3D files.

Instead of using the 'Table of Contents', you can use a 'Find Text in Page' option of your web browser to look for keywords on this page --- such as 'vrml' or 'vrml1' or 'vrml2' or vrml97' or 'wrl'.

TABLE OF CONTENTS :

(links to sections of this page, below)

END of TABLE of CONTENTS.

Start of contents.

VRML1 vs. VRML2 :

< Go to Table of Contents, above. >

There is a site of VRML info, 'VRMLworks', by Bob Crispen, that has been in existence for over 10 years.

It has many dead links to old archival sites of VRML info and files.

Just in case the Crispen site goes dead, I extract and present here a few notes of interest from that site.

Here is a table, from Crispen, summarizing the differing features of the VRML1 and VRML2 file formats.

As Crispen says, ...

"Briefly, VRML 1.0 worlds are static.

VRML 2.0 worlds can move and interact with the visitor to those worlds.

Here's a summary:"

Version Features
VRML 1.0
  • Standard objects (cube, sphere, cone, cylinder, text)
  • Arbitrary objects (surfaces, linesets, pointsets)
  • Ability to fly through, walk through, examine scenes
  • Lights
  • Cameras (viewpoints)
  • Textures on objects
  • Clickable links
  • Define and reuse objects
VRML 2.0

All VRML 1.0 features plus

  • Animated objects
  • Switches
  • Sensors
  • Scripts (Java or JavaScript) for behaviors
  • Interpolators (color, position, orientation, etc.)
  • Extrusions
  • Background colors and textures
  • Sound (.wav and MIDI)
  • Animated textures
  • Event routing
  • Define and reuse objects and behaviors and effectively add new nodes to the language with PROTO and EXTERNPROTO

Although file suffixes for VRML1 and VRML2 files may vary, the first line of VRML1 files will usually look like

#VRML V1.0 ascii

and the first line of VRML2 files will usually look like

#VRML V2.0 utf8

< Go to Table of Contents, above. >

VRML viewers, on Linux
(with sources of installation files) :

< Go to Table of Contents, above. >

Here are some of my notes on 3D VRML viewers that I have installed on Linux (Ubuntu 9.10 or thereafter) :

  • whitedune
    reads newer VRML files ('VRML2' and very specific VRML2-type 'X3D') --- suffix typically '.wrl' or '.x3d'.

    I installed whitedune via the command

    'sudo apt-get install whitedune'

    after getting the hint to do that when I typed the command 'whitedune' at a terminal window prompt.

    'whitedune' is now my default '.wrl' VRML2 (= VRML97) file viewer in my Seamonkey web browser.

    (Details on how this was done are documented on my web page on 3D test/demo files.)

    'whitdune' is actually a VRML2 editor, which makes its interface much more complicated than pure viewers like 'ivview' and 'paraview' and 'g3dviewer' and 'view3dscene', below.

  • ivview
    reads SGI Inventor files [and VRML1 files] --- suffix typically '.iv' [or '.vrml'], but can be anything.

      ('ivview' apparently reads header records to determine if it is reading the right type of file.)

    I installed the 'inventor-clients' Debian package file for Ubuntu that I found at linuxappfinder.com.

    (Some details on these client installs are below.)

    'ivview' is in the inventor-clients package.

    The (old, circa 2003) source for 'ivview' and other clients was available at oss.sgi.com/projects/inventor/.

    Since that site may go dead in the next few years, I have saved a copy of that source on this site, for those who might have the C++ and 3D background to learn from the code or make use of it.

  • paraview
    I installed 'paraview' via a Debian package from packages.ubuntu.com/karmic/paraview.

    The 'paraveiw' File-Open dialog indicated that it would read and view VRML2 files, but I found intermittent problems in reading VRML files, as documented below.

    So 'paraview' has been somewhat of a disappointment for VRML2.

    But 'paraview' reads 'ply' files reliably.

  • 'g3dviewer'
    is available at packages.ubuntu.com/lucid/gd3viewer.

    Ubuntu had 'g3dviewer' version 0.2.99.5 in packages for Ubuntu 10.04 (Lucid) and 10.10 (Maverick), but no 'g3dviewer' for the older Ubuntu 9.10 (Karmic).

    There may be a 'backport' available. But before looking into that, I may try to install the Lucid package on Karmic. [I tried it 2011jan28. It worked.]

    'g3dviewer' is said to read formats handled by LibG3D, which handles file types :

      '.3ds', '.lwo', '.obj', '.dxf', '.md2', '.md3', '.wrl', '.vrml', '.dae' (COLLADA), '.ase' (ASCII Scene Exporter), '.ac' (AC3D)

    some of these being the same formats handled by 'glc_player', which IS available as an Ubuntu Karmic package.

    But 'glc_player' does not read VRML files.

    The 'g3dviewer' home page at automagically.de/g3dviewer/ indicates that the 0.2.99.4 release of this program was in 2006 Nov --- and it appears that there was little activity with the software source for about 4 years.

    However, there is an indication that version 0.2.99.5 was 'accepted' by debian.org from Sven Eckelmann on 2009 Nov 28.

  • Below are some other 3D viewer 'candidates for installation'.

    If I install any of these on a Linux machine, I will move the pertinent info to the list above.

  • 'view3dscene'
    is a 3D file viewer (including VRML1 and VRML2 files).

    'view3dscene' source code is at Freshmeat with installation instructions at vrmlengine.sourceforge.net.

    'view3dscene' is said to read vrml1, vrml2, x3d, 3ds, md3, wavefront obj, and Collada (dae).

    More information on the 'view3dscene' viewer is on my '3D viewers notes' page.

  • MeshLab source is at Sourceforge, along with screenshots.

    'meshlab' is said to read ply, stl, off, obj, 3ds, collada (dae), vrml, dxf, x3d, and several others --- a lot of the same formats handled by 'glc_player'.

    There have been Ubuntu packages of meshlab for Ubuntu Lucid (10.04) and a couple of following Ubuntu releases --- but not for Karmic (9.10).

    I have not installed 'meshlab' yet --- maybe someday on a computer on which I have Ubuntu 10.10 or higher.

      (I may try to install the Lucid package on Ubuntu Karmic.)

  • OctagaPlayer
    (Commercial only? Forum threads indicate that they offered a free version around 2007.)

    'OctagaPlayer' is said to handle x3d and vrml2.

  • freeWRL source is available via Sourceforge, and also available via tar file for Arch Linux --- freeWRL version 1.22.10.

    Web searching in 2011 Jan did not reveal any 'blessed' Ubuntu packages of freeWRL, but it appears there are some 'rzr-tmp' PPA's (Personal Package Archives) 'for Co-workers' made by Phillipe Coval, for at least 5 releases of Ubuntu.

    (Compiling from source and resolving dependency links might be too painful, so I would wait for a package of this one. 'freeWRL' involves Java as well as C code. Ugh.)

    There is some talk of problems in trying to install 'freeWRL' from an Ubuntu 7.10 debian package in 2008.

    So debian packages of 'freeWRL' seem to have been available in the past.

    However, it appears that 'freewrl' was 'officially' dropped by debian circa 2005.

  • mview (mesh viewer), at Sourceforge.

    'mview' is said to read ascii ply, vrml1, vrml2, vtk (ascii POLYDATA), and wavefront obj (ascii polygons).

    More information on the 'mview' viewer is on my '3D viewers notes' page.


I generally stay away from Java-based code --- especially for 3D, not only for performance reasons but because I cannot find any Debian or Ubuntu-Debian packages for 3D viewers based on Java.

Java 3D viewers seem to be problematic.

But I provide links to such Java-based VRML viewers here --- if only as a reminder that they exist.

Besides 'freeWRL' (mentioned above), here is another --- but it does not seem to have Debian or Ubuntu install packages either --- nor have I run across any screenshots of it.

  • Xj3D a project of the Web3D Consortium --- which, judging by Web3D performance over the past 10 years, means we can't expect much.

    The Web3D Consortium has essentially pissed away the good foundation that SGI laid for them.

    See notes below on 'How VRML 2 Destroyed Internet VR [Virtual Reality] For A Decade'.

The Java 'write-once, run anywhere' IDEA is a nice one --- in theory.

One of the problems, however, is getting Java-engines [byte-code interpreters] that run with no problems on your particular machine --- with its windowing system and its 3D video card.

Java is basically taking a very, very complex area --- and 3D graphics programming adds another layer of complexity --- another layer of things that can go wrong --- to that already complex situation.

One thing that may 'push Java along' is the fact that Google seems to do a lot of code developement in Java --- especially for their Android operating system for cell phones.


On 3D viewer source code :

You will find that 3D viewer programs are usually written in C++ rather than C --- probably because of the GUI routines and 3D graphics routines being done with C++.

    Often one sees that programs that do not need GUI libraries or 3D graphics libraries (such as number-cruncher programs) are written in C, rather than C++.

There are a few 3D viewer programs done in Java.

But it seems that they are problematic and end up being dropped out of Debian and Ubuntu package libraries --- or never make it into their libraries.

Examples: freeWRL and Xj3D.

Source code and binary executables for 3D viewers :

For more detail on source and binaries for these and other 3D viewers that are available for Linux, there are source and binary files (and links to sources of those files) on my separate Notes on 3D viewers page.

< Go to Table of Contents, above. >

The 'ivview' installation,
for reading-viewing VRML1 files :

< Go to Table of Contents, above. >

When I looked for 'inventor' and 'ivview' in the keyword search facility of the Ubuntu Software Center of my Ubuntu 9.10 (Karmic) installation, I got no hits.

But I was able to install from linuxappfinder.com/package/inventor-clients.

On that web page, I clicked on the Ubuntu 32-bit Karmic link ('2.1.5-10-12ubuntu2') and the 'Gdebi' utility came up as the default 'opener' program.

The 'Gdebi' install went smoothly (I simply watched messages in the installer GUI), and 'ivview' worked on sample '.iv' files, such as ones provided via my 3D TEST/DEMO FILES page.

I was able to run 'ivview' at the command line, and I set up 'ivview' in the Nautilus file-manager to be the default 'opener' of '.iv' files.

< Go to Table of Contents, above. >

The 'whitedune' installation,
which can view (and edit) VRML2 files :

< Go to Table of Contents, above. >

When I looked for 'whitedune' in the keyword search facility of the Ubuntu Software Center of my Ubuntu 9.10 (Karmic) installation, I got no hits.

For the heck of it, I tried typing 'whitedune' at the command prompt in a gnome-terminal window.

Although messages indicated 'whitedune' was not found, there was a message that suggested using the command

sudo apt-get install whitedune

I pasted that string at the command prompt, answered the prompt for a password, and simply sat back and watched the installation messages.

'whitedune' worked on sample '.wrl' files, such as ones provided via my 3D TEST/DEMO FILES page.

Furthermore, I was able to set up 'whitedune' as a 'helper application' for '.wrl' files in the Seamonkey web browser that I use almost exclusively, rather than Firefox.

At first, to try to set up 'whitedune' as the reader for '.wrl' files when they occur as links in web pages that I am reading with Seamonkey, I went to 'Edit > Preferences > Browser > Helper Applications' in Seamonkey.

That gave me a list of file types and their associated actions.

Unfortunately, VRML files were not in the list of about 30 types of files.

And there was no 'Add' button to use.

But I found that if I clicked on a '.wrl' file link on a web page, I got a prompt for whether to save the file or open it with an application.

I chose to open it with an application.

I was presented with a 'Browse...' option which I used to specify '/usr/bin/whitedune' as the application to use for that particular '.wrl' file.

There was a check button labelled 'Do this automatically for files like this from now on.' I checked that.

The VRML file type did not appear in the 'Helper Applications' panel in that Seamonkey session.

But, it turned out that after I exited Seamonkey, an underlying Seamonkey 'Helper Applications' file was apparently updated with the VRML reader information.

In subsquent Seamonkey sessions, I could simply click on a '.wrl' file link and 'whitedune' would startup and show the '.wrl' file --- almost immediately for small '.wrl' files.

Furthermore, when I checked 'Edit > Preferences > Browser > Helper Applications', 'VRM file' now appeared in the files list.

The 'Action' was set to 'Always ask'.

In the 'Always ask' drop down menu, 'Use whitedune' showed as an option.

Apparently, I could force whitedune to be used, avoiding a prompt for what application to use, if I wished.

    (Actually, there seems to be a bit of a bug in Seamonkey here.

    It should be asking me what I want to do when I click on a '.wrl' link, but Seamonkey starts up 'whitedune' right away.

    In any case, I have set 'Use whitedune' as the 'Action' for WRL files.)

< Go to Table of Contents, above. >

Paraview installation,
and VRML2 read errors :

< Go to Table of Contents, above. >

I installed 'paraview' via packages.ubuntu.com/karmic/paraview.

The 'paraview' File-Open dialog indicates that paraview will read and view VRML files, but I found the following problems.

Although the 'File > Open' option indicates that Paraview will read VRML2 '.wrl' files, with the version I have installed, it fails frequently on VRML2 files

    like b_fly.wrl, ball.wrl, basic-shapes-5V.wrl, basics-text-2.wrl, blockada.wrl, boink.wrl, btnproto.wrl ... on my 3D test/demo files page

yet these files read into 'whitedune' with no problem.

This build of Paraview may have an error in a routine that reads VRML2 file data.

Below is the error message that I usually see, in a Paraview error message window, immediately after clicking the 'Apply' button in Paraview --- to render the opened file into the display window.

A PolyData connections problem? Perhaps 'paraview' is not as forgiving as 'whitedune'.


 ERROR: In /build/buildd/paraview-3.4.0/VTK/Filtering/vtkDemandDrivenPipeline.cxx, line 722
 vtkStreamingDemandDrivenPipeline (0xa973518): Input port 0 of algorithm
 vtkAppendPolyData(0xa4b0ea0) has 0 connections but is not optional.

On a little more testing, I found that after an error like this occurs, to make it less likely to happen on the next '.wrl' file read, one needs to close 'paraview' and start fresh.

But then a file that was read successfully at one time may fail to read at another time.

The inconsistency of the errors (sometimes a file that was read OK will fail to be read another time) almost suggests a memory management error.

Furthermore, I had a crash of Paraview on trying 'Apply' on a VRML2 file --- not just an error message while the GUI 'stays up'.

The following error message appeared at the command line, instead of in a 'paraview' error message window, which could not appear because of the crash.


 Error: Node's of type Anchor do not have fields/eventIn/eventOut named Link
 Error near line 21: parse error
 Error near line 21: Unknown node type 'a'

And I had a crash of 'paraview', with a different error message (below), on trying 'Apply' on another VRML2 file.

The following error message appeared at the command line.

('Apply' loads the model into the display area, after you have done a File-Open to get the model data into the paraview program.)


 Error near line 188: parse error
 Segmentation fault

Furthermore, 'paraview' does not seem to successfully read compressed '.wrl.gz' files, but 'whitedune' will.

The bottom line is it is better to view VRML2 files with 'whitedune' than with 'paraview'.

I found 'paraview' to be a lot more stable in reading in '.ply' files and '.stl' files, including binary '.stl' files --- than in reading VRML2 files.

Summary of the installed VRML viewers :

'ivview' is a very nice little viewer for Inventor and VRML1 files.

'whitedune' seems to read VRML2 files quite reliably, but there are no '.x3d' files that I have come across (all version 3.1 X3D) that 'whitedune' would read.

Summary of my preferences :

  • for '.wrl' (VRML2) files - 'whitedune'

  • for '.iv' and VRML1 files - 'ivview'

< Go to Table of Contents, above. >

Some notes on SGI packages of
multiple viewers-AND-converters for
VRML1, VRML2, and SGI Inventor files :

< Go to Table of Contents, above. >

  • 'ivvrml' --- a converter between iv/vrml1/vrml2 files --- is available via merlin.fit.vutbr.cz/wiki/ in an 'ivTools' archive file --- ivTools-src-2.0.zip --- along with several other utilities.

    I have saved that archive file and it is available via one of my 3D software web pages.

  • The (old, circa 2003) source for 'ivview' and other SGI-Inventor programs was available at oss.sgi.com/projects/inventor/.

    Since that site may go dead in the next few years, I have saved a copy of that source on this site, for those who might have the C++ and 3D background to learn from the code or make use of it.

    That 'inventor-clients' package

    sgi-OpenInventor-clients-2.1.5-10.i386.tar.gz

    includes 'ivview', which can view VRML1 files as well as Inventor 1 and 2 files.

< Go to Table of Contents, above. >

non-SGI 3D VRML converters
(compilable code --- and scripts,
and a few Linux binaries)

< Go to Table of Contents, above. >

In addition to 3D VRML *viewers*, this page of VRML1-VRML2 notes also includes notes on finding and installing 3D VRML *converter* programs, like

  • ivcon and ivread by John Burkhardt at FSU (Florida State University) and previously at Iowa State --- which convert between multiple 3D file formats,

  • ADMesh which fixes STL (StereoLithography) files and converts between binary and ascii STL files, as well as writing VRML1 and Wavefront OBJ files from STL files,

  • and various 'one-to-one' converter programs (esp. ones that I might be able to compile on Ubuntu Linux) for conversions such as

    • 3ds-to-vrml1 (or vrml2)
    • obj-to-vrml1 (or vrml2)
    • vrml1-to-vrml2
    • vrml2-to-vrml1
    • vrml-to-pov

    These are some 'one-to-one' conversion types that I have found to be actually implemented in one language or another, but it is not clear to me yet whether they are all capable of being implemented on Linux, esp. Ubuntu Linux.

    However, if the source is available and compilable, and I am able to successfully compile and test on Ubuntu Linux, I intend to make the source and compiled program available via these 3D files-viewers-converters web pages.

    See the VRML converters 'by names' list, below.

I was able to compile a circa 2004 version of the 'ivcon' 3D file converter program of John Burkhardt (at FSU in 2010), using the 'gcc' compiler, on Ubuntu Linux 9.10.

I was also able to compile a circa 2002 version of his 'ivread' fortran90 3D file converter program, using the 'gfortran' compiler, on Ubuntu Linux 9.10.

Furthermore, I was also able to compile the 'admesh' program (version 0.95) with 'gcc', on Ubuntu Linux 9.10.

For more detail on source and binaries for these and other 3D converters that are available for Linux, there are source and binary files (and links to those files on this site) on my separate 'Notes on 3D converters' web page.

On that page, I report, in a little more detail, how the 'ivcon' and 'ivread' program builds were done.

And I report results of 'ivcon' tests on a few test 3D files, like the files referenced in the next section, on 3D test files.

In the 'Notes on 3D converters' page (link above), you can see some of the other 3D converter source codes (ones that do not involve VRML) that one could try compiling on Linux.

A few of the 3D converters are perl (or awk) scripts that could be tested --- or converted to another language (interpreted or compiled language).

Examples: perl to awk, or perl to C.

Some 'Limited Formats'
VRML and SGI-Inventor converters :

< Go to Table of Contents, above. >

There is source code, on the Internet, for many VRML and SGI-Inventor file converters which may be portable to Linux systems --- converters with names such as (in numero-alphabetic order) :

  • 3dstoiv
    (may be handy to allow 3ds 3D Studio files to be viewed by 'ivview' by converting the 3ds files to SGI Inventor format)

  • admesh (mentioned above)
    (an STL file fixer ; translates STL to several formats including VRML1)

  • dxf2iv
    (may be handy to allow DXF files to be viewed by 'ivview', via SGI Inventor files)

  • dxftoiv
    (an alternative to dxf2iv?)

  • iv2pov
    (a way of converting Inventor or VRML1 files into input for POV-ray, to render high-quality scenes with shadows and reflections and various kinds of lighting)

  • ivcon
    (converts between many pairs of 3D formats, including VRML)

  • ivcon-tl
    (a group-supported version of ivcon that is now housed at Sourceforge ; Uh-oh --- development by committee -- that may not be good. More on ivcon-tl on a 3D converter notes web page.)

  • ivread
    (fortran90 - similar to the ivcon C program ; an alternative ; can translate to/from VRML1 and SGI-Inventor formats)

  • IvToVrml
    (cannot find the source ; SGI binaries exist)

  • ivvrml
    converter between iv/vrml1/vrml2 files ; source was available via merlin.fit.vutbr.cz/wiki/

  • obj2wrl
    (perl script - In my days on SGI workstations, I tried this script on some '.obj' files. There are some '.obj' files that this script will not read completely. The script handles '.obj' files of a certain restricted subset of the OBJ format specification.)

  • obj2ply
    (obj2ply offers a way to read '.obj' data into Paraview)

  • ply2iv
    (The combination of 'obj2ply' and 'ply2iv' may offer an 'obj2iv' functionality --- if we cannot get that from 'ivcon'.)

  • vrml2pov
    (a possible way of converting VRML files into input for POV-ray, to render high-quality scenes with shadows and reflections and various kinds of lighting)

  • vrml1-to-vrml2 and vice versa
    (I found an 'ivTools' file that includes source for such a converter, called 'ivvrml' --- noted above.)

A few of these translators are scripts (Perl or awk).

They will generally not be usable on huge model files.

Some of the translators based on compilable source code (C, C++, Fortran) may be relatively easy to compile, since some of these may not have complex libraries, like graphics and GUI libraries, as dependencies.

Typically you will find that converters for VRML or Inventor (SGI) files are written in C++ rather than C --- although 'ivcon' (2004) seems to be an exception.

You are more likely to find C used for translators not involved with the VRML or Inventor formats --- for example, obj-to-ply or STL converters.


Limitations of converters

Note that many of these converters may translate only a subset of the input file --- and many of these converters may crash on certain input files.

Some of these converters were developed and tested on input files that did not represent the more complex forms of the 3D format for that file type.

So some of these converters may work on simpler input files, but the converters may fail on more complex input files.

You often get what you pay for in the open source world --- but, if you have the time and talent, you may be able to fix the code yourself.

If two translators reportedly translate format A to format B, they could offer alternatives (backups) to each other.

If one translator does not give a good translation to format B (or crashes), then the other translator may provide a better translation.

Note that most of the translators --- like 'ivread' and 'ivcon' --- have hard-coded limits on the number of points or polygons they will handle.

< Go to Table of Contents, above. >

VRML test/demo files :

< Go to Table of Contents, above. >

For some sample VRML1 and VRML2 files, with suffixes such as '_vrml1.whatever' and '_vrml2.whatever' (and maybe '.wrl.gz' and '.wrz'), see my page on 3D test/demo files.

< Go to Table of Contents, above. >

VRML1 and VRML2 and X3D - a RANT, or two :

< Go to Table of Contents, above. >

A subset of the Inventor 2.x specification became VRML 1.

VRML 1 seemed to be on track to becoming a standard for putting out viewable 3D data --- somewhat like Adobe's PDF format became a standard for quality presentation of text-and-2D-graphics documents --- especially when Adobe provided a free reader for those documents --- the reader being easily available from the internet.

Although a few free readers for VRML files became available (like 'Cosmoplayer' from SGI), unfortunately some mistakes were made.

I think that two main mistakes were made :

  • Cosmoplayer was available only as a plug-in for web browsers (Netscape on Unix --- and, soon after, for Internet Explorer on Microsoft OSes).

    A version of Cosmoplayer was NOT written to run as a stand-alone program.

      (Acrobat PDF Reader can be run in stand-alone mode. That is a desirable and useful option. SGI should have taken the hint from Adobe.)

    In addition, the Cosmoplayer interface and its control of navigation and model movement should have been improved.

    I suspect the people who developed it went on to other things --- as SGI got in financial trouble in the late 1990's.

  • The VRML 2 (a.k.a. VRML97) specification came out, and it was not backward compatible with the VRML 1 format.

    I think that fact killed a lot of the momentum that was building for 3D CAD software designers to use VRML as a read-only publishing format.

    The VRML program developers just could not have confidence that the rug would not be jerked out from under them again.

      (It's bad enough that there is much more complication in file formats for 3D objects than for 2D objects.

      Changing the 3D file format specification in a 'not backward compatible' way was just too much additional complication to stomach.)

    There was also the issue that the ASCII VRML format was not suited to handling huge CAD models efficiently.

    And it probably turned out that it was just simpler (and ultimately more processing-efficient and disk-space-efficient) to render 3D models, including dynamics and interactivity with the models, as a 2D movie file, and simply publish or show the movie file.

    Witness the explosion of YouTube and the like.

I am not the only one who feels that VRML 2 was a mistake.

At robmyers.org is a 2008 Jun 20 posting titled 'How VRML 2 Destroyed Internet VR For A Decade'.

Just in case that posting disappears, I put a copy of Myers' words here :


    "In the mid-1990s there were four problems with internet-based Virtual Reality (VR).

    • The plug-ins were all for Windows, not Mac. Ignoring early adopters and designers is a bad idea when launching a new visual medium.

    • People's PCs had anaemic graphics cards and processors. Skillful design could offset this, though.

    • People were on 24-56k dial-up modems for the most part. Again, skillful design could offset this but it did set a limit.

    • VRML 2 was an unimplementable turd of a standard. It destroyed any company that tried to implement it.

    I think people underestimate the Mac angle.

    Apple had a miniscule market share but Macs were disproportionately represented on the Internet --- and, within that, there were a disproportionate number of the kinds of people you need making and consuming your new medium if you want it to succeed. But I digress.

    Reading the VRML 2 standard when it first came out I was struck by its complexity and by the naivete of some of the implementation notes.

    I couldn't see how to implement it without much more work than the notes seemed to suggest was needed.

    Events showed my concerns to be well founded.

    Cosmo, SGI's VR outfit, was spun off and failed before they managed to finish implementing VRML 2.

    Intervista also failed to implement it and got bought out.

    A trend was emerging.

    Try to implement VRML 2, fail, lose your company.

    VRML 1 had been OK.

    Black Sun had based a multi-user VR system on it.

    It would have been better for VRML 2 not to have been specified and for VRML 1 to remain the standard with external animation added by the likes of Black Sun than for VRML 2 to destroy the industry.

    A couple of years ago the corpse of VRML 2 was exhumed and wrapped in XML to produce X3D.

    The problem with VRML 2 was not that it wasn't verbose enough, and wrapping it in an extra layer of verbosity in the form of XML tackled the wrong problem.

    As a comparison, SVG is basically PDF in XML but it is easier to parse than PDF and better suited to inline web graphics because of the choices that were made when considering which bits of PDF should be included or left out.

    VRML 2 played a unique part in the failure of the first wave of Internet virtual reality.

    It wasn't until the mid-2000s that a second wave arrived with less powerful scene description than VRML 1 and a walled-garden, service-based approach that is at odds with the freedom of the hypertext internet that VRML sought to extend.

    I long for the return of internet virtual reality based on open standards, distributed client-server systems, and text-file-hackability. With meshes."

A responder to Meyers' post (Russel Campbell) said "You took the words right out of my mouth."


Meyers' conjectures for why VRML2 was a mistake are slightly different from mine, and the truth may be somewhere between our views or outside of them.

But I think we can agree that the end result was not good --- and the ill effects have lingered for more than 8 years.

You would have thought that the Web3D consortium could have sorted things out by now --- more than 10 years later.

But the 'x3d' format that they have tried to promote --- which is essentially VRML2 wrapped in XML tags --- has gone essentially nowhere --- mostly because they have not provided a reader for it (a la Acrobat Reader) --- cross platform.

They may claim to have, in 'Xj3D' --- but where are Debian, Ubuntu, or other packages for it?

In fact, the Web3D consortium does not even seem to have provided a lot of nice demo '.x3d' files, along with a player --- like SGI did with sample VRML files and the Cosmoplayer program.

It's no wonder that the '.x3d' format seems to be an even bigger failure than VRML.

Ten years later and we still find many more '.wrl' files than '.x3d' files around the internet.

And a lot of 3D modelers still have export options for the VRML1 or VRML2 file format.

There seems to be more 'remainders' of activity on VRML1 or VRML2 than there seems to be on X3D.

During that time (approx. 2001 to 2010), the 3D game industry has been making a pile of money, comparable to or exceeding the Hollywood movie industry.

The game-creators seem to have found THE way to make money, in this decade, off of 3D graphics.

It involved a mix of story-line, dynamic 3D graphics, characters/avatars, and good-quality accompanying sound.

    Microsoft, unlike SGI and others, seems to have found a way to make money off of 3D graphics, via their development of the X-box and the software that goes with it.

    And, of course, there's Pixar and 3D graphics effects in movies, as another way to make a living off of 3D graphics.

    I.e., the entertainment industry (and the less glamorous CAD industry) is the main way enough money is made with 3D graphics to keep it improving by leaps and bounds.

Perhaps VRML and X3D are solutions to an as-yet undefined problem.

In other words, they are not solutions at all --- just a novelty that has grown old.

Still there seems to be this sense of potential there.

Maybe it is a gut feeling, on the part of many of us, with no solid reason behind it.

It may be that a missing element has to be added --- and the implementation and programming has to be made much easier.

Perhaps a somewhat simpler file format (sacrifice some 'bells and whistles') --- and make a ton of 'readers' (viewers) available --- could be 'the ticket'.

The complexities, for the developers as well as the users, need to be eliminated (or at least hidden) to a great extent.

< Go to Table of Contents, above. >

VRML REFERENCES :

VRML Books :

There are not many comprehensive sources of information on the variety of 3D file formats, but there has been at least one attempt to put that kind of information into book form in

    '3D Graphics File Formats, A Programmer's Reference',
    by Keith Rule, Publisher: Addison-Wesley, 1996
    referenced on the web at amazon.com.

A few VRML books that I have accumulated over the years (as they went on clearance sale) are

  • 'Late Night VRML 2.0 with Java',
    by Roehl, Couch, Reed-Ballreich, Rohaly, and Brown,
    Ziff-Davis Press, 1997

  • '3D Graphics and VRML 2 - Laura Lemay's Web Workshop',
    by Laura Lemay, Kelly Murdock, and Justin Couch,
    Sams.net Publishing, 1996

  • 'Web Publisher's Construction Kit with VRML/Live3D - the Complete Toolkit for Creating 3D Web Worlds',
    by David Fox and Philip Shaddock,
    Waite Group Press, 1996

Note that there was a lot of enthusiasm for VRML in the mid 1990's.

EXTERNAL LINKS on VRML viewers/converters/files :

Some links on 3D VRML viewers :

Some links on 3D VRML exporters :

Some links on VRML converters :

Some 'EXTERNAL' links on sources of sample 3D files :

More of my notes on 3D files, including VRML files :

For more info on 3D files, including VRML1 and VRML2 files, see my web pages

  1. notes on 3D viewers --- including notes on installs, on Linux (esp. Ubuntu) --- and links to source code or binary executables

  2. notes on 3D converters --- including notes on installs, on Linux (esp. Ubuntu) --- and links to source code or binary executables

  3. sample 3D model files --- including notes on how to make 3D files viewable from web pages --- that is, how to setup 3D viewers as 'helper applications' in web browsers.

< Go to Table of Contents, above. >


Cosmoplayer VRML viewer - screenshot
(Rest in Peace. You could have been so much more,
if confusion in VRML implementations in web browsers
--- and lack of a stand-alone Cosmoplayer, early on
--- and poor choices by committees
--- and poor-to-non-existent implementation of
the X3D 'fork' --- had not doomed you.)

Bottom of this page of
Notes on VRML1, VRML2, and X3D files.

To return to a previously visited web page location, click on the Back button of your web browser, a sufficient number of times. OR, use the History-list option of your web browser.
OR ...

< Go to TOP of this page, above. >

< Go to Table of Contents, above. >

Page history:

Page was created 2011 Jan 27.

Page was changed 2011 Jan 29.

Page was changed 2018 Dec 18.
(Added css and javascript to try to handle text-size for smartphones, esp. in portrait orientation.)

Page was changed 2019 Jun 20.
(Specified image widths in percents to size the images according to width of the browser window. Also added many web links.)