Install ======= gunzip and extract the stuff to a directory - let's call it TOPDIR. edit the shell file 'mw' and change MW_DIR to TOPDIR. test it by running mw boink/anim00.wrl Run mw with arguments which can be - no arguments: the agenda file is read and all worlds are loaded. - a url (http or file protocol): the url is downloaded and displayed. - a filename The browser downloads the files and caches them in ${TMPDIR}. If however you run vss on a separate machine (as is done for the CAVE), you may need to set TMPDIR to a local directory, so that vss can access the files. This is already done in the shell file provided. If audio is desired, run mw with -audio as an additional argument. Navigation ========== is standard CAVE Navigation. The speed field in NavigationInfo is used to adjust the speed of navigation. Also a rudimentary version of the EXAMINE mode is implemented. You probably won't like it. The left wand button is the action button. The middle button pops up a hud using which you can switch between viewpoints, toggle the headlight and change worlds. The right button currently cycles between the various viewpoints in the scene. Files are cached in /usr/tmp and are named mw*.* If, for some reason the browser crashes (hardly ever likely to happen :-) ), please delete the files there. Miscellaneous ============= You can customize the interface by modifying hud.wrl. A browser specific node BrowserObject is used to access the browser internals. This will eventually be replaced by an EXTERNPROTO. See wand.wrl. When retrieving file over the web, if a particular URL is bogus, the server probably will send back a HTML file saying "File not found". Since the browser doesn't speak HTTP yet, it will merely say VRML read error in /usr/tmp/mwDAAa003-K.wrl: File does not have a valid header string The mysterious agenda file resurfaces again! On start up the browser checks the current directory for this file and loads in all the worlds mentioned within. Am using the donated VRMLScript parser. So VRMLScript is limited to what the parser can do. The good news is that it does most of the common things. Things like directOutput, creating fields, etc are not implemented. Unimplemented Nodes are Billboard, ElevationGrid, Extrusion, Fog, FontStyle, MovieTexture, Text, VisibilitySensor, Sound. An list of incompleteness: - addChildren and removeChildren not tested - no collision detection - Ignores diskAngle in CylinderSensor - Textured Backgrounds not implemented - VRML lights not implemented correctly (a rendering library problem) - this list Credits ======= VRML 2 browser written as part of my (Swami, or Swaminathan Narayanan) master's thesis "Adapting the Virtual Reality Modeling Language for Use in Virtual Environments". http://www.evl.uic.edu/swami/cave6u Code based on QvLib by Paul Strauss of SGI VRMLScript interpreter by Chris Marrin of SGI Miscellaneous stuff filched from Performer example code, Mesa-glut source, Haeberli's image utils code, Inventor example code, etc.