3D Pool Table Introduction


Hardware:

The pool table graphics are rendered on a reality engine 2. The graphics to the monitor are split to the responsive workbench which projects them onto the underside of a large table. LCD shutter glasses are used to present stereo images, and polhemus trackers are used to track the users head and a stylus. The stylus has a single button on it, which is used for input. The rendering computer doesn't have sound capability, so we make use of networking to send sound requests to an Indigo2 that is close to the responsive workbench.

Software:

The machines are all running SGI Irix (a unix derivative). The graphics code is written in closed gl and C++. We made use of RWB (responsive workbench) libraries that required this. The RWB libraries set up transformation matrixes to allow us to easily draw in table space or stylus space. We implemented libraries that allowed us to easily load textures, lighting models, and other features into the SGI by use of a textual configuration file.

The Virtual World:

At the end of the real stylus, we draw a virtual cue. The user can hit balls on the table with the end of the virtual cue. They can also point at buttons that are formed at the far end of the table, and by pressing the stylus button, they can invoke the virtual button. The walls and floor of the real world are rendered and a static virtual sound is used to create a sound anchor. These help to ease the transition from the real world to the virtual world.

The Pool Table:

The pool table is drawn with polygons. We have broken down the table into several parts: the felt, the holes or pockets, the bumpers, the sides of the pool table, the virtual cue, and the balls themselves. Each of these objects is configured via a textual configuration file that is read when the program loads. We also render 2 spotlights above the table, textures and materials for all of the objects, and draw shadows for the cue, bumpers on poolball.

Sound Effects:

Collision events are sent to the sound_server via udp packets and stereo sound is presented to the user. A static object, the cd player can be turned on and off by the user. These sounds are rendered in virtual space and change as the user moves their head.

Gameplay:

The pool table initially shows up with the white cue ball at one end, and all the other balls in formation at the remote end. The user can hit any ball with the tip of the virtual cue, but the goal is to hit the cue ball and knock it into another ball and cause a desired ball to fall into a hole.

Graphics Play:

Playing pool is fun. Equally fun is interacting with the virtual world to see how things are done. By using the virtual buttons, users can turn on&off all the major graphics effects, affect game play, change sections of the pool table itself and modify the physics engine and sound properties.

See Also: