Last edited 3aug99 by
Find this document at


PintaPool is an interactive CAVETM program that allows the user to play a simulated pocket billiards game. The program displays a table in front of the user. It acquires the head position, wand position, and wand orientation. The game runs like this:

  1. There is a vector that is displayed as coming from the cue ball. This vector is parallel to the wand in the x-z plane (Y up the up direction). The user can move the wand to determine the direction that the cue will go. The vector can be made longer and shorter (i.e. The velocity of the ball can be faster or slower) be moving the wand like a throttle on a plane. If the wand is parallel to the ground, the cue will move slowly, and if the wand is pointing at the ceiling, the cue will go very fast.
  2. Along with the interactivity of the cue and balls, the table can be moved for easy play. With the middle button on the wand the user can "drag" the table around. (works like drag and drop with holding the middle button) The joystick can also move the table.
  3. Reset is all three buttons.

PintaPool was developed in Professor Francis' Math 198, "Hypergraphics" at the University of Illinois. In the class, Bob Pinta decided to make a pool table. By the end of the semester is had produced a fairly good simulation of a pool table. In the Research Experiences for Undergraduates (REU) project, his first point of order was for interactivity. He went through several ways of interacting with the pool table. The first problem that he had was with the pool table rotating along axis other than the y-axis. It is hard to play pool with an upside-down pool table.

After that, sound needed to be implemented. First off, he simply had a sound when the balls hit. This was the way PintaPool was for a while. In the old version of VSS there were distance, pan, and elevation actors and this was the next addition to the program. The only problem was that it was difficult to work with. It was not consistent and so it was dropped. With some research, the REU group found that in the new version of VSS there is an input called SETXYZ. At this point the group discovered that all they had to do was pass an array of three variables to the file.aud, and as long as SETXYZ was there, it could output octaphonic sound. With this the user had some barring on where the balls were.

This project was designed for visually impaired students. The way that this pool table is being modified to satisfy this is quite simple. First off the table had to be bigger, it is hard to tell what is going on in a 4 by 8 foot table. Also he placed the user in the middle of the table. This was done for enhanced directionality; balls could be behind the user and in front instead of simply at different distances in front. The next thing that he used was a simulated Doppler effect for an idea of the direction of the balls.

How to get started using PintaPool

To run PintaPool in the CAVETM, run VSS and set it to 8 channels and to 44.1 kHz. Then open an apanel and in default set output to ADAT and set rate to 44.1 kHz. Then run the tracker daemon if necessary and the user is ready to go

Where to find the Source Code

At all times, there is a working executable and the source code in:


Who to contact for more information

Robert Pinta