My efforts creating multi-touch surfaces

Creative Commons License
Omniverse NUI Blog by Kenth Fagerlund is licensed under a Creative Commons Attribution-No Derivative Works 2.0 UK: England & Wales License.

Killed a few more trees

| Tuesday 18 August 2009

Just did my part to kill the worlds trees by buying a 800 pages thick OpenGL book. It arrived yesterday and I just got going to read it in the evening. I skimmed through the pages to get a idea on what it had to offer and it its very comprehensive (<-- thank you spell checker!). Pretty much cover all aspects of OpenGL 3.0-3.1 except the shaders that they have a whole other book on.

The book I'm talking about is OpenGL® Programming Guide: The Official Guide to Learning OpenGL®, Versions 3.0 and 3.1, Seventh Edition (Wow, what a title). This book (aka Red book) is strait from the horses mouth and the most respected OpenGL book out there as far as I know. The bad parts of it is that it's quite wordy and I guess that is because they go into every detail as they describe every part of OpenGL. I will read on some more and see if I can get out some real work as I have been promising the last 3 posts :D

Cheers

Change is good

| Monday 10 August 2009

Well as usual I have changed my mind. After a week or so doing some DirectX studying and finally getting to a point where I can make stuff happen on the screen I change my mind. This is so typical and I hate my brain for it but I just can't help it.

I have been researching about different ways of doing the UI for the touch table, reading different papers and so on. And every so often I get some code examples and they are all in OpenGL. That's not enough though to sway me off the wonderful world that is DirectX (Not that wonderful but it's all I know , much like your mom's pancake is the best in the world when you are a kid).
No, the thing that made me drop all that DirectX knowledge that I squeezed into my brain next to all the Mythbusters episodes was the same fact that I fought about when I went with DirectX. It is platform independent. Yes, I still want to be able to run my Omniverse on Linux, OS X and Windows. Not that I plan to support all of the at first but I don't want to port it all. But my second reason was that I actually can use this in my work as a mobile developer since all mobiles with and worth handle OpenGL ES.

So there we have it. Back to the drawing board. Not that big of a setback really since I have learned all the basics of 3D graphics that still apply on OpenGL. So if anyone have any good tutorials on OpenGL 3.0 or later give me a shout (Don't actually shout cause most likely I won't hear it)

Slow progress

| Wednesday 5 August 2009
I feel that it's been long since last post. My excuse is that I was sick and didn't have the strength to do any Touch-table stuff. But now I'm back. So what am I doing? Well I'm continuing with my DirectX stuff so I can gets some stuff to move on the screen. My new goal is to move some lit 3D cubes with touch by the end of the week.

DirectX is not as hard as I expected but it feels like there is lots of boilerplate that always has to be done to create just the smallest of things. But maybe since I'm just a puppy in the world of 3D programming it feels like I write and write but get nothing done.

As I was sick I spent most my time just in bed dreaming up new and cool way to build this table and still keep it small and energy efficient. So I have some benchmarking to do when I decide on the UI but I hope that the Nvidia ION platform have enough brain capacity to handle the 3D crunching that I need. I have been looking at the Acer ApireRevo that is built on the Nvidia ION and still boost 2GB memory. Really small and little heat generated and the graphics might be good enough since I'm not making a game but a UI. And with Nvidia ION II on the being produced in rumour land It might be good that I take my time to finish this project :)

But really. I will have something to show at the end of the week for sure! :D Youtube here I come :D

New Application to Omniverse NUI list

| Thursday 30 July 2009
I can't help myself to browse around the Internet and looking for new cool things coming out. This is something I found as they announced it at Google IO but never found a use for using their API's.

Well now I have. I'm going to add a Google Wave client to Omniverse NUI. If you haven't heard about Google Wave you should have a look at the demo at the end of the post. But why? Well first of all I find the way Google Wave (GW from now on) does communication is unique, innovative and inspiring. It matches exactly what I would like to see happening on Omniverse. Fast instant communication independent on location.

Exactly how I will create this client is as everything else about this project still being planed. And also only on 3:ed place in the priority list. But It might be bumped up depending on how big it grows. The fun part of it is that as soon as I looked at the demo I could come up with at least 5 different UI interfaces that would help communication with Wave and it might become a fundamental part of Omniverse since it is a open protocol. As soon as I get my developer account I will make a deeper dive into the API and decide on what use I have for it and it's priority.

Here is the video I promised, Enjoy. (Ps you can skip the first 5 min cause its most crap talk)

