A PSEUDO-IMMERSIVE VIRTUAL ENVIRONMENT-A SHELL FOR RESEARCH

The authors built a pseudo-immersive three-dimensional computer generated virtual environment (VE) as a shell for research in detailed collision detection [4] [5] [6] [7]. The purpose of the virtual world construction described in this paper is to handle engineering applications such as the mechanical assembly and disassembly of complex systems. A virtual space ball is attached to the VE in order to control the motion of virtual objects in that environment. This software interface simulates a real three-dimensional space ball device. The contribution of the pseudo-immersive system removes the absolute necessity for expensive Virtual Reality equipment and software for research work on virtual reality.


Introduction
The system in its entirety consists of two parts: the shell, comprising the pseudo-immersive virtual environ-ment, and the kernel, which allows collision detection study. In this paper only the shell part of the research is presented in detail since it is the construction of this environment, primarily as a test base for virtual reality (VR) research, which forms the main thrust of the final system. As a result, it is now possible for research in aspects of immersive virtual reality to be carried out using a low performance basic workstation.
To date little work appears to have been done to address the construction of virtual environments. Zyda et al. [12], [13] developed a NPSNET system by using both the hardware of Ethernet with a T1 link between workstations and a software interactive technique to simulate a multi-user virtual environment. The aim of their research was to build up a large-scale, networked threedimensional virtual environment. In the University of Bath (UK), Bayliss et al. built a virtual manufacturing system [2], [10] based on their own SVLIS geometric modeller, using the Inventor 3D graphics package around a Silicon Graphics workstation.
These self-built virtual worlds were developed around expensive equipment and extensive software, whereas the work described in this paper proposes a relatively inexpensive pseudo-immersive virtual environment implemented on a workstation. After development, the resulting software can then be ported to a fully immersive VR system.

The Pseudo-Immersive Environment
The authors constructed a three-dimensional virtual environment using C++ and the openwin library around a basic Sun microSPARC machine (4.6 MFLOPS, 59.1 MIPS). No immersive equipment such as headgear or sensory feedback devices were used in this process, the interactive interface device being a simple two-dimensional mouse. This pseudo-immersive virtual environment was created primarily as a background for research in virtual object assembly [4], [5], [6]. The main purpose of the environment was to simulate realistic motion of virtual objects in a virtual world. It is important, in particular, to be able to simulate situations in which collision of moving objects might be expected to occur. Typical examples arise naturally in mechanical assembly operations of engineering objects, and secondly in the simulation of environments incorporating gravity [7]. The principle advantages of this kind of system are that it eliminates the unpleasant side of effects of fully immersive systems, yet provides a platform for fundamental research in the area without being committed to any of the currently available costly commercial systems. Figure 1 shows the interface layout arrangement of the virtual environment screen. Basically, this virtual environment consists of four display windows and a control menu schema. The isometric window and the perspective window display the output from the other two control window -virtual space ball control and orthogonal movement control. The user controls the motion of the free object from these two control windows. Three-dimensional rotation and translation are carried out by a virtual space-ball in the virtual space-ball window. Movement occurs by dragging the free object on screen and is carried out in the orthogonal control window. All of these software interfaces will be described in the following sections.
First, we briefly outline the on-line layout of the dynamic event handler of the pseudo-immersive virtual environment. The X-Window System (Openwin) in the Sun workstation offers a method for handling and specifying events on a canvas. The program waits for the following events -load, path control, quit, view control, motion control and virtual space ball control (see Figure 2). The first three events are located in the control menu, whereas the other three events are exhibited in the four windows as an input/output. Once the objects are loaded into this environment, the pre-processing procedure carries out a data base processor in order to manipulate the dynamic linked lists of the objects for later use in collision detection. The interface containing the six events is the main communication between the user and the system, whereas the sub-event containing free drawn, piecewise-linear, gravity, rotation and translation is under the event motion control. These five sub-events are described in the later sections, 3.1 and 3.2.

Figure 2: Dynamic Event Handler in Virtual Environment
The two objects in this environment are first created by the ACIS Test Harness [1]. They are loaded in by means of a load button provided in a loop. The fixed object is located either in the center or at the bottom of the orthogonal window, whereas the free object is located by means of a mouse by clicking in any position in the orthogonal window.
Once one of the collision detection methods is applied, the free object is then moved by one of the choices in the sub-loop. When collision occurs between the objects, collision response is signaled by a simulated sound of metal striking, and meantime, the color of the penetrating parts of the object pair is changed on the VDU.

Control Menu and Response
In this pseudo-immersive system there are three main functions -path control, space ball control, and view control (see Figure 3). They will be described here in the specific context of collision detection, but may clearly be used in a much wider range of VR 'experiments'.

PATH
The free object can move along any of the three coordinate-aligned planes by means of the function path-control. There are three sub-functions in path-control. First, the free drawn path facilitates snapping and dragging of the free object on screen in the orthogonal movement control window (see Figure  1). The second path-control method is drawn by piecewise-linear path and this path is determined by the user (see Figure 4). The third, gravity path-control, simulates a gravitational situation for an object falling along a vertical plane (see [7] for details).

CONTROLLER
The virtual space ball controller (see section 4) simulates the mechanics and action of a real three-dimensional space ball and controls a virtual object when it is freely moving in space. Rotation is carried out about an arbitrary axis passing through the center of the object. The motion of the free object in space is either translation or rotation and is controlled by the virtual space ball.

VIEW
In the orthogonal view control window, one of the three possible orthogonal views -either front view, side view, or top view -is presented at any time. Meanwhile, when motion occurs in the free object, an isometric view and a perspective view window displays the relative position of the two objects simultaneously.
When interference occurs between the first two polygon planes in an assembly pair, there is a simulated sound of metal striking and the color of the first penetrating parts of the object pair is changed on the VDU. Depending on which of the various collision methodologies is currently in use, the penetrating parts will be drawn in one of five ways: the bounding box, the bounding sphere, the bounding box of the smaller box, the bounding sphere of the small box [5], or, the polygon pair [6].

Virtual Space Ball
The virtual environment makes heavy demands on the interactive graphics facilities, but enables the user to move virtual objects freely in the threedimensional space of the environment using a commonly available two-dimensional mouse. The underlying idea of the virtual space ball originally comes from [3], [8], and [9], but has been simplified by the authors with the object of giving a better intuitive understanding, or "feel", for the environment.
A virtual space ball is attached to the virtual environment in order to control the motion of the virtual objects in space. The software interface that has been developed simulates a three-dimensional space ball device.
Rotation in space of the free object is achieved by rolling the surface of the virtual space ball (see Figure 5). There are two methodologies in the rotation algorithm to carry out arbitrary spatial rotations of a virtual object. In order to rotate the free object through an angle theta about the axis specified by vector n in the plane of the screen, (Figure 5(a)), by using the two-dimensional mouse, the user first specifies, or locates, point A inside the circle, and then locates point B anywhere else in the window. If, on the other hand, point A is located outside the circle (Figure 5(b)), then the object rotates through an angle theta about a z-aligned axis passing through the object center. By way of illustration, Figure 6 shows a series of typical situations. Summarizing, rotation about either an arbitrary axis in the xy-plane or about a z-aligned axis is determined by the location of the point A. Rotating theta degrees about the normal to the screen plane is equivalent to rolling the object along z-aligned axis. Therefore, in order to achieve rotation about an arbitrary axis in the xy-plane, one should locate point A inside the circle, while for rotation about an axis parallel to the z-axis one should locate point A outside the circle (the location of point B is irrelevant in this latter case).
Similarly, when the setting is in translation status, the vector AB determines the translation transformation in the xy-plane if and only if A is located inside the space ball circle, and point B may be located anywhere in the window. A similar movement along an axis parallel to z-axis is determined by the location of A outside the circle. In this case, the movement of the object (in either direction) along the z-aligned axis is determined by the difference between the real y-coordinates of A and B on the display screen.

Auxiliary Views
In order to exhibit a realistic three-dimensional image on a two-dimensional display screen, and to give the user a better intuitive feel for the situation, two auxiliary views -isometric view and perspective view -are added into the virtual environment. The view controller is set to one of the three orthogonal views, top view, front view or side view. This provides the user with the ability to move the free object accurately along any of the three coordinate-aligned planes.  Figures 7,8,9, and 10 demonstrate typical situations in the virtual environment. The kernel work on collision detection methodologies is implemented on the environment shell. Figure 7 shows the situation of an object with a protrusion (such as a T-Block) partly inserted into an object containing a depression or a hole (such as a keyhole). A similar insertion situation, this time for a thin shaft moving inside a relatively spacious hollow object, is shown in Figure 8. This situation simulates a stirring spoon inside a cup or, more generally, a probe situation. In Figure 9 we show another typical collision detection situation, but this time involving objects with curved faces. Finally, in a virtual gravitational environment, a falling object first rolls then falls onto a plane surface (see Figure 10).

Figure 8: A thin shaft inserted into a hollow object.
It is worth pointing out that the decision to incorporate a virtual space ball into the shell was motivated by both cost considerations and the prospect of large scale applications. As virtual reality becomes more established in mass education, this form of input control, as opposed to a costly real 6D mouse, makes sense on economic grounds [11]. Furthermore, as with the pseudoimmersive environment itself, this once again frees the system from any particular commercially available input equipment.
In this paper we have described the construction and implementation of a pseudo-immersive virtual environment. The main aim of this virtual world construction is to handle engineering applications such as the mechanical assembly and disassembly of complex systems without the need for complex expensive VR equipment and software. The user interface for this environment is a virtual space ball. An important feature of this environment is that it does not involve expensive VR equipment, but allows the development of significant VR techniques and methodologies which can later be ported to a fully immersive VR environment.