Our first example is a scene-construction application which uses an HTML form to pass IVL commands to a server. The server constructs the scene and returns it to the client as a VRML file. This application can be used as a VRML compliance tester (returns an error if the instanced scene doesn't comply with VRML 1.0 specifications), as a world-builder (for those without a scene assembler), and a format converter (since IVL will accept not only VRML but Inventor and DXF and several other formats as input scenes, but will only output VRML).
As described, this works with all browsers, but is suboptimal since all commands are sent, and the entire scene reloaded from the server each time the form is submitted. Browser modifications are necessary if one wants to execute just one IVL command at a time (after all, this is the advantage of an interpreted language) and if one wants just incremental updates to the scene. With the current protocols, the entire scene is downloaded from the server to the client upon each modification. We have been experimenting with the Netscape server push feature in order to send out just those parts of the scene graph which need to be modified. Since IVL maintains an internal naming scheme which is shared via the VRML file, the browser client then simply executes a replaceChild(), an addChild(), or a deleteChild() method on the scene fragment once it has been received.