International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences, Vol XXXV, Part B4. Istanbul 2004
Each terrain part is created as DEMFeatureProxy3D
object. Afterwards all DEMFeatureProxy3D objects are
assembled in the DEMLayer3D to build the entire terrain.
Fig. 3 shows the final terrain object.
Fig. 3: Created terrain object.
3.2.2 Creation of Object Geometry with VisAD
The actual 3D object content of one
DEMFeatureProxy3D object is created with the means of
VisAD, a Java component library for the visualization and
analysis of numerical data (Hibbard, 2004).
The following explains the reason for using VIsAD in this
combination. The VisAD library is pure Java, including Java
3D for the visualisation of 3D object content. Thus VisAD
fits well into the GISterm Framework and the 3D-Service.
This includes all basic concepts for the handling of 3D object
content in the 3D-Service.
The data for the creation of the terrain content is provided by
the Height-Service. Afterwards the object geometry is created
with the means of VisAD. The resulting objects contain pure
Java 3D object content. This Java 3D object content is
fetched from VisAD and included in the
DEMFeatureProxy3D as geometry.
3.3 Texturing Object Content
By now we created the geometry of the terrain and included it
in the virtual universe. Texturing techniques provide the
possibility of adding a realistic impression or adding more
information to the scene.
3.3.1 What is Texturing?
“Texturing, also called fexture mapping, is a way to add
visual richness of a surface without adding the fine geometric
details. The visual richness is provided by an image, also
called texture, which gives the appearance of surface detail
for the visual object.” (Java 3D Tutorial 2004). The image is
mapped on to the geometry of the object content.
3.3.2 Goal
We can use texture mapping in our example for two different
reasons:
e One goal is to add a realistic impression of the
terrain in the scene. This can be achieved by using
satellite images or aerial views as texture.
e Another goal is to add additional information into
the scene. This can be achieved by adding specific
images as textures. Topographic maps for example
add much naming information, while geological
maps can give hints about the underground
situation in the presented region.
520
3.3.3 Texturing with Java 3D
Java 3D provides classes and methods for adding texture
images on top of the geometry objects, created with Java 3D.
Thus, the 3D-Service uses Java 3D for texture mapping.
Images used for texturing must fulfil two conditions:
e The image must be saved in a file format, supported
by Java3D. Examples for readable image formats
are GIF or JPG.
e "Java 3D requires the size of the texture to be a
mathematical power of two (1,2,4,8,16,...) in each
dimension" (Java 3D Tutorial 2004).
Image fulfilling these conditions can be used as texture for
Java 3D geometry.
3.3.4 Creating the Texture Image
The question is now, where does the texture image come
from for our terrain example? The user should have the
possibility to design the texture image. The user can
individually create his own 2D map, including several 2D
layers with appropriate content, in the base GIS GlSterm.
This 2D map is used as texture image for our terrain example.
Using the printing technique of GlSterm we can fetch a GIF
or JPG file of the current display region. These image files
can be saved in different resolutions (Normal, Middle or
High). The better the resolution of the image is the higher is
the number of pixel in the image and the bigger is the
memory consumption. This is important because, depending
on the image memory of the graphic card, the largest possible
size of the texture image is limited. The main memory is not
used. For example using a decent graphics chip (Nvidia
GeForce4 Ti 4200) limits the size of the texture to 2048 *
2048 pixel (Virtual Terrain Project 2004). Thus the decision
for the resolution of the texture image is a compromise
between good resolution and memory consumption.
However, images fetched from GlSterm do not match the
condition of power of two dimension sizes.
Thus we need to do image manipulation before we can use
the fetched image as texture. The ratio of the image
dimension of the fetched image depends on the ratio of the
displaying region in GlSterm. And usually both image
dimensions have an unacceptable size. The dimension of the
fetched image in our example is 1224 * 1036 pixel.
Fig. 4: Textured terrain
The idea to solve this problem is to divide the entire terrain
into parts fulfilling the requested condition of the power of
two dimension for a texture image. That means we decide on
a texture part dimension, matching the power of two
dimension. In our example we took a texture size of 512 *
512 pixel. Then we split the terrain into parts (see section:
Ini
Lo
.
co
as
tel
an
te)
te
sh
He
res
an
MT
Th
th
pr
In
pr