

The Virtual Reality Modelling Language (VRML, an ISO standard) evolved from VRML1 through "Moving Worlds" to VRML2, and finally VRML97. It is a standardised file format designed, with the Internet in mind, for representing dynamic 3-d data; as such, it provides great opportunities for the presentation of information about caves and karst. Most VRML1 can be converted into VRML97, sometimes transparently by the browser, alternatively by a converter. Soon after XML burst on the scene proposals were made to change the syntax to the new paradigm and we now have X3D which is sometimes treated as a basis for conversion back into VRL97 for viewing, sometimes as a executable in itself. There are also subsets of VRML97 executable by Java applets which were for a time referred to as X3D without actually using XML at all.
Whilst there are many other 3D scene description and display formats (DXF, Lightship, ....) they are mainly proprietary and/or binary formats, usually aimed at static displays. For a short time Microsoft included a VRML browser in its Windows distributions, and Netscape also distributed a VRML plugin, but these were both discontinued and early enthusiasm for 3D evaporated. However, little trumpeted, use and development has continued as shown here.
Some of the possibilities are demonstrated here by presenting some of the work done by the Oxford University Cave Club in the western (Cornion) massif of the Picos de Europa in Northern Spain from 1961 to date.
In brief, VRML/X3D allows the creation of model worlds for presentation in 3-D, albeit usually via a 2-D computer screen; further, it allows both the view of the model, and even the content of the model itself, to be manipulated by the user; and it enables linking to any information which can be supplied from the Internet.
Here's the Picos - viewed (appropriately) through a VRML Fog in from a plan Viewpoint:
A grid (the UTM kilometer grid in this example) is useful for locating sites and orienting yourself; there is also a compass/vertical indicator which is associated with a Script which allows it to move with the model, but stay stationary in location on the screen in the manner of a pilot's head up display - it can also be relocated by dragging with the mouse. The surface representation is a mixed blessing; it gives a general idea of the topography, but is tedious to define in detail and hides the cave detail below, except that it can be made as transparent as we want, or we can make it disappear by defining what 'level of detail' (LOD) we want to display at different ranges. The surface is derived either from a regular rectangular ElevationGrid of heights, or from from an IndexedFaceSet of arbitrarily located heights with connecting edges. Smoothing and surface Appearance characteristics are adaptable for colour, pattern, texture, reflectivity, and transparency. The examples here are transparent enough to see through to the caves below - useful if not realistic!
Moving in, colours appear and we can see rivers (blue), dye traces
(fluorescein green), and caves (black, of course, unless you want to
differentiate them by explorers, date of exploration, etc). Important
locations can be labelled, or photographs located. The labels and
photographs can be set up either as Billboards
which always move so as to be visible, or as realistically oriented
vistas:
different viewer
Closer
again, individual entrances can be identified, using symbolic Shapes
derived from the UIS standards for caves, potholes and hydrological
sites, and moving the cursor (not captured in the image) over one
flashes up its name in the bottom status bar:
The cave, river, and trace lines are either IndexedLineSets
or seperate VRML models in their own right. These were actually
created in Walls,
a free American survey management program, and are mainly in VRML1,
the older standard which does not allow as much interactivity as
VRML2 (but did define an orthographic presentation in addition to the
perspective viewing which the present standard uses).
Most objects can be defined as Anchors
which will act as links to other resources on your PC or any url on
the Internet. Thus, a survey line could be made to link to a full
survey of that cave, or an entrance could link to a cave description
or entry in an area guide, optionally in a seperate window. The guide
could, itself, link back to a particular Viewpoint
in a VRML world.

PredefinViewpoints
allow particularly useful or interesting views to be defined, and
enable the lost to return to the planet. They can also be used,
rather like blocking out a spreadsheet, to include entirely seperate
locations, such as a key, information, or help page:

Displaying caves as
survey lines is adequate but not as impressive as fleshing them to
impress the claustrophobic with their volume or the agrophobic and
larger-boned with the tight bits. There are two ways of doing this:
uIndexedFaceSet
nodes or use Extrusion
nodes. The Tunnel program, closely
related to Survex (for which it effectively provides an editor),
takes the first approach which divorces the skeleton from the skin: a
special editor is used to define and orientate cross sections which
are then linked up. This is a very flexible approach, but quite
awkward to implement well. I have used a Script
node to wrap a skin around the skeleton: This is a quick and easy way
to get a solid survey which can then be tweaked to get more
complicated effects. The most complicated surveys would probably
benefit from a mixture of the two approaches: IndexedFaceSets for
complicated junctions and sculptural details of chambers, with
Extrusions for the more uniform passages.

