BullsEye is a computer vision application for optical fiducial tracking on tangible tabletops. BullsEye is comparable in functionality to reacTIVision but offers significantly more accurate tracking of fiducials. BullsEye can serve events to a table application both through the TUIO protocol and through a Websocket connection.

The inner workings of BullsEye is detailed in the paper BullsEye: High-Precision Fiducial Tracking for Table-based Tangible Interaction.

BullsEye is freely available for academic and non-commercial use. If you intend to use it for a commercial product, please contact us.

System requirements



BullsEye requires a calibration of light, of camera distortion compensation and of the fiducial and finger tracking which is detailed below. BullsEye also contains embedded documentation available as tooltips on questionmarks in the UI.

Starting BullsEye

Calibration of light

Compensation for lens warp

If you do not need super accurate tracking simply press 'automatic' and skip this step. Otherwise:


If only a single camera is used simply use autodetect. For setup of multiple cameras the two camera inputs have to be aligned.

Configure tracking

Troubleshooting / FAQ

We use BullsEye in a lot of installations and it works for us on almost all of the hardware we have tried. That said, we do not have access to all of the hardware in the world to test it with. Sometimes things just do not work as expected and BullsEye will perform badly or not work at all.
This short list is a compilation of the most common problems:

My DirectShow camera is not in the list, it is not detected

If the camera works in other programs on the same machine make sure that the camera driver and BullsEye are running either 32-bit or 64-bit together. Most Java installations are 64bit while some camera drivers (like the ps3eye) are only 32-bit. Download a 32-bit version of Java in that case.

Camera is all white or black regardless of what I do, help?

If this happens even with "Passthrough"-mode in the light-calibration step then this type of error is usually GPU-related, maybe your GPU or graphics driver does not support the needed versions of OpenGL and the GLSL shaders used by BullsEye.
If you are on a laptop or multi-GPU machine make sure that it is set up to allow Java to use the powerful discrete graphics card and not a low-power built-in one.
Make sure you are running the latest drivers from the GPU manufacturer's website and that the card is modern enough.

© Center for Advanced Visualization and Interaction, Aarhus University