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/