I hate keyboards

| Wednesday 29 July 2009
I really do hate keyboards. I'm a programmer as a profession so I use the things every day and it's quite annoying to hate your primary work tool. The problem I have is that the qwerty layout hasn't changed since 1874 (about the same time as the patent was filed for the lightbulb!) and I just can't understand why. The reason for that layout was to stop the type bars from jamming. Well it's 2009 now and the type bar problem gone just like my hair.

So why haven't anyone reinvented it? Is it so hard to drop the keyboard in the lake and come up with something better. Here is were I hope touch computing will come and save the world. Touch tables have no place for keyboards. It just don't make sense there. There is no tactile feedback so anyone using finger placement and can look away while typing on a normal keyboard will have no chance to do that. So here we have a perfect time to do something new.

So instead of nagging I will give it a shot myself with Omniverse NUI. I'm not going to sit here and say that I have the solution to all your keyboard problems and with that cure cancer but I think that without to much effort we can improve the keyboard a great deal.

So what is my plan I hear you type. Well I'm still thinking about this and it needs lots of testing but one thing that I'm very sure of and that is that the keyboard should follow you hands and not the other way around. So to make your input the keyboard should form up around your hand and always adapt it's position and composition depending on where and what your typing.

Another key part is form and colour. I have read lots and lots of time that this is the easiest things for a person to detect and remember. So if form and colour is the key components to write instead of letter then I think speed will improve a great deal.

When I finish my concept drawings I will put them up for you to hate or admire. Hopefully not to long now. Still have a box to draw in DirectX before that :D

A map of my mind

|
Omniverse Mindmap

I like thinking. I don't do it often or might not be very good at it but some time I get a boost of energy and get lots of ideas. This time I managed to get it onto a mindmap so I won't forget all my ideas and it gives me a good overview of all that needs to be done with this build.

As you can see there is lots of options when building touch-tables. The more I read about other peoples work the more ideas I get and it just spirals into a massive project.

I find that the hardware I'm going to build is less inspiring then the UI that I want to build. The mindmap won't show it but I have atleast 200% more ideas when it comes to the UI then with the hardware design. But I hope that I can draw my prototype table this week so at least I have some surface to work on.

So what is my next goal then. Well apart from all the theory I'm learning about DirectX and how to build the table I have a more concrete goal. At the end of the week I will have a lit 3D cube that I can move with my finger. I will prove it with a video and put some pressure on me to get on with stuff.

I just need to convert our glass table in the living room into a temp touch table and I expect my girlfriend to think that is a GREAT idea :D

Enough rambling. Back to work.

PS, Does anyone know how to make wordpress to make the image link to the full size image. The image is WAY to small to be able to read anything Found it :)

UI Inspiration

| Monday 27 July 2009


As usual when I do different project I find myself planing things that I won't be able to do in a LOOOONG time. UI design for Omniverse is something I'm really looking forward to. I already have lots of ideas, some quite good and some just barking mad, and I'm in the process of writing them down so I don't forget it once I'm good enough at DirectX to be able to prototype some of it. If I get time I will post some of my ideas but right now I'm mostly looking at Anime films and other Sf movies for inspiration. Cause one thing I really don't want to do is to repeat old UI design now that I have the chance to make it EXACTLY how I want it without any constraints. But here is some of the key points the UI should contain

  • It should be aware of the environment and be able to simulate key parts of it

  • I should be able to use it even if I'm dead tired or drunk. Ease of use is paramount!

  • Text should be the LAST form of communication for the UI

  • All objects that are related in some way should help the user to interact with them (ie, mark a photo and other photos and maybe editors should move closer to the users hand to assist in further interaction)

  • Files and folders are FORBIDDEN! More organic organization. (Haven't figured this one out yet)

  • QWERTY Keyboard is banished. And all text input must be able to be done without looking but still without any physical feedback. (Location aware input)


Well that's some of the ideas I have right now. More is coming everyday. My goal it still to keep it simple but it's hard to stop you mind to invent some mad UI that is absolutely useless.

So if anyone has any good UI inspirational films or other media give me a shout. All ideas are good as long as there not stupid :)

Will report on my DirectX progress tomorrow.

The battery that powers evil

| Saturday 25 July 2009
success_baby1After 4 hours of hard goggling, poking, mumbling,coffee drinking and more googleing I figured out what the problem was with the PS3 Eye camera. It was nothing wrong with the driver or with it being Windows 7. The issue was my laptop battery!

