Skip to ContentSkip to Navigation
Society/business Center for Information Technology Research and Innovation Support Virtual Reality and Visualisation


Vrmlview is a stand-alone viewer for VRML97 files. It supports multiple screens using multi-threading or multi-processing, sound and scripting. Most VMRL97 node types are supported. Special features are correct treatment of transparency and reflection mapping across multiple screens. It has an efficient rendering engine based on OpenGL using frustum culling, polygon strips, GL interleaved arrays and display lists. Positional audio is supported through the OpenAL library which seems to have some problems.

See also an introduction to VRMLview.


Required graphics libraries:

  • GL
  • GLU
  • GLUT (only used for displaying text, can be turned of by defining NO_GLUT)
  • libjpeg (for textures)
  • libgif or libungif (for textures)

and one of the following:

  • GLUT (single screen)
  • MPK Multipipe SDK (single and multi screen)
  • CAVELib (multi screen with head tracking)

Optional audio library:

  • OpenAL (problems under Linux, no stereo effects, and IRIX, stereo wav file are interpreted as mono and thus played at half the frequency with some noise, also not all wav sample rates are supported)

Optional JavaScript library:

  • SpiderMonkey(does not compile under IRIX; download mozilla which comes with a compiled

Command line options

The command line option -h or -help displays the usage of vrmlview.

For correct vrml files the users shouldn't need any options, unless the frame rate is to low:

  • -nq which controls the smoothness of Cones, Cylinders and Spheres. The default value is 6. When a scene contains many of these objects and the framerate is too low try -nq 3 or -nq 2. This can increase the frame rate by up to a factor of 4 or 9 respectively.
  • -fastselect which turns off the rendering of all non-Sensor vrml objects for selection with the mouse or wand. This means one can interact with Sensor objects which are behind non-sensor objects. This can speed up the frame rate in complex scenes.

When the scene appears flat-shaded whereas it should not be, there is a problem in the vrml file. One of the following two options usually solves this:

  • -smooth which is necessary to make some scenes look smooth.
  • -angle which is necessary for vrml files written by 3D Studio Max, which does not write a creaseAngle field in IndexedFaceSet's. This makes objects look flats shaded. To fix this try -angle 1.5. Note that the angle is given in radians.

The command line options are:

Usage: ./vrmlview [command-line options] <vrml file> Options that influence the appearance of the scene: -smooth smooth normals over polygons with identical coordinates without identical coordinate indices -angle crease angle (rad) for objects without explicit creaseAngle (try 1.5 for 3dsmax output) (default 0.0) -light directional lights illuminate the whole scene (3dsmax) -ambient minimum ambientIntensity in Material (default 0.0) -ccw set ccw to TRUE for all IndexedFaceSets Options that influence the timing: -wait wait for 'Enter' for starting the time -stop stop time (default 0.0) Options that influence the image and audio quality: -nq number of quads along 90 degrees of a sphere and cylinder and cone and twice the number of quads along the height of a cylinder and cone (default 6) -nqmin same as -nq, but sets detail for objects when they are far away from the viewer (default 1) -nocap do not put caps on cylinders and cones with height larger than twice the diameter -linesmooth smooth lines and text -specpz specular highlights take the view direction parallel to the z-axis -fastselect object interaction with the mouse does not use occlusion -noisover do not check if the cursor is over a clickable object -maxtexture maximum texture size (default 2048) -samplerate audio sample rate (default 22050) -soundplayer use a system command for playing sound files (default '') Options that only influence the performance: -amax maximum size of GL arrays (default 10000) -cull mininum number of optimized vertices in objects for culling, 0 is no culling (default 10) Options for debugging: -dump dump the scene -dumpall dump the scene including coordinates -dumptree dump the scene tree -notrans do not pre-transform the scene -nolist do not use GL display lists -nozsort do not z-sort polygons in transparent objects -notexture do not use textures -single do not use double buffering -transparent set the minimum Material transparency to 0.5, makes the whole scene transparent

Additionaly the GLUT version has a -stereo option for stereo viewing, the MPK version has a -config option for specifying the MPK config file and the CAVELib version has a -nowandbeam option to not display the wand beam.

User interface

The left mouse button can be used to click on sensors in the scene, when there is no sensor under the cursor the scene can be rotated by holding the left mouse button down.


'Esc' quit
'v' and 'c' after navigation: reset Viewpoint
without navigation: switch to the next and the previous Viewpoint of the scene
'n' switch to the next Navigation type (vrml default: WALK, EXAMINE, FLY, NONE)
'w' and 's' WALK, FLY: accelerate forward and backward
EXAMINE: move the Viewpoint closer and further away
'a' and 'd' WALK, FLY: accelerate to the left and the right
EXAMINE: rotate the scene left and right
keypad '+' and '-' increase and decrease the speed of the vrml time
keypad '*' reset the speed of the vrml time to real time
'Backspace' reset vrml time to 0, might not reset the scene completely to its original state
'Enter' start the vrml time, only used when vrmlview has been started with -stop

The CAVELib version only supports the 'Esc', 'Backspace' and 'Enter' keys.

CAVE wand controls:

joystick forward and backward move in the direction in which the wand is pointing, the wand beam turns green when it intersects a sensor
joystick left and right rotate around the vertical axis
left button activates sensors in the scene
middle button see 'v' above
right button see 'n' above

Node support

Currently 52 of the 55 VRML97 node types are supported.
Not supported are: Anchor, Extrusion, MovieTexture.

Additionally the new ReflectionMap node is supported, which can be used instead of an ImageTexture.

Most, but not all, routing to exposedField's (set_...) is implemented. Routing from exposedField's (..._changed) is only implemented for rotation and translation in Transform.

The following nodes are not fully supported:

BackGround skyAngle is not supported
Collison collision detection is not supported
FontStyle not all alignment options are supported
Script does not support SFNode and MFNode as field or event; Browser object functions and object functions are not implemented

Files with unsupported nodes are read correctly, but some functionality might be missing.

Additional file format support

For texture nodes:

  • rgb (supports transparency)
  • bw
  • jpeg
  • gif (supports transparency)

For AudioClip:

  • wave, unfortunately OpenAL under IRIX does not convert all sample rates and stereo files correctly, 22.05 kHz and 44.1 kHz mono seem to work, also the conversion under Linux does not give a very good sound quality, so it is better to use 22.05 or 44.1 mono. Also, there is a command line option -soundplayer to use a soundplayer via a system call, instead of OpenAL.

The binaries for the onyx are:

  • GLUT version:     /usr/local/vrmlview/vrmlview.glut
  • MPK version:      /usr/local/vrmlview/vrmlview.mpk
  • CAVELib version /usr/local/vrmlview/vrmlview.cave

For a single screen the GLUT version is optimal. Use the CAVELib version for the Reality Cube and use the MPK version for the Reality Theatre. MPK configuration files for the Reality Theatre are:

  • /usr/local/vrmlview/mpk_th.mono
  • /usr/local/vrmlview/mpk_th.stereo

A Linux version of VRMLview is freely available for members of the University of Groningen. Requests for LINUX/VRMLview must be submitted to the HPC/V .

Last modified:06 February 2020 4.35 p.m.