Final Paper

Final Paper


Big Project:

Professor Interrante’s lab during summer 2003 focused on preparation for research experiments. The planned research revolves around the development of GLCreator, a virtual reality architecture program. In the beginning of the summer GLCreator offered only a minimal number of functions and had only the capability to draw boxes. One of the future research projects will focus on the effect of perception and body movement in architectural creation. The experiment will bring in architecture students to study the differences in what and how they create in a two-dimensional world verses a three-dimensional world. This experiment will try to decipher if there is a difference, as well as what the difference is, between creation by a person who can use their body and walk around their creation versus a person who only uses their hands and sees in two dimensions. In short, does body movement affect creation?


Equipment:

A view of the lab showing the trackable area
A view of the lab showing the trackable area
The lab is equipped with a 24’ by 24’ trackable area with infrared sensors on the ceiling, which are picked-up by two Hi-Ball 3000 optical trackers, one on the head-mounted display and one on the hand held trigger. The Hi-Ball 3000 and the infrared lights give the location of the user within the room. This information is used by the computer to calculate the picture that is returned to the head-mounted display worn by the user. The head-mounted display shows corresponding pictures in the right and left eyes that blink opposite each other to give the effect of being in a three dimensional world.


Contribution:

My project for the summer was to add a drawing function to GLCreator to aid future research experiments. By adding the drawing capability, users of GLCreator have another tool to duplicate other forms of architectural design equipment. Since I lacked a background in graphics, my program development started by learning the OpenGL graphics language. I proceeded to create cubes and pyramids, as well as experimented with rotation and translation. I found that having a background in Linear Algebra helped greatly in learning the fundamentals of graphics.

I created two drawing tools, each with a different form of display. My first drawing program displayed a list of cubes at the (x, y, z) location given by the Hi-Ball tracking system. I designed a cube class which, when the hand-held trigger device is pulled, provides the (x, y, z) location of the Hi-Ball hand-held device and creates a cube at that location. While the trigger is held down and the (x, y, z) location changes, cubes are created at the given points. After creation, the cubes are stored in a list, which is used for display. Using this method for display helps with efficiency of GLCreator and causes the program to run more smoothly. Virtual Reality is very time dependant. If there are too many calculations the images that are displayed in the head-mounted display appear too slowly causing the user to feel nauseous or dizzy. To aid the user with drawing the cubes a pencil wand points to the location where the cubes will appear.

One of the problems with this drawing design involves the display of the cubes at an appropriate distance from other cubes. If the tracker moves to quickly there are gaps between the displayed cubes causing the cubes to be scattered and not resemble a line. On the other hand, if the tracker moves to slowly, many cubes are displayed in the same general area wasting valuable memory and eventually slowing the program to an unusable state.

The first drawing program has been added to GLCreator. However, some of the features that have been added and the drawing function still require the use of keyboard short cuts. In the future, the drawing function will be added to the already existing kiosk enabling the user to choose drawing while immersed in virtual reality. One of the working functions that has not yet been added to GLCreator is line drawing. This function takes in points and draws a straight line of cubes between the inputs. Other functions that need to be added are size and color changing options for the cubes. There is a paint pallet that has been created for the kiosk while in drawing mode to provide these options to the user. The pallet uses a form of ray tracing that involves the pallet being segmented into triangles. This procedure works by a ray being administered from the selection tool in the direction of the pallet. By giving the starting point and direction of the ray, the ray's intersection point on the pallet is calculated. The large triangles are then tested for ray intersection. After a "hit," the program repeatedly checks smaller and smaller triangles until a specific paint color is known to be intersected. For the calculations of this procedure I used a Point-in-Polygon Test with Barycentric coordinates.

The second drawing feature duplicates a ribbon appearance. The ribbon functionality is based on catmull rom spline construction. Catmull rom splines are unique from other mathematically computed arcs in that they pass through all of their control points, and these user-selected points define the arc. This is desirable so that the ribbon will be displayed where expected. The function is dependant on the four control points used to calculate the equation for display.

Trapezoid Diagram
The ribbon is displayed with connected trapezoids that are created from the spline equation. The trapezoids are designed so they fit together perfectly. The twenty trapezoids displayed between each control point make the ribbon. This fixed number should eventually be changed to a variable number dependent on how far the control points are from each other. To display the trapezoids at the correct angles the normal is calculated from the viewing angle of the user and the two points from the equation of the desired spline that are involved in creating that specific trapezoid. The first trapezoid is created with the first two points on the spline equation; points 2 and 3 are then calculated from the normal. Points 3 and 4 are used for the next trapezoid along with the next point (5) given by the spline equation. Again, the two points from the spline equation and the users view point give the normal, which then calculates point 6. After each trapezoid is created, it is stored in memory to be displayed. By setting a fixed width for the ribbon that will eventually be chosen by the user, the trapezoids are created to give a smooth ribbon like appearance.


Conclusion:

GLCreator, while usable by computer scientists, needs to be developed to a more advanced state before experiments can be done with architects. The drawing program needs to be optimized and more features need to be added to provide users with capabilities that are supplied by other drawing programs. In order for the research to be successful GLCreator needs to offer many of the features that other architecture programs provide. My research gives GLCreator new functions that bring it closer to being usable in perceptual and movement based research.