My issue was that as I started the PS3 Eye it ran for about 10-15 sec and then just went black as it was disconnected. Well I first suspected that it was cause I use Windows 7 and the driver suffer from Windows-envy. Dual booted my machine and exact same problem again. Looked around at Alex P's blog and found him using a tool called DPC Latency Checker. Ran it and it game me this pretty picture.

DPC Latency PS3

Something very wrong is going on here every 15 sec. It spikes and just as it does the camera fails. So I call in my research team (aka www.google.com) and found a forum where a guy/girl said that he/she removed the battery to get rid of the spikes that was caused of the power management system [can't remember where I found it :( so I can't give the credit]. Well. thought it was a long shot but I pulled the battery and tadaaaaaa. Problem solved. Spikes were gone and after testing all camera apps and they worked I found inner joy and floated away to nirvana, well had a coffee.

I will see if I can find a solution that don't involve pulling the battery but at least there is a workaround for now.

That's it for me tonight. Way past my bedtime.

Enjoy life!

First test with PS3 Eye...Fail

| Friday 24 July 2009
Playstation eye FailSo I got my PS3 Eye yesterday. Happy as a spring chicken (I assume they are happy) I jammed it into my laptop and expected the miracles to begin. Well first off I installed a old version of Alex P's PS3 eye driver [v2.0b81109] on my Windows 7 machine. Result? Fail. It ran perfect in all resolutions and framerates but after a few seconds of running it just died.

I poked around some more and found a updated driver [v2.1.0.0130] hidden in Alex P's blog. Loaded it up.. Fail.. Same again. To be fair to Alex it hasn't been tested for Windows 7 so I will install Vista tonight and give it another run. Bit sad start but I know it will work. Just need to give it a helping hand (aka threaten to make it a surveillance camera for my girlfriends chilliplant!)

*Don't worry dear girlfriend. I haven't wasted the money. It will work  :D

Decision time

| Thursday 23 July 2009


After doing some serious research on what graphical API to use for my Omniverse NUI project I've decided on DirectX. It's not a easy decision since it goes against many of my ideas on what make a good piece of software. The major problem I have with DirectX is that it's Windows only. I just hate that. I want to be able to pick and choose what OS to run it on as I feel fit.

Since I use this project to not only learn some Hardware hacking and how multi-touch works but also learn C++. So DirectX fits in better. It's written in C++ and not in C style as OpenGL. It has great tutorials that just fits better with my brain then the OpenGL ones. Many will prob disagree with this (even I do sometimes) but I want to learn it so I made my mind up. I might switch to a more portable API later in life (read OpenGL) but for now it's all hands on DirectX.

Sadly enough my laptop only support DirectX 9 and badly at that so I can't try out the nice stuff just yet, I hope to be able to use their Direct2D API since I can do some nice vector graphics in code for the UI. But for now I do all in Direct3D and switch over when I get a new machine. I've just started to go though a nice tutorial at directxtutorial.com starting with DX9 and later jumping on DX10. I like the way everything is explained in the tutorial and give me a quick introduction to all the keywords in DX programming so I can dive deeper in subjects as needed. Recommend it to anyone learning DX.

Now for something completely different. My PlayStation Eye has just arrived! Woohoo! Will give it a run tonight and will post up some screen shots of the test. I really hope my laptop will hold it together with the added resolution and framerate of the camera. I hope I can do my first drawing test with the camera this weekend. I post my progress on that.

Until next time
Kenth

The bugs are here!

| Wednesday 22 July 2009


First two "Bugs" has been reported by myself now. To give myself a nice easy target I added two feature request on SourceForge. They are as follows:

  • Fullscreen desktop twice the size of the screen resolution.

  • Image viewer


The desktop is pretty obvious. I need a flat virtual surface to place what ever UI I create on. The size is just to give me a chance to test moving the desktop around so I'm not hindered by the screen size or resolution.

The Image viewer is just a simple view to show images. It should be able to move freely around the desktop and be able to re-size. No physics should be done. Maybe a very simple menu system if I have time. I'm still trying out some menu Ideas and will post them as soon as they are a bit more solid.

Omniverse NUI @ SourceForge

| Tuesday 21 July 2009
SourceForge Logo

Now Omniverse is registered with SourceForge. Nothing there to get and most likely a long wait until anything happens there. But I will post as soon as something useful happens there.

You find the project with the keyword Omniverse NUI.