VRMLworks
*comp.lang.vrml**FAQ Answers
1. The Basics*
1. *What is VRML?*
VRML, which is pronounced either "vee-are-em-ell" or "VER-mul", is
an abbreviation for Virtual Reality Modeling Language. You might see
some references to "Virtual Reality /Markup/ Language", which is
what VRML was called at the very beginning -- taking its cue from
HTML: Hypertext Markup Language -- but it's been several years since
people realized that our vision could be and ought to be a good deal
bigger than simply marking up text to add on 3D capabilities.
VRML is, in the words of the VRML Consortium <http://www.vrml.org/>,
"an open standard for 3D multimedia and shared virtual worlds on the
Internet."
1. *An open standard: *VRML was recognized as an international
standard (ISO/IEC-14772-1:1997) by the International
Organization for Standardization (ISO) and the International
Electrotechnical Commission (IEC) in December, 1997. There isn't
space here to discuss the openness of the process, but ISO was
so impressed by it that they're now studying it as a model for
future standards development.
2. *3D multimedia:* Long before its official standardization VRML
became the /de facto/ standard for sharing and publishing data
between CAD, animation, and 3D modeling programs; virtually
every one of those programs now exports VRML or has a utility or
plugin to convert its native file format to VRML. VRML is
included or referenced in the upcoming MPEG-4
<http://jota.sm.luth.se/~d94-rpn/74/s/slide15.html> standard,
Java3D
<http://www.sdsc.edu/~nadeau/Talks/NASA_EOSDIS/java3d.htm>, and
in other developing standards.
3. *Shared virtual worlds:* Being able to talk and work in a 3D
shared virtual space was one of the earliest motivations of the
VRML pioneers. The VRMLworks has a whole section on cyberspace
<http://home.hiwaay.net/~crispen/vrmlworks/cyberspace.html> that
talks about the work that's being done to realize this vision.
4. *On the Internet:* Unlike previous 3D applications, using the
Internet to share 3D objects and scenes was built into VRML from
the very beginning. The standard is even published in HTML.
2. *What kind of language is VRML?*
VRML isn't a general purpose programming language like C++, a script
language like JavaScript or a page specification language like HTML.
It's a scene description language that describes the geometry and
behavior of a 3D scene or "world".
3. *What's a VRML world?*
VRML "worlds" got their name from an original goal of VRML: shared
virtual worlds on the Internet. VRML worlds can be single files or
groups of files that load at the same time. They can range from
simple objects to very complex scenes, but never include the entire
geometry and all the features of the earth, so there's some hope of
downloading them in your lifetime.
4. *What is the format of a VRML file?*
A VRML file is, until a compressed binary format is approved, a
plain UTF-8 or ASCII (a subset of the UTF-8 character set
<ftp://ds.internic.net/rfc/rfc2044.txt>) text file. A VRML file may
be compressed using |gzip| <ftp://prep.ai.mit.edu/pub/gnu/>, a
freely available utility, and may be created, viewed, and edited in
any plain text editor.
5. *What is the MIME type of a VRML file?*
The MIME type
<http://www.cis.ohio-state.edu/hypertext/faq/usenet/mail/mime-faq/part1/faq.html>
of a VRML file is "|model/vrml|", although some servers may deliver
it as the older MIME type "|x-world/x-vrml|". The spec requires VRML
browsers to support both MIME types. If you administer a web server,
you should use the official type, not the older "x-" type.
6. *What filename extensions designate a VRML file?*
A VRML file ends in "|.wrl|". A VRML file name may end in
"|.wrl.gz|" or "|.wrz|" to indicate that the file has been gzipped,
but this is not necessary, and browsers are not required by the spec
to support these file name extensions.
Blaxxun has a separate MIME type (|application/x-ccpro|) and
"extension" (|.bxx|) for its multi-user worlds. This lets users
configure some other VRML plugin as their default VRML browser while
still using Blaxxun's CCPro browser for multi-user worlds. Although
these files contain VRML, neither the content of the files nor the
MIME type nor the extension are governed by the VRML spec.
7. *What is |comp.lang.vrml|?*
The unmoderated USENET newsgroup |comp.lang.vrml| has been chartered
for the purpose of discussions on Virtual Reality Modeling Language.
This newsgroup has largely superseded |alt.lang.vrml|, the first
newsgroup chartered for discussions of VRML. The frequently asked
questions list for this newsgroup is kept at
http://home.hiwaay.net/~crispen/vrmlworks/faq/.
8. *What's the difference between VRML 1.0 and VRML 97?*
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
Another very important difference is that VRML 97 is an
international spec <http://www.vrml.org/Specifications/VRML97/>
approved by the International Organization for Standards:
*ISO/IEC-14772-1:1997* and VRML 1.0
<http://www.vrml.org/Specifications/VRML1.0> isn't. Reading the
specs is far from the easiest way to tell the difference, but it's
the surest.
The first line of every VRML 97 file starts with:
#VRML V2.0 utf8
and the first line of every VRML 1.0 file starts with:
#VRML V1.0 ascii
Many, but not all, VRML 97 browsers will read and properly render
VRML 1.0 files. No VRML 1.0 browser will read and properly render
VRML 97 files.
9. *What's the difference between VRML 2.0 and VRML 97?*
There isn't any. But here's an important warning: there were several
working draft specs developed between 1995 and the end of 1997. Some
of those drafts are still out there, and they differ in small, but
sometimes vital, ways from the final spec. Make sure you're asking
or answering a question based on the final international spec
<http://www.vrml.org/Specifications/VRML97/> (IS), not an earlier draft.
10. *What do I need to view (or visit) a VRML world?*
You need a VRML browser. There are three kinds of VRML browsers:
1. *A stand-alone application. * You can compile stand-alone
applications that can view and manipulate VRML worlds with
development kits such as Open Worlds
<http://www.openworlds.com/>, JVerge
<http://www.vlc.com.au/JVerge/>, WorldView for Developers
<http://www.intervista.com/worldview-developers/index.htm>, and
Open Inventor
<http://www.sgi.com/developers/technology/graphics/inventor.html>.
Many people will not want to or need to compile applications and
will use one of the other two kinds of browsers.
2. *A helper application.* A helper application has all the
capabilities it needs to view and manipulate VRML worlds and
doesn't need to be compiled. You generally identify a program
like this to your web browser as a helper application, much as
you do for a PostScript or Microsoft Word viewer, and whenever
the web browser receives a link to a VRML world, it will launch
the helper application. Many helper applications will call on
the web browser when they activate a link for an HTML page. Two
popular VRML helper applications are Sony's Community Place
<http://www.community-place.com/>, and VRWave
<http://www.iicm.edu/vrwave/>.
3. *A plugin.* Plugins use the facilities provided by many web
browsers to display VRML worlds in your web browser. The two
most popular VRML plugins are WorldView, also called Microsoft
VRML, for Microsoft Internet Explorer and Cosmo Player for
Netscape Navigator and Communicator. Many versions of web
browsers come with a VRML plugin pre-installed. There is a page
at the VRMLworks
<http://home.hiwaay.net/~crispen/vrmlworks/browser_test.html>
that can help you see if you have a VRML plugin already, and
check how it's working. If your web browser does not have a VRML
plugin installed, you can download the plugin from Microsoft
<http://www.microsoft.com/vrml/toolbar/content.htm>, Intervista
<http://www.intervista.com/>, or Cosmo Software
<http://www.cosmosoftware.com/>.
It is absolutely /not/ necessary to use a particular VRML browser
with a particular web browser, unless the VRML browser maker says
that their VRML browser will not work with a particular web browser.
And you aren't required to use the browser that came preinstalled in
your web browser. Check the list of VRML browsers
<http://www.sdsc.edu/vrml/browsers.html> at the VRML Repository for
alternatives.
As a general rule, VRML helpers and plugins are free. When there is
a charge, the product may offer special capabilities that justify
the cost. The following FAQ answer has information that may help you
choose a browser.
11. *What VRML browser is best?*
The one you have now is best, and everybody already agrees with you.
Please don't discuss this on |comp.lang.vrml|, though questions
about which browsers support a particular feature are fine. For
information on VRML browsers, the standard source is the VRML
Repository's list of browsers
<http://www.sdsc.edu/vrml/browsers.html>. You may also wish to check:
* c|net's list of VRML browsers
<http://www.cnet.com/Content/Features/Techno/VRML/browser.html>
* Greg Roelofs' page on texture and PNG support in VRML browsers
<http://www.cdrom.com/pub/png/pngvrml.html>
* Greg Seidman's table of features implemented in VRML 2.0
browsers <http://www.cs.brown.edu/~gss/vrml/comparison/>
* Yahoo's list of VRML plug-ins
<http://www.yahoo.com/Computers_and_Internet/Software/Internet/World_Wide_Web/Browsers/Plug_Ins/VRML/>
12. *Is there a VRML browser for [Mac/Unix]?*
For most platforms, the answer is yes. The VRML repository has a
list of browsers <http://www.sdsc.edu/vrml/browsers.html> and the
platforms they can run on. Alas, there is neither a web browser nor
a VRML browser for my Radio Shack Color Computer. Just in case you
miss this on the VRML Repository, Cosmo Software
<http://www.cosmosoftware.com/> and Intervista
<http://www.intervista.com/> both have VRML browsers for the Mac.
13. *I downloaded a VRML world to study it and it seems to be in some
kind of binary format. How do I find out about VRML binary format?*
This is currently one of the most frequently asked questions on
|comp.lang.vrml|, so you definitely aren't alone. What's more,
you're using a very admirable technique -- looking at what other
people have done so you can see how they've handled challenges
you're currently facing.
The only thing you lack is a little bit of knowledge that isn't in
the spec. Many VRML content developers want to minimize download
time for their visitors, so they compress the file using |gzip|, a
free compression utility which you can download for most platforms
from the Free Software Foundation <http://www.fsf.org/> at
ftp://prep.ai.mit.edu/pub/gnu/. There is a utility called |gunzip|,
available from the same place, which will turn the file back into
plain ASCII text.
To work around a bug in some web browsers, many authors choose to
name those gzipped worlds "|foo.wrl|" instead of "|foo.wrl.gz|", the
default file name that |gzip| generates.
There is currently no compiled or binary format for VRML, but there
is an active Working Group
<http://www.vrml.org/WorkingGroups/vrml-cbf/cbfwg.html> in the VRML
Consortium that's developing one.
14. *What's the cheapest way to get started in VRML?*
1. Get a VRML browser. There is a list of browsers
<http://www.sdsc.edu/vrml/browsers.html> on the VRML Repository.
There is a section in the VRMLworks
<http://home.hiwaay.net/~crispen/vrmlworks/view_intro.html> on
selecting, installing, and troubleshooting a VRML browser.
2. Learn some VRML. There is a list of tutorials
<http://home.hiwaay.net/~crispen/vrmlworks/tutorials.html> at
the VRMLworks which lists not only tutorials but addresses of
other lists of tutorials.
3. Get a copy of the VRML spec from the VRML Consortium. There are
free zip and archive files <http://www.vrml.org/Specifications/>
that contain the whole spec so that you can keep it on your own
computer.
4. Get a plain text editor. You probably already have one. On
Windows machines, Notepad is fine. Microsoft Word and similar
word-processing applications will not do the job unless they
have a save to plain ASCII feature, since word processors
generally insert some special characters that your VRML browser
won't understand. If you're used to |vi| on Unix systems, there
is a free |vi| clone for a number of platforms called |vim|
<http://www.vim.org/>.
5. Get some public domain models and textures to put into your
world. The VRMLworks has a list of model sources and a model
search engine
<http://home.hiwaay.net/~crispen/vrmlworks/models.html>.
6. Get some freeware tools that can help with your world building.
The VRMLworks has a list of useful tools
<http://home.hiwaay.net/~crispen/vrmlworks/tools.html> for world
builders.
Total cost so far: zero. Many excellent VRML worlds have been built
for the same price.
The very first thing you should spend money on is a good VRML book.
The VRML Repository has a list of books
<http://vrml.sdsc.edu/cgi-bin/display.cgi?category=Books>, and the
VRMLworks has some criteria for selecting a VRML book and reviews of
current books
<http://home.hiwaay.net/~crispen/vrmlworks/books/index.html>.
Now that you've decided you love VRML and need to do more than your
current tools allow, get some of the excellent modeling, conversion,
and post-production tools that are out there. The VRML Repository
has a list of tools <http://vrml.sdsc.edu/3dauthoring.html> ranging
from freeware to several hundred US dollars.
15. *What's the easiest way to get started in VRML?*
Get an integrated VRML development system (called a modeler or a
world builder) that has the capability to generate VRML models and
behavior. There is a list of world building tools
<http://vrml.sdsc.edu/cgi-bin/display.cgi?category=Content+Development+-+World+Builders>
at the VRML Repository that can get you started. The VRMLworks has
some criteria for selecting modelers
<http://home.hiwaay.net/~crispen/vrmlworks/model_obj.html> to fit
your experience and style.
Not long ago you had to learn VRML even to get started. Now it's
perfectly possible to build very decent worlds without learning VRML
just as you can now build perfectly good web pages without learning
HTML.
As you grow in experience with VRML, you'll probably discover that
many modelers produce worlds that are too big to render efficiently.
You may also find that very subtle effects are beyond the resolution
of some modeling tools. The VRMLworks has a list of tools
<http://home.hiwaay.net/~crispen/vrmlworks/tools.html> that can help
you in post-production to make your worlds fast, efficient, and
eye-catching, and you may find that you'll need to learn some VRML
to take that extra step toward realizing your artistic vision, in
which case the answer to the previous question <#q14> may be
helpful, as may another section in the VRMLworks on a process for
building VRML worlds
<http://home.hiwaay.net/~crispen/vrmlworks/process.html>.
16. *Where are the best places on the net to find out about VRML?*
The following sites are near the top of my personal, very long list:
* The VRML Consortium <http://www.vrml.org/> -- and don't neglect
the Working Group <http://www.vrml.org/WorkingGroups/> pages
* The VRML Repository <http://vrml.sdsc.edu/> at the San Diego
Supercomputer Center
* The VRMLworks <http://home.hiwaay.net/~crispen/vrmlworks/>
* The Mining Company <http://vrml.miningco.com/> -- and don't miss
their Wednesday night VRML chats.
But you shouldn't neglect any of the sites on the VRMLworks' list of
general references
<http://home.hiwaay.net/~crispen/vrmlworks/tools.html#General> and
periodicals
<http://home.hiwaay.net/~crispen/vrmlworks/tools.html#Periodicals>
on the net.
[line]
*Did I leave something out on one of these questions that you need to
know? **Let me know* <mailto:crispen@hiwaay.net>.
/-- Bob Crispen
-- Thursday, June 11, 1998/