Raf's laboratory Abstracts Feed Raffaele Rialdi personal website

I am Raf logo

SurfRaf: home-made surface for Windows 7

September 07, 2009

On june I presented a session on the new developer stuff for Windows 7. The coolest part was the Multitouch API and a home-made surface-like device. Here there is the full-res video in Silverlight (maximize for full-res). The audio is only in Italian language, sorry about that.

The real cool, original device is Microsoft Surface, a Windows Vista based device that let the user play with applications using "gestures", in other words touching and moving objects on the screen. Microsoft Surface costa bout 10K$ and you can find it in some hotels for concierge applications. I could play with it at the Sheraton hotel in Seattle with Live Maps and other applications. I was said there are 9 infrared videocameras and other stuff, so I believe the price is justified.

Microsoft build platforms, not products and this happened to Surface too. After the first release the SDK is going to be normalized to Windows 7 APIs and WPF extensions. HP already sells a new multitouch based PC for 1K$. This means that in the very near future every developer should think about application ergonomics using multitouch features.

Ok, let's come to the geeky part. If you want to make some tests before investing any money, build it yourself! The idea is not new at all. There are many articles and videos on the internet about this and this is what I did by myself. The hardest work is already done:

  • NuiGroup (TBeta) project recognize the images from a webcam, apply some filters (edge-detect, etc.) getting only black and white shadows for the fingers that touch the 'screen'. It can take advantage from the GPU and send the fingers coordinates via window sockets.
  • MultiTouchVista project install a Windows 7 driver and an helper application that get the fingers coordinate from the window sockets and give them to the driver that emulates a real multitouch device.
  • Windows 7 that normalize the inputs and give them to multitouch enabled applications.
  • WPF 4.0 simplify all the tasks for managed developers by extending UIElement with events (that are new for WPF 4.0) and a property that can run the multitouch feature on for a particular element of the UI.

In order to build the hardware (yes, hardware is fascinating, at least for me :) ), this is how I did it:

  • Webcam with a resolution of 640x480 or more. The best results can be achieved with manual focus and brightness settings
  • A deep box. Webcam view is typically a narrow cone, so you have to choose the correct deepness. The box must be dark inside. The light must come from the top screen only, so don't put any light inside.
  • Fix the webcam in the bottom center of the box. I used warm glue.
  • The screen. I used white milk plexiglass, 3mm thick. In the woodwork shops they can cut a rectangular sheet. With a manual saw you can refine the shape.
  • Light. I had the idea to use led stripes fitted in a aluminium outline. Led stripes are typically 12V powered, so you only have to solder some cable to a panel-plug to fix on the box.

Finally a built a sample application using Visual Studio 2010 beta 1. There are still some limitation in WPF multitouch that I hope will be solved for the final release.

Two more videos to show how it all works (again, the audio is in Italian language).

That's all but ... I have more ideas for an improved version of SurfRaf. Yes I am already working on it but it takes time ... stay tuned.

rated by 0 users

Share this page on Twitter

Privacy | Legal Copyright © Raffaele Rialdi 2009, Senior Software Developer, Consultant, p.iva IT01741850992, hosted by Vevy Europe Advanced Technologies Division. Site created by Raffaele Rialdi, 2009 - 2015 Hosted by: © 2008-2015 Vevy Europe S.p.A. - via Semeria, 16A - 16131 Genova - Italia - P.IVA 00269300109