We have discussed important Java 3D objects that are basically static in the last few chapters. Starting from this chapter, we will be looking at universe and objects that are dynamic in nature. Specifically, we will discuss issues on animation and interaction in this and the next chapter, respectively. As well demonstrated by popular interactive computer games, animation, and interaction are crucial in making a Java 3D world more interesting. Technically, animation is associated with changes in graphical objects and images as time passes without any direct user action, while interaction corresponds to any such change in response to an action or input from the user (Tso, Tharp, Zhang, & Tai, 1999). In any virtual reality or game application, animation and interaction are often crucial and critical. Through animation, the user is able to have a more realistic feel of the real 3D objects through looking at the object at different angles and perspectives. Through interaction with these objects, the user will become more integrated into the virtual 3D world in the same way as sensing our own reality in the real world. Under Java 3D, the “behavior” class is used to define and control both animation and interaction. However, note that the behavior class is an abstract class and cannot be directly used (Stromer, Quon, Gordon, Turinsky, & Sensen, 2005). Instead, there are three classes that extend the behavior class and that are commonly used. They are the “interpolator,” the “billboard,” and the “level of detail (LOD)” class. Furthermore, we can create a new behavior class by extending the behavior class to fit any special need. Briefly, in this chapter, we will discuss the important interpolator classes by using a number of illustrating examples, followed by some details discussions on the billboard and LOD classes.
Basically, an alpha object generates alpha values in the range of [0,1] when it is sampled over a period of time. The alpha values generated is for the primary use of an associated interpolator object, which will be discussed in the next section.
Depending on the parameters of the alpha object, the generated alpha value may change over time. Specifically, there are four phases in an alpha object waveform: increasing alpha, alpha at one, decreasing alpha, and alpha at zero. These four phases make up one cycle of the alpha waveform, and can be controlled by four sets of parameters of the alpha object. Also, the durations of the phases are given by an integer, which gives the duration in milliseconds.
An alpha object has the following important parameters.
• loopCount: The number of times that the alpha object will be run. The object will be run in an infinite loop manner if a value of –1 is given.
• triggerTime: The time in milliseconds after the system start time that the object will be first triggered. If the current time is equal to or more than the sum of the system start time and triggerTime, the object will be started as soon as possible.
• phaseDelayDuration: The time in milliseconds to wait after triggerTime before actually starting the object.
• Mode: May be set to INCREASING_ENABLE, DECREASING_ENABLE or the logical OR of the two values. INCREASING_ENABLE or DECREASING_ENABLE activates one of the two sets of corresponding parameters listed below.