| About This 
        Book
 
 
 What This  
          Book Contains
 
 How to Use   This Book
 
 Getting Started
 
 Conventions
 About the Authors Acknowledgements    |  
        About This Book 
           The Annotated VRML 97 Reference Manual contains the complete 
          specification of the Virtual Reality Modeling Language, as of April 
          4,1997. In addition, throughout this book you will find a variety of 
          technical annotations, authoring tips, and illustrative examples. While 
          the VRML specification is technically accurate and precise, it is not 
          intended to address questions on why it is designed the way it is, what's 
          the best way to use it, what to avoid, or how to implement it. These 
          issues and more are featured throughout this book. The annotations relate 
          the various separate parts of VRML into a coherent whole. The contents 
          of this book are relevant to implementors of the VRML specifications 
          as well as to authors and users of VRML.   This book is not a tutorial on VRML. There are a variety of books 
          that teach basic and advanced VRML concepts, and serve as excellent 
          companions to this book (see Appendix F, Recommended 
          Reading).   This book does not rely on or describe any single specific implementation 
          of VRML, rather it presents the ideal definition of VRML and suggests 
          typical implementation pitfalls and difficulties to watch out for. See 
          Appendix E, VRML Compendium, for a summary of 
          the browser and authoring tools available for you to choose from.  The first chapter, Introduction, describes the 
          motivation, history, and basis for VRML. Chapter 
          2, Key Concepts, presents a technical overview of the VRML file 
          format and underlying architecture. This chapter introduces you to the 
          file format syntax and goes on to discuss a variety of important architectural 
          fundamentals of VRML, such as prototypes, routing, scripting, execution 
          model, and binding node behavior. The third chapter, Node 
          Reference, contains the largest and most significant aspect of the 
          book. It defines the syntax and semantics of every node in the specification, 
          as well as complete working examples for each node, and a variety of 
          annotations and tips. Chapter 4, Field and Event Reference, describes the syntax 
          and semantics of the VRML data types--fields and events. The fifth chapter, 
          Conformance and Minimum Support Requirements, 
          specifies the baseline requirements to which VRML implementations must 
          adhere. This chapter is useful to authors and implementors alike, as 
          a benchmark of which features are required in a conforming VRML application. 
          Appendix A, VRML Grammar Definition, provides 
          a precise grammar definition of the VRML file format. Appendix 
          B, Java Scripting Reference, describes the integration of the Java 
          programming language with VRML. This appendix defines the specific classes 
          and methods that may be invoked from a VRML Script node using Java. 
          Appendix C, JavaScript Scripting Reference, defines the integration 
          of the JavaScript scripting language with VRML. It includes a detailed 
          specification of the JavaScript objects and functions available to a 
          VRML Script node. Appendix D, Examples, includes 
          the revised sample files found in the VRML specification. Appendix 
          E, VRML Compendium, lists a variety of Uniform Resource Locators 
          (URLs) to VRML-related sources and topics. Appendix 
          F, Recommended Reading, lists a variety of books that supplement 
          the material contained in this book. Appendix G, 
          Summary of Java Scripting API, provides a quick reference to the 
          Java classes and methods. Appendix H, Summary of JavaScript Scripting API, provides 
          a quick reference to the JavaScript objects and methods.  There are several ways to use this book. First you can read Chapter 1, Introduction, and Chapter 
          2, Key Concepts, for an in-depth description of the fundamentals 
          of VRML, and use Appendix E, VRML Compendium, 
          to find a variety of references on VRML-related information sources. 
          Advanced technical readers should have no problem using these chapters 
          as their introduction to VRML, while novices may wish to start with 
          an introductory book before reading these chapters. The second way to 
          use this book is as an everyday reference guide. It is organized for 
          fast access and daily use: specification text is easily distinguished 
          from the annotations; and notes, tips, and examples are located in the 
          section containing the relevant topic. The third way to use this book 
          is to read the notes, tips, and examples to enhance your knowledge and 
          gain new insight into VRML.  The examples included in this book conform to the VRML specification 
          and are accurate to the best of our knowledge, but may not work in all 
          browsers (see the browser's release notes for supported features and 
          known bugs).   This book contains references to a variety of URLs. Note that it is 
          possible that URLs may change or become inactive after the publication 
          of this book, and that it may be necessary to employ a search engine 
          to find a more up-to-date URL.   There are only two things needed to get started with VRML: a VRML 
          browser and a text editor. When choosing from the wide variety of VRML 
          browsers available, keep in mind which system you are using, which system(s) 
          you expect your users to have, and the essential VRML features that 
          you intend to use (not all browsers support all features in the specification). 
          VRML files are plain text files, so you can create them using any text 
          editor. Most word processors can read and write text files; be sure 
          to "Save As" plain text. Special-purpose programming editors 
          are even better for editing VRML files because they support features 
          such as matching opening and closing braces and automatically indenting 
          each line.   There are also VRML authoring tools available. These range from file 
          converters to single-task utilities to full-fledged authoring environments. 
          VRML has become so popular as a three-dimensional (3D) file exchange 
          format that many 3D applications output VRML. File converters from most 
          3D formats are also readily available. Note that there is a big difference 
          between an authoring system that outputs VRML and one that authors 
          VRML. Typically, native VRML systems support more features and produce 
          better results, but some of the systems that output VRML are just as 
          good.  1. There are three types of annotations in the book: technical notes, 
          authoring tips, and examples. Each annotation type is labeled with an 
          icon in the margin for easy recognition:     
        
           
            | TIP: 
              This is an example of an authoring tip. Tips range from suggestions 
              on proper usage to warnings on problem areas to nonobvious ideas 
              for combining and using VRML. |   
        
           
            | TECHNICAL 
              NOTE: This is an example technical note. It may contain historical 
              footnotes concerning the design of VRML, advanced technical notes, 
              or implementation details. These notes are typically of interest 
              to implementors and advanced authors. |   
        
           
            | EXAMPLE 
              (click to run): This is an example of a VRML example file. Most 
              of the examples start with an explanatory introduction; some include 
              an image illustrating the results on screen. Most of the examples 
              are complete, but some may include "..." to imply that 
              valid VRML syntax goes here: 
    #VRML V2.0 utf8 
    Transform { children [ 
      ... 
    ]}
 |   
         
             2. New terms, field names, and event names are printed in italic type:  
          A prototype is a . . .
 The radius field . . .
 
 The isActive eventOut . . .
  3. Node definitions specify the complete set of events and fields 
          for a given node type. The parts of the definition that correspond to 
          the file format are given in a bold, fixed-space font, while the rest 
          of the definition is given in a plain, fixed-space font:  
     Collision {
       eventIn       MFNode    addChildren
       eventIn       MFNode    removeChildren
       exposedField  MFNode    children       []
       exposedField  SFBool    collide        TRUE
       field         SFVec3f   bboxCenter     0 0 0
       field         SFVec3f   bboxSize       -1 -1 -1
       field         SFNode    proxy          NULL
       eventOut      SFTime    collideTime
     }
 
         4. Programming interfaces, VRML file examples, and URLs are printed 
          in a plain, fixed-space font:
 void createVrmlFromString( String vrmlSyntax 
          );
 Cylinder { radius 3 height 5 }
 http://www.aw.com
 
  5. DEF and USE names are usually chosen as an abbreviation of the 
          node type and are numbered if there are more than one of the same type 
          in the file. For example, if an example file contains two ProximitySensors, 
          the first one would be named PS1 and the second one PS2:  
          #VRML V2.0 utf8Transform { children [
 DEF PS1 ProximitySensor {...}
 ...
 DEF PS2 ProximitySensor {...}
 ...
 ]}
  6. Background nodes have been added to most of the examples to produce 
          white backgrounds for printing. 
  7. The colors in most of the examples were chosen to be in gray scale 
          since the images are printed in gray scale.
  8. Field values and closing braces and brackets are often combined 
          on one line to compress the examples in the book:     #VRML V2. utf8
    Transform { children [
      Sphere { radius 4 }
      Cylinder { height 5 radius 3 }
      Transform {
        children [
          ...
    ]}]} 
         Acknowledgments
 This book would not be possible without the dedication and help of 
          many people. The following is a short list of some of those people. 
          We cannot possibly thank everyone (although we would like to); please 
          forgive us if we've neglected to mention you here.   Special thanks to Paul Strauss for his pioneering efforts on Open 
          Inventor, which eventually led to VRML. Thanks to the rest of the Open 
          Inventor engineering team for laying the groundwork that VRML is based 
          on: Thad Beier, Alain Dumesny, Dave Immel, Paul Isaacs, Howard Look, 
          David Mott, Nick Thompson, and Helga Thorvaldsdóttir. Thanks 
          to Chris Marrin for his work on the Java and JavaScript appendices, 
          as well as a variety of other important areas of the VRML Specification. 
          Thanks to Mark Pesce and Tony Parisi for writing the first prototype 
          of a 3D web browser, Labyrinth, and for their tireless contribution 
          and dedication to VRML.   Thanks to Mitra, Kouichi Matsuda, Rodger Lea, and Yasuaki Honda for 
          their work on the Moving Worlds proposal and the Java appendix. Thanks 
          to the many unnamed people who contributed ideas and work to the VRML 
          Specification--you know who you are.   Thanks to Silicon Graphics, Inc., for creating a fantastic work environment 
          and for taking a risk on VRML.   Thanks to Mary Treseler, John Fuller, Keith Wollman, and the Addison 
          Wesley Longman staff for guidance and support. Thanks to our book reviewers: 
          Scott S. Ross, Stephen Chenney, Len Bullard, Cindy Reed-Ballreich, Jan 
          C. Hardenbergh, Chet Murphy, Jai Natarajan, Matt O'Donnell, David Story, 
          and Mason Woo. Thanks to Sam Chen and Silicon Graphics, Inc., for providing 
          the cover image for this book. Thanks also to Sam Chen, Silicon Graphics, 
          Inc. and Construct Internet Design for the O2 Out of Box Experience 
          images used in the color plates.   And last, but not least, thanks to the members of the www-vrml 
          mailing list for your ideas, passion, and hard work.   About The Authors
 
            
         Rikk Carey lives in California and spends his his time on 3d graphics 
          stuff, his gardens, taking care of his bunny FooFoo, looking 
          at his guitar, and playing golf.   
            
         Gavin Bell lives in Wisconsin where he enjoys 3d graphics stuff, bicycling, 
          and playing with his cats Tekka and Echo. 
 If you wish to contact the authors:
  email: Rikk Carey
  email: Gavin Bell
  email to both: Rikk Carey 
          and Gavin Bell |