For any library that invests in IGI Global's InfoSci-Books and/or InfoSci-Journals databases, IGI Global will match the library’s investment with a fund of equal value to go toward subsidizing the OA APCs for their faculty patrons when their work is submitted/accepted under OA into an IGI Global journal.

Subscribe to the Latest Research Through IGI Global's InfoSci-OnDemand Plus

InfoSci®-OnDemand Plus, a subscription-based service, provides researchers the ability to access full-text content from over 100,000+ peer-reviewed book chapters and 25,000+ scholarly journal articles that spans across 350+ topics in 11 core subjects. Users can select articles or chapters that meet their interests and gain access to the full content permanently in their personal online InfoSci-OnDemand Plus library.

Purchase the Encyclopedia of Information Science and Technology, Fourth Edition

and Receive Complimentary E-Books of Previous Editions

When ordering directly through IGI Global's Online Bookstore, receive the complimentary e-books for the first, second, and third editions with the purchase of the Encyclopedia of Information Science and Technology, Fourth Edition e-book.

Create a Free IGI Global Library Account to Receive a 25% Discount on All Purchases

Exclusive benefits include one-click shopping, flexible payment options, free COUNTER 5 reports and MARC records, and a 25% discount on single all titles, as well as the award-winning InfoSci®-Databases.

Abstract

Although extensive use of basic attributes such as color and material will be able to make an object realistic to the human user, it will be time consuming to develop the code for objects that have complicated geometries or appearances. As an example, to create an object with many color patterns on, say, a curve surface, many zones or strips may need to be individually defined using the appropriate color or material properties. To save programming effort, Java 3D allows the use of what is known as texturing and image mapping, which will be the concern of this chapter. Specifically, there are four ways to apply colors to a visual object in Java 3D. The first one is to apply color by defining the color of each vertex in the associated geometry object introduced in Chapter III. Another two ways are to use the coloring attributes in an appearance object and use a material object explained in Chapter IV. Alternatively, as will be discussed in this chapter, we can also apply textures. Texturing is a simple method of giving a geometrical object a realistic appearance. While a desert landscape can be created by simply setting the coloring attribute to golden brown, the result will be dull and unrealistic. However, by using a file with a digital photo for a real desert and applying this on top of the desert geometry, a realistic desert can be constructed in the virtual 3D world (Seamless textures pack, 2006). With texturing, we have new means to add visual details without the need to have additional geometries. The image used for texturing is mapped on to the object at rendering time, and as for material and coloring attributes, the inclusion of texturing can be carried out through an appearance object (Meyer, 2006).

Texture Loading

The following four steps are involved for applying textures to a geometry:

• Prepare texture image.

• Load texture.

• Set texture through an appearance object.

• Specify texture coordinates.

The preparation of the best texture image is best performed using a good imaging editing software. However, it should be noted that the sides of the image must be integer powers of two such as 128 by 256, failing which may result in a runtime exception. Java 3D accepts a variety of picture formats, including gif and jpg.

The loading of the texture image can be done from files or through URLs. Lines 1 and 2 in Figure 1 give an example on how this can be performed. Basically, the first line loads the file, picture1.gif, to create an ImageComponent2D object, which can then be used by an appearance object. Note that image loading in Java 3D requires an image observer, which can be any of the AWT components and is specified in the second argument in line 1. The image observer is for the purpose of monitoring the image load process and can be queried on details concerning this process.

Figure 1.

Loading texture

In addition to the previous method, the loading of images can also be performed by using the NewTextureLoader class, which is an extension of the TextureLoader class. This new class eliminates the need to specify an image observer component every time TextureLoader is instantiated. Rather, the image observer only needs to be specified once.

Having loaded the image, the created ImageComponent2D object must be added to the appropriate appearance bundle. The code segment from lines 4 to 7 in Figure 1 illustrates how this can be done.

Texture Coordinates

After loading the texture image and adding the created texture object to an appearance, we will now need to specify the texture coordinates that will be applied to each of all the vertices of the geometry object. This serves to define the 2D mapping that maps the 2D texture image to each face of the geometry object.