Our solution is a selective visualization method to partially visualize the terrain surface near the
viewpoint. Compared with the LOD technology displaying faraway area in low resolution, this method
ignores the barely visible faraway area and only visualizes the area within current view culling. Users
can also update the viewing area by querying the database through the user interface. The view culling
is managed by switching and displaying terrain data in tiles. To do this, a new STILE node with the
PROTO mechanism of VRML is designed. The new node contains the information about tileID,
resolution, spacing, DEM elevation values, texture, visibility and other geo-information. When the
visibility is triggered as true, the node will send out inquiry event, download geometry, texture and
other information data from the database and visualize them in the VRML browser. This function is
supported by the Java mechanism embedded in VRML. Figure 3 describes the basic structure of a
STILE node. The information of a tile is updated in a dynamic way which means that data transmission
and visualization occur when users are navigating in the virtual scene. It is implemented by using
VRML Script node and EAI (External Authoring Interface). Both of them reference objects and
behaviours in VRML and offer the interface to communicate between VRML scene and Java programs
containing a connection to database via JDBC (Java Database Connection).

Figure 3: A STILE node interface
For the terrain model generated in Section 3, an 8x4 tiles division is made. The size of a tile is
determined by the performance of visualization and interaction after several trials. VRML
ProximitySensor is used to trace the position and orientation of current viewpoint. With these values, it
is easy to locate the current view tile from which a set of tile IDs under the view culling can be
obtained. Figure 4 illustrates an example of updating the viewpoint.

Figure 4: An example of updating the viewpoint
The entire selective visualization algorithm is specified as follows:
Step 1: Initialize 32 STILE nodes and obtain Java objects that reference the VRML nodes and
useful fields.
Step 2: Get the current position and orientation value by referencing ProximitySensor node. The
index number of current tile, denoted as currTileID, can be obtained as well with the help
of resolution and spacing fields of STILE node.
Step 3: Collect the tileID values of the tiles that are set to be visible from 32 tiles by checking the
visible_changed eventOuts and put the results to a set named tilesBeforeVis. With
currTileID and the corresponding attributes of the extensibility of this tile (Table 1), a set
named tilesAfterVis is established to index the tiles that are theoretically within view.
Step 4: Compare the elements in the set tilesBeforeVis with those in the set tilesAfterVis. If there
are any iterative elements, delete them in both sets.
Step 5: Set the values of set_visible eventIns of the tiles indexed in tilesAfterVis as true and set the
values of set_visible eventIns of the tiles indexed in tilesBeforeVis as false.