tilt sensor (fancy joystick) or Open GL alternative using a mouse?

We are doing some shape from shading experiments and would like to measure the perceived surface normal at various locations on a photograph. The lo-fi way to do this would be a $30 joystick from Fry's, but those are (1) poorly calibrated and (2) don't give you anything near 180 degrees of rotation.

Has anybody found a good "tilt" sensor for this purpose in the $100-200 range? Or for a much cheaper option, has anybody written some open GL code to allow you to adjust the rotation matrix of an object (I'm thinking an arrow or perhaps even a simple textured plane) with a mouse/trackball? We have a 3D TV so the object/plane could be shown in depth, which should improve the quality of the matches.

Thanks!