3. THE N.I.C.E. PROJECT: DESIGN AND IMPLEMENTATION

3.3. System Architecture

The architecture of the NICE system is based on techniques derived from CALVIN (Collaborative Architecture Via Immersive Navigation), a networked collaborative environment for designing architectural spaces, developed by Jason Leigh and Andrew Johnson \cite {Leigh96a,Leigh96b,Leigh96c}. The NICE system is organized into three main modules: the behavioral module, the networking module, and the graphics and interaction module. These modules are relatively independent of one another (thus facilitating the distribution of the programming tasks) and communicate using a reliable socket connection (\ref{figsystem}).

The author's programming contribution to NICE is the behavioral module, or central server (LIFE), which handles the actions in the garden, calculates the environmental model, and shapes the output of the story. The vegetables and flowers follow simple rules of evolution and behavior. They share a common set of factors which contribute to their growth, such as their age, the amount of water and sunlight they need, and their proximity to other plants. The combination of these attributes determines the growth and affect of each plant. When the user selects a vegetable seed and plants it in the soil, the graphics and interaction module sends a message to the central server. The server adds this plant to the existing family of plants, calculates its characteristics and continuously transmits the state of each plant to the other modules. The growth of each plant is indicated by a change in its size. Its humidity state is indicated by the display of an umbrella when the plant is too wet, or sunglasses when the plant is too dry (\ref{figfeedback}). The central server operates constantly in the background and attempts to reestablish lost connections in the event of failure. If the server is stopped, there is a choice of resuming its operation by either starting from where it last stopped or beginning a new garden. Additionally, the LIFE server contains another module which automatically outputs the server's activity in the form of a WWW page, thus creating the story described and seen above in \ref{figstories}.

Figure: The NICE system architecture.

The network component in NICE, written by Jason Leigh, allows multiple networked participants to explore the same virtual space. The number of participants is limited only by bandwidth and latency of the network. Multiple distributed applications running on separate VR systems are connected via the central LIFE server to guarantee consistency across all the separate environments. The communications library uses multicasting and/or UDP to broadcast positional and orientation information about each participant's avatar, and uses TCP/IP to broadcast state information between the participants and the central server. New networking middleware optimized for VR is currently being developed, which transparently supports both the networking and database broker services as well as provides richer database support for sustaining persistence in VR. This allows NICE to be viewed easily from Java applets on web browsers.

The avatars also follow the CALVIN model. Each participant's head and hand are tracked, allowing the environment to transmit gestures between the participants, such as nodding, turning, pointing, and waving. As the child waves her hand in the real world, her avatar waves its hand in the virtual world. As these avatars have sufficiently detailed representations, the participants can communicate notions of relative position to one another. The NICE system's graphics and interaction module, programmed by Andrew Johnson, uses the Silicon Graphics' Performer library and the CAVE library. Performer allows maintainance of the necessary frame rate to support VR, and provides functionality for culling, multiprocessing, and intersection testing. All the objects and avatars in NICE are Inventor models. As part of the database design, each of these objects may easily be included or excluded from the world and features may be enabled or disabled. Some of these features include collision detection, calculation of the user's position over an object (so users can climb over it or up stairs), friction (so avatars can pick each other up), animation, and so on.

More recent additions to NICE include a two-dimensional web-based view of the three-dimensional virtual garden and a JAVA-based interface to the virtual world, but these features have not been fully developed and were not used in the evaluation studies described in the following chapter.