,
If any of this looks or sounds interesting, why not try it
out? You need a computer and a VRML viewer (usually a plugin to a WWW
browser); an Internet connection will be useful (but is not essential
as the files can also be transferred and run from disk). I have used
a moderately specified PC and found the CosmoPlayer viewer in
Netscape to be best. Here are my observations on the current main
contenders, in the light of development of these models:
|
Type |
Pro |
Con |
Summary |
|
|---|---|---|---|---|
|
|
|
Still (Jan 2002) the best# |
|
|
Nexternet/Pivoron |
|
|
|
This Korean company bought the CosmoPlayer codebase (Windows only?) in mid 2001 and have rebranded it as part of a "multimedia integration platform" which they are actively developing. |
|
|
|
Excellent for development, except for some scripting problems |
|
|
BS Contact VRML (was BlaxxunContact) |
|
|
|
Intended for chat use, but very competent. |
|
|
|
One to watch |
|
|
|
|
Implemented in Java3D |
|
|
|
|
||
|
|
|
Implemented in Java3D |
|
|
|
|
||
|
Intervista WorldView 2.1 |
|
|
|
Good intentions, but ... |
|
Sony Community Place |
|
|
|
Intended for chat use |
|
|
|
One to look to for the future |
|
|
IBM Hotmedia (not clear if this is now part of Websphere - probably lost?) |
|
|
|
May be a good compromise solution to deliver basic 3D reliably to more users until most browsers are 3D capable |
|
|
|
May be a good compromise solution to deliver basic 3D reliably to more users until most browsers are 3D capable |
|
|
|
|
The future? |
# You may find the OpenGL rendering option is better than Direct3D.
Other plugins may be found at the VRML repository. (NB some will be defunct and some experimental, but this is a good source of non Wintel stuff). The comp.lang.vrml newsgroup is a good source for latest hints, information, and tips.
Sony provide(d?) a useful plugin chooser for Netscape; there is no
equivalent for easily swapping ActiveX component registrations,
although specific ActiveX ids can be specified in html pages.
If you do look at the source, you will
find it written in plain text with a liberal sprinkling of brackets
and rather odd looking repetition of keywords with changes in the use
of Capital letters. The book
of the specification explains this, with an initial Capital
identifying a 'node' - ie an object in the scene, not necessarily
visible, and lower case an attribute of a node. The other things to
look out for are the coordinate system and scale units. VRML uses a
right handed Cartesian system, with vertical defined as the y axis;
this only coincides with the common cave survey coordinates if you
equate x to E, y to height (or negative depth), and z to S (opposite
of N); this comes in useful if you want to display a horizon, shade
backgrounds, and use gravity to help align your views.
Different browsers display differently, and have different
navigation tools. This one also has different rendering options, and
more..
Notes on the image hot spots
Predefined viewpoints are named in this drop down list box. Alternatively, click the left or right buttons to go forward or back in the list. Orthographic views (also known as isometric..) are projections made with parallel lines and can only be approximated; perspective projections have diverging rays.
These axes always maintain the correct orientation with respect to the rest of the display. The cone points North as in conventional compass roses; the cross bar points East as in classic compass roses of the old maps; an SRT climber animation is used to indicate the vertical.
The surface is formed from an 2 rectangular elevation grids, plus a more complicated IndexedFaceSet in the foreground. A texture map is laid over the surface, the pattern being generated by a PixelTexture. The colour comes from an Appearance node, but could have been incorporated in the texture.
Level of detail nodes can be useful to reduce download requirements or to change the nature of the information displayed as the viewer's position changes. Here, photos only appear when they will be of sensible viewing size, and disappear to show the detail otherwise hidden by them.
The Cosmo Player navigation controls are explained in the online help from the ? button in the bottom right. Briefly, they are arranged in three categories:
Go to button - double click to make persistent (white); once for one-off (green); this also resets the centre of rotation to a position on the line to any intersected geometry. Be aware that persistent mode will block the functioning of sensors so descriptions will not pop up.
Straighten button - set all horizontals correctly
Walk - move the viewer in or out of the scene
Fly - as for walk, but no gravity constraint
Zoom - magnify the scene, but don't move the user
Rotate - rotate the scene
Tilt - tilt the user
Pan - move everything, as if sliding a piece of paper
Last updated (mm/dd/yy)