old-www/LDP/LG/issue26/vrwave.html

444 lines
21 KiB
HTML

<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="GENERATOR" CONTENT="Mozilla/4.03 [en] (X11; I; Linux 2.0.30 i486) [Netscape]">
<TITLE>Graphics Muse
</TITLE>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FA" VLINK="#FA3333" ALINK="#33CC33">
<!-- =============================================================
This Page Designed by Michael J. Hammel.
Permission to use all graphics and other content for private,
non-commerical use is granted provided you give me (or the
original authors/artists) credit for the work.
CD-ROM distributors and commercial ventures interested in
providing the Graphics Muse for a fee must contact me,
Michael J. Hammel (mjhammel@csn.net), for permission.
============================================================= !--><A NAME="musings"></A>
<TABLE BORDER=0 NOSAVE >
<TR NOSAVE>
<TD NOSAVE>
<H2>
More...</H2>
<IMG SRC="../gx/hammel/musings.gif" ALT="Musings" HEIGHT=52 WIDTH=247 ALIGN=LEFT>&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<TABLE>
<TR>
<TD></TD>
</TR>
</TABLE>
<IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" VSPACE=5 HEIGHT=1 WIDTH=1 ALIGN=LEFT>
<TABLE BORDER=0 WIDTH="100%" NOSAVE >
<TR NOSAVE>
<TD ALIGN=RIGHT WIDTH="100%" NOSAVE><FONT SIZE=-2>&copy; 1998 <A HREF="mailto:mjhammel@csn.net">Michael
J. Hammel</A>&nbsp;</FONT></TD>
</TR>
<TR>
<TD VALIGN=TOP BGCOLOR="#000000" cellpadding="0" cellspacing="0"><IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN=LEFT></TD>
</TR>
</TABLE>
<H2>
VRWave 0.9</H2>
Quite some time ago a reader, a fellow named Paulo, had sent me email asking
if I had taken a look at <B><FONT COLOR="#CC6600">VRWave</FONT></B> yet.&nbsp;
This is a VRML 2.0 browser available from the Institute for Information
Processing and Computer Supported New Media (IICM), GrazUniversity of Technology,
Austria.&nbsp; The program is freely available for private use and includes
source code.&nbsp; The current version, 0.9, includes a Java-based port
of the code, although all rendering code is still in C using either OpenGL
or Mesa.
<P>Looking through my backlog of things to do for the Muse, I decided to
take a look at VRWave.&nbsp; At a minimum I wanted to see if I could simply
get it to run.&nbsp; Hopefully, I would be able to say something intelligent
about the source code and build environment as well.&nbsp; I jumped on
the Internet and went off to grab a copy of the package from a US mirror
of the VRWave Home Page (<A HREF="http://www.iicm.edu/vrwave">http://www.iicm.edu/vrwave</A>).&nbsp;
The first thing I noticed was that there were both source and binary distributions
available.&nbsp; The binary distributions cover a few flavors of Unix,
including ports for Linux 2.0.&nbsp; There are actually two versions of
the binary distribution - a Java 1.1.3 based version and a Mesa version
which uses Java 1.0.2.&nbsp; These are actually the platform specific libraries
needed by VRWave.&nbsp; I grabbed both along with the gzipped Common tar
file which must accompany any binary version that is downloaded.&nbsp;&nbsp;
The Mesa version is not compiled with any of the hardware accelerated drivers
available for Mesa.&nbsp; If you want to use those drivers you need to
recompile the source with the Mesa package properly built with the drivers
of interest.&nbsp; Also, the Mesa code is statically linked into the platform
specific libraries, so you shouldn't need any other libraries or files
outside of those contained in the&nbsp; Common tar file and the platform
specific tar file.
<P>The directions say to unpack the Common file first, then cd into the
vrwave-0.9 directory this process creates and unpack the platform specific
files.&nbsp; The first time I did this I didn't do it in the right order
and got myself confused.&nbsp; So I redid the unpacking, following the
directions.&nbsp; Its true - men never read the directions.&nbsp; The instructructions
in the INSTALLATION file for running VRWave are quite complete so I won't
rehash them here.&nbsp; Just be sure you actually read the file!&nbsp;
In my environment I use Java 1.0.2, the default installation of Java on
Red Hat 4.2, so I set my CPU environment variable to LINUX_ELF.&nbsp; You
may need to set it to LINUX_J113 if you have the Java 1.1.3 package installed
on your system.
<P>Once you set up a couple of environment variables you're ready to start
vrwave.&nbsp; Since VRWave uses your Java runtime environment, be sure
your CLASSPATH&nbsp;is set correctly first.&nbsp; On my Red Hat 4.2 system
I&nbsp;have it set as follows:
<UL><B><FONT SIZE=-1>CLASSPATH=/usr/lib/java/lib:/usr/lib/java/lib/classes:/home/mjhammel/src/graphics/vrwave-0.9/classes</FONT></B></UL>
Type <B>vrwave </B>and the interface opens a window.&nbsp; On my system
I got messages like the following:
<P><B>java.lang.InternalError: unsupported screen depth</B>
<BR><B>VRwave: could not load icons at /home/mjhammel/src/graphics/vrwave2/vrwave-0.9/icons.gif</B>
<BR><B>VRwave: could not load logo at /home/mjhammel/src/graphics/vrwave2/vrwave-0.9/logo.gif</B>
<BR><B>java.lang.InternalError: unsupported screen depth</B>
<BR><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.awt.image.ImageRepresentation.setPixels(ImageRepresentation.java:170)</B>
<BR><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.awt.image.InputStreamImageSource.setPixels(InputStreamImageSource.java:459)</B>
<BR><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.awt.image.GifImageDecoder.sendPixels(GifImageDecoder.java:243)</B>
<BR><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.awt.image.GifImageDecoder.readImage(GifImageDecoder.java:295)</B>
<BR><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.awt.image.GifImageDecoder.produceImage(GifImageDecoder.java:155)</B>
<BR><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:215)</B>
<BR><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.awt.image.ImageFetcher.run(ImageFetcher.java:98)</B>
<BR><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.awt.image.ImageRepresentation.setPixels(ImageRepresentation.java:170)</B>
<BR><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.awt.image.InputStreamImageSource.setPixels(InputStreamImageSource.java:459)</B>
<BR><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.awt.image.GifImageDecoder.sendPixels(GifImageDecoder.java:243)</B>
<BR><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.awt.image.GifImageDecoder.readImage(GifImageDecoder.java:295)</B>
<BR><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.awt.image.GifImageDecoder.produceImage(GifImageDecoder.java:155)</B>
<BR><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:215)</B>
<BR><B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; at sun.awt.image.ImageFetcher.run(ImageFetcher.java:98)</B><B></B>
<P>These may be due to either an incorrect Java configuration on my system
or because the Java 1.0.2 libraries do not support the TrueColor (24 bit
depth) visual I'm running with my X server.&nbsp; In either case it didn't
seem to matter, as the window opened and I was able to begin playing with
VRWave.&nbsp; Also, during all my experimentation I&nbsp;had no display
or color problems at all.
<P>The first thing I should say at this point is that I know very little
about VRML other than its a language for describing navigable 3D worlds.&nbsp;
VRML 2.0 includes features such as spatial sound, where the sound of an
object in the distance can grow louder as the object is moved closer.&nbsp;
To my knowledge VRWave does not yet support sounds, but I didn't test any
VRML worlds in which sound was availalble.&nbsp; In any case, what I'll
describe here is what an casual user might encounter, what someone who
is just beginning to explore VRML might find interesting and useful.&nbsp;&nbsp;
Also please note that the slight blur in the images is due to reducing
them from the screen captures in order to fit the image in a 640 pixel
wide Web browser.
<H4>
The interface</H4>
<CENTER>
<H4>
<IMG SRC="./gx/hammel/vrwave-1.jpg" HSPACE=10 VSPACE=10 HEIGHT=370 WIDTH=459></H4></CENTER>
&nbsp;
<P>The image above show the initial window if no input file is provided
on the command line.&nbsp; You can specify any VRML file as an input file.&nbsp;
These carry the .<B>wrl </B>extension in the file name and you can find
numerous example in the <B><FONT SIZE=-1>examples</FONT></B> directory
in the distribution.&nbsp;&nbsp; Scene files are ordinary text files, not
unlike the POV-Ray programming language in a sense.&nbsp; The look like
the sample code below, which is the code for the convexify.wrl example:
<UL>#VRML V2.0 utf8
<P># sample for applying perface materials onto non-convex shape
<BR># kwagen/mpichler
<P>Viewpoint
<BR>{
<BR>&nbsp; position 5 5.25 10
<BR>&nbsp; orientation -0.6 0.8 0.1 0.5
<BR>}
<BR>Shape
<BR>{
<BR>&nbsp; geometry IndexedFaceSet
<BR>&nbsp; {
<BR>&nbsp;&nbsp;&nbsp; coord Coordinate
<BR>&nbsp;&nbsp;&nbsp; {
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; point [ 0 0 1, 1 0 1, 3 4 1, 2 4 1,
1 2 1, 1 4 1, 0 4 1,
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0 0 0, 1 0 0, 3 4 0, 2 4 0, 1 2 0, 1 4 0, 0 4 0 ]
<BR>&nbsp;&nbsp;&nbsp; }
<BR>&nbsp;&nbsp;&nbsp; coordIndex
<BR>&nbsp;&nbsp;&nbsp; [
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 1 2 3 4 5 6 -1&nbsp;&nbsp; # front,
lt. green
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 7 8 1 -1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
# red
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 8 9 2 -1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
# blue
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 9 10 3 -1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
# yellow
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 10 11 4 -1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
# cyan
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 11 12 5 -1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
# magenta
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5 12 13 6 -1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
# dk. cyan
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6 13 7 0 -1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
# dk. magenta
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 13 12 11 10 9 8 7&nbsp; # back, dk.
green
<BR>&nbsp;&nbsp;&nbsp; ]
<BR>&nbsp;&nbsp;&nbsp; color Color { color [ 0 1 0, 1 0 0, 0 0 1, 1 1 0,
0 1 1, 1 0 1, 0 0.5 0.5, 0.5 0 0.5, 0 0.5 0 ] }
<BR>#&nbsp;&nbsp; colorIndex [ 8 7 6 5 4 3 2 1 0 ]&nbsp; # reverse color
binding
<BR>&nbsp;&nbsp;&nbsp; colorPerVertex FALSE
<BR>&nbsp;&nbsp;&nbsp; convex FALSE
<BR>&nbsp; }
<BR>}</UL>
&nbsp;
<P>The following table summarizes most of the features in the VRWave main
window:
<BR>&nbsp;
<CENTER><TABLE BORDER COLS=2 WIDTH="100%" NOSAVE >
<TR BGCOLOR="#FFCC00" NOSAVE>
<TD WIDTH="20%" NOSAVE><B><FONT SIZE=+1>Window Feature</FONT></B></TD>
<TD><B><FONT SIZE=+1>Description</FONT></B></TD>
</TR>
<TR NOSAVE>
<TD BGCOLOR="#33CCFF" NOSAVE>File&nbsp;</TD>
<TD>Basic file input/output functions, plus camera information.</TD>
</TR>
<TR NOSAVE>
<TD BGCOLOR="#33CCFF" NOSAVE>Navigate&nbsp;</TD>
<TD>Set mode for movement through VRML world; reset and align functions
for current view.</TD>
</TR>
<TR NOSAVE>
<TD BGCOLOR="#33CCFF" NOSAVE>Display&nbsp;</TD>
<TD>Lighting, rendering (static and interative) methods, colors, background,
transparency, etc.</TD>
</TR>
<TR NOSAVE>
<TD BGCOLOR="#33CCFF" NOSAVE>Help&nbsp;</TD>
<TD>HTML based help system that relies on Netscape.&nbsp; Netscape must
be in your path for this to function properly.</TD>
</TR>
<TR NOSAVE>
<TD BGCOLOR="#33CCFF" NOSAVE>Flip</TD>
<TD>Navigation mode;&nbsp; Scene translation around origin and zoom.</TD>
</TR>
<TR NOSAVE>
<TD BGCOLOR="#33CCFF" NOSAVE>Walk</TD>
<TD>Navigation mode;&nbsp; move forward, backwards, sideways pan and move
"eyes".</TD>
</TR>
<TR NOSAVE>
<TD BGCOLOR="#33CCFF" NOSAVE>Fly To</TD>
<TD>Navigation mode;&nbsp; sets a Point of Interest from which all other
movements in this mode are relative.</TD>
</TR>
<TR NOSAVE>
<TD BGCOLOR="#33CCFF" NOSAVE>Heads Up</TD>
<TD>Places a "heads up display" in the center of the viewing area;&nbsp;
3 navigation types in display:&nbsp; eyes, body and pan.&nbsp; These correspond
to the same types of movements that Walk provides but gives visual cues
to movement settings.</TD>
</TR>
<TR NOSAVE>
<TD BGCOLOR="#33CCFF" NOSAVE>Behaviour</TD>
<TD>Purpose unknown</TD>
</TR>
<TR NOSAVE>
<TD BGCOLOR="#33CCFF" NOSAVE>Interaction</TD>
<TD>Purpose unknown</TD>
</TR>
</TABLE></CENTER>
&nbsp;
<H4>
Navigation</H4>
In the following example, the sample scene <B><FONT SIZE=-1>examples/office2.wrl</FONT></B>
was opened (File->Open) into the default window (ie the window was not
resized or adjusted in any way).&nbsp; To move around this scene you can
use the mouse or keyboard.&nbsp; Keyboard bindings are described in the
<B><FONT SIZE=-1>help/mouse.html </FONT></B>file, which will also give
you a little more information about what kind of movements within a scene
are available.
<P>An example of movement through this scene would be to hold down the
middle mouse button (with the Flip button pressed as it is in the example
image below) and drag it around the viewing area.&nbsp; This would rotate
the entire room and its contents around the origin, which is positioned,
but not visible, in the middle of the viewing area.&nbsp; When this movement
is started the image will change to a wireframe view to speed processing.&nbsp;
The use of wireframe, flat shaded, smooth shaded and textured objects during
navigation and static display (when you aren't moving the scene around)
can be controlled from the <B>Display</B> option in the menu bar.
<BR>&nbsp;
<CENTER><IMG SRC="./gx/hammel/vrwave-3.jpg" HSPACE=10 VSPACE=10 HEIGHT=416 WIDTH=516><BR clear="both"></CENTER>
<CENTER><B>examples/office2.wrl example scene</B></CENTER>
<CENTER><IMG SRC="./gx/hammel/vrwave-4.jpg" HSPACE=10 VSPACE=10 HEIGHT=412 WIDTH=510><BR clear="both"></CENTER>
<CENTER><B>examples/office2.wrl example scene in wireframe mode</B></CENTER>
<P>This scene is probably the nicest image, asthetically speaking, of all
the examples.&nbsp; The image fills the viewable area and is a complete
room.&nbsp; If you navigate around the room you quickly learn that the
walls to the room disappear if you're viewing area would be blocked by
those walls&nbsp; For example, tilt the room down, then rotate it to the
left.&nbsp; You're view of the room is now outside of the right wall, but
in order to view the inside of the room the right wall is not drawn.&nbsp;
You can change this behaviour by using the <B><FONT SIZE=-1>Display->Two-sided
Polygons</FONT></B> option and setting this option <I>"On"</I>.&nbsp; The
default setting, <I>Auto</I>, will not display the wall if it gets in your
way.&nbsp; Turning this option on causes the back sides of the walls to
become visible, and so your view inside the room is blocked.
<CENTER><IMG SRC="./gx/hammel/vrwave-2.jpg" HSPACE=10 VSPACE=10 HEIGHT=412 WIDTH=510><BR clear="both"></CENTER>
<CENTER><B>examples/sensors/touchsensor.wrl, with the Display->Background</B></CENTER>
<CENTER><B>set to gray and the Heads Up Navigation button set.</B></CENTER>
<P>In this next example the Heads Up option is selected and you can see
the three view functions displayed in the middle of the viewing area.&nbsp;
These small boxes don't move with the rest of the scene as you drag it
around the viewing window.&nbsp; They stay centered in that window.&nbsp;
A red line is drawn from the center of one of these boxes to the current
cursor location showing direction and speed (longer lines give faster speed).
<P>The movement of the small sphere in this image is managed through the
use of the left mouse button, but only when the cursor is over the large
green box.&nbsp; Moving the cursor, left mouse button held down, moves
the sphere around the viewing area.&nbsp; If the mouse leaves the area
of the box then the sphere stops moving.&nbsp; Note that the area of the
box does not mean just a side of the box - it means what ever region of
the box is actually visible to the user.
<BR>&nbsp;
<BR>If you have a fast enough computer and enough memory you can turn on
interactive texturing.&nbsp; This allows you to view the the objects in
the scene with their full textures displayed while you move the scenes
and objects around the viewing area.&nbsp; Although I&nbsp;can't show this
feature here, I can show you another example scene which has a texture
map applied to the sides of a cube.&nbsp; The first example shows the texturing
on a cube with Two-sided Polygons turned off.&nbsp; The next example, which
is a full sized capture so you can see the details a little better, shows
the same image with Two-sided Polygons turned on.
<CENTER><IMG SRC="./gx/hammel/vrwave-5.jpg" HSPACE=10 VSPACE=10 NOSAVE HEIGHT=416 WIDTH=516><BR clear="both"></CENTER>
<CENTER><B>examples/isub/cube.wrl, with static texturing turned on</B></CENTER>
<CENTER>
<H4>
<IMG SRC="./gx/hammel/vrwave-6.jpg" HSPACE=10 VSPACE=10 HEIGHT=330 WIDTH=348><BR clear="both"></H4></CENTER>
<CENTER><B>Same image, but with two sided polygons turned on so</B></CENTER>
<CENTER><B>you can see the transparent parts of the image better.</B></CENTER>
<H4>
Visiting VRML 2.0 URLs</H4>
VRWave's beta Netscape plug-in does not work with Netscape 4.0 due to changes
from 3.0 to 4.0 in Netscapes security code.&nbsp; Since I&nbsp;use the
4.03 release at home I was not able to test the plug-in.&nbsp; Also, since
all of the VRML&nbsp;sites I visited used VRML&nbsp;embedded in HTML, and
since those pages caused my 4.03 version of Netscape to crash when I tried
to load them, I wasn't able to test the mime/type installation that would
launch VRWave as an external viewer.&nbsp; I also tried to download a newer
version of Netscape, but my connection kept timing out during the download
(its about 10Mb now).&nbsp; This is what I get for waiting till the last
few days before my deadline for this column before trying to get this all
working.&nbsp; Its my fault - not VRWaves.
<H4>
Getting Help&nbsp; and other information</H4>
There is a Help option in the menu bar at the top of the interface.&nbsp;
This requires that Netscape be in your path so that VRWave can launch it.&nbsp;
If Netscape is already running, it won't matter, since VRWave still needs
to try to run Netscape first, so it still must be in your PATH&nbsp;before
running VRWave.&nbsp; I'm not sure if I prefer this or would rather see
them use the NetHelp inteface for Netscape.&nbsp; I&nbsp;think I prefer
the latter, although NetHelp may not be accessible from Java (I&nbsp;use
an Xlib based API for it).
<P>The README file that comes with the binary distribution states that
an online users guide for VRWeb (VRWave's predecessor) is available from
http://www.iicm.edu/vrweb/help.&nbsp; However, this link doesn't seem to
work any more.&nbsp; I&nbsp;browsed the main VRWave web site and found
a link to <A HREF="http://www.iicm.edu/vrwave/release">http://www.iicm.edu/vrwave/release</A>,
which contains various online documentation.&nbsp; Unfortunately, I didn't
find a users guide per se.&nbsp; The best&nbsp; printed help available
will be the help/install.html and help/mouse.html files in the runtime
directories from the binary distribution.&nbsp; In particular, the mouse.html
file contains detailed information about mouse and keyboard bindings for
scene navigation.
<H4>
Compiling from source</H4>
The bad news here is that my Java development environment just doesn't
seem to be working and so I can't talk intelligently about building VRWave
from the source distribution.&nbsp; I had my Java environment marginally
working in Denver, but when I moved to Dallas I must have changed something
because neither javac nor Vibe seem to be working any more.&nbsp; It may
be time to upgrade to Red Hat 5.0 anyway, so maybe I'll fix it then.
<BR>&nbsp;
<H4>
To Wave or not to Wave</H4>
The question remains:&nbsp; is VRWave a good tool for viewing and learning
about VRML?&nbsp; Yes, absolutely.&nbsp; Its still early in its development
but the tool is very stable, it didn't crash at all on any test files I
loaded (although I was only able to use the example files in the distribution).&nbsp;
Some things I'd like to see is a little better help system or at least
one that can allow me to configure where Netscape is (since I used to upgrade
often I&nbsp;didn't have it in my path, I&nbsp;have a script that knows
how to find it).&nbsp; The URL&nbsp;feature is handy but it would be nice
to be able to select from a list of URLs.&nbsp; Such a feature is more
the realm of a browser than a VRML&nbsp;viewer.&nbsp; I suppose it depends
on which VRWave wants to be in the long run.
<P>If you are just getting started with VRML&nbsp;and would just like to
look at a few examples, this is a good place to start.&nbsp; You will need
to have a working Java environment - one that can run Java applets if not
compile Java code.&nbsp; Other than that, installation is a breeze and
there are enough example files to keep you at least midly entertained until
you can write your own VRML&nbsp;worlds.
<BR>&nbsp;
<TABLE WIDTH="100%" >
<TR>
<TD VALIGN=TOP COLSPAN="4" BGCOLOR="#000000" cellpadding="0" cellspacing="0"><IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" ALIGN=LEFT></TD>
</TR>
</TABLE>
&nbsp;
<TABLE WIDTH="100%" >
<TR>
<TD ALIGN=RIGHT><FONT SIZE=-2>&copy; 1998 by <A HREF="mailto:mjhammel@csn.net">Michael
J. Hammel</A>&nbsp;</FONT></TD>
</TR>
</TABLE>
&nbsp;
</BODY>
</HTML>