Many of the exciting UI developments make use of depth cameras such as the Kinect, but a simple eye tracker might change the way we design our apps.
If you have tried an eye tracker with a mobile phone, say, you might have been impressed or you might not. Part of the problem is that eye tracker input is sometimes just not appropriate and, for it to be effective even when it is appropriate, it has to be accurate.
The Eye Tribe wants to make eye tracking a standard part of the desktop and mobile computer by making it cheap and accurate. You can now pre-order a $99 development kit complete with a small thin bar and an SDK.
If you are wondering what sorts of things you can do with it then take a look at the following promo video - it is fairly convincing:
The device works by tracking the eyes using infrared illumination. Once the eye positions have been determined, some geometry is all that is needed to work out where the person is looking. The claim is that the gaze can be localized to about the size of a finger tip placed on a screen. The preliminary specs say that it can be used in the range 450 – 750mm from the face, has an accuracy of about half a degree, and can track at between 40 and 60 times per second.
The applications shown in the video suggest that if the accuracy and reliability are good enough the users tend to learn how to fit in with the device and its conventions. Presumably if you are used to it then having sheet music move on when your eye reaches the bottom of the page starts to seem natural. It is also fairly obvious that how well the interface is accepted by the user depends very much on how good it is. A music page turning app isn't going to be nice to use if it flips the pages too much but it isn't going to be of any use if it doesn't provide a new page when the player reaches the bottom of the page.
The idea of releasing the SDK is to let us programmers get started on the fairly difficult job of perfecting eye tracking interactions. The SDK is currently only for Windows, but an Android version is in preparation. The hardware needs a USB 3 port to connect and you can use C++, C# or Java to develop applications, but in principle you can use any language that supports sockets.