DIY Surface Table (I): NUI & 實作的總類

本文轉載自 <UIUI>

(我想寫的應該是很通俗了:))

Posted by Mr. Monday

我曾經在前面一篇文章提 到要寫一系列的教學文來告訴大家如何製作硬體,因為我瞭解做軟體的人的瓶頸在於硬體,硬體解決之後,就是軟體人的天空了。而多點觸控 (Multitouch) 這種新型態的介面在未來必定會成為一個趨勢,一個通用的介面,在國外已經有許多的研究機構開始大量投入人力研究了。因此,希望台灣對於 UI 研究有興趣的人也可以多加參與。其實在台灣已經有不少人做出了多點觸控 (Multitouch) 的硬體,但是在 Google 上面一查,便會發現,中文的相關資料是非常稀少的。相較於國外的熱絡程度來說是有差距的。因此希望這一系列的教學文可以彌補這個遺憾。當然,並不是我特別 懂,而我只是願意花些時間來寫寫這些文件而已。

什麼是多點觸控 (Multitouch) ?

為了以防有人不知道什麼是多點觸控,讓我簡單解釋一下,單點觸控就像是你在捷運系統儲值票卡看到的螢幕一般,一次只能感應一個點。而多點觸控則是可以一次感應很多點。多點觸控現在最流行的機器就是 iPhone,因為 iPhone 可以讓你用兩個手指頭來把圖片放大縮小 (兩大於一,所以是多點)。而真正強大的多點觸控是,沒有點數的限制。那可以有什麼應用呢? 看以下 Demo 你就會瞭解了:

誰在推廣多點觸控 (Multitouch):

在正式開始時實做之前,我要先介紹一些基本原理,以及一個團體 NUI (Natural User Interface)。NUI 是一個荷蘭 Geek 所發起的團體,他們對於多點觸控 (Multitouch) 的介面推廣不留餘力,他們成員中的每一個人都會在 Blog 旁邊加上上面的那ㄧ個 Logo。他們不但公開他們的影體作法,也完全公開他們的軟體。對於他們無私的奉獻這是我深受感動的地方,他們似乎就只是為了推廣而推廣。

這邊先介紹幾個 NUI 靈魂人物的 Blog:

  • David Wallin: 主要負責 TouchLib 的開發,他似乎有很深的電腦視覺 (Computer Vision) 的知識
  • Laurence Muller : 非常積極投入新的多點觸控 (Multitouch) 程式 的開發,以及修改 TouchLib 這個程式庫
  • Adithya | Divesh: 兩位印度人,在 NUI 裡面非常活躍,時常回答大家的問題,他們 Build 一個自己的移動式系統
  • Paul D’Intino: NUI裡面的一個要角,積極投入多點觸控 (Multitouch) 研究
  • Seth Sandler: 剛完成他的大學學位,主要是從事互動藝術,他專心在音樂領域上面,他專門開發跟音樂有關的多點觸控程式
  • Tim: 德國設計學院的學生,已經拿他設計的桌子做了幾次參展
  • Chris: 在 NUI 當中非常活躍的能人

好吧,我不能再繼續介紹下去了,我只能說 NUI 聚集了一群對於 多點觸控 (Multitouch) 介面非常喜愛的同好,來自各個不同國家。他們實驗了各種不同的材質,互相交換實作的訊息,所以,如果想要實做 多點觸控 (Multitouch) 的人在這個論壇裡 面可以獲得非常詳盡的資料。那意思是說,我也不用介紹囉? 因為你們自己看資料就瞭解囉? 嗯,我當初是從 Google 先找到這幾個人的 Blog,後來才發現他們的 Blog 有一些共同之處,就是他們的 Blog 上面會掛個那個像波浪一般的奇怪 Logo,所以我就點進去後,才發現真正的寶山。不過因為寶山太過複雜,要理出一個頭緒還是需要些時間。如果你先看完我的教學後,在進去裡面查找,可能會 對你比較方便,第一個是,因為你已經有了概念,第二個是,因為你知道要下哪些關鍵字來查找。

當然不只 NUI 在推廣多點觸控 (Multitouch) ,還有一些團體像是 OpenTablevvvv 這兩個 Group。不過我想一開始我們不要把事情搞的這麼複雜,我們先從 NUI 的東西來入手好了。

Multitouch 建置原理:

我們想要研究多點觸控 (Multitouch) 的介面,就必須要先建置一個多點觸控 (Multitouch) 的桌子。如何實做桌子的方法非常多。你可以用電阻/電容的方式來建置你的多點觸控 (Multitouch) 桌,也可以用純粹電腦視覺的方式來建置你的 桌子,像是下面這篇 UIST會議上 的 論文,這位博士生證明了即時手指頭偵測是可以辦的到的。

或者是學 Joe Marshall 偵測手指顏色改變來抓取手指位置:

你也可以學 Diamond Table,不過建置這個桌子,不過會遇到複雜的電流計算就是了:

你也可以參考 Microsoft ThinSight 的作法,做一個紅外光的投光以及感應器陣列:

或是 Sony 的 SmartSkin,另外一種利用電阻的特性的方式:

或者是由英國的 Cardiff University 的研究員利用聲波的方式:

又或是像 Microsoft TouchLight 利用紅外光以及兩個 Camera 的方式:

不然也可以學 NextWindow 在角落塞上 2 個紅外光感測器,只是常常會很不準而已:

不然你也可以參考 Johnny Lee 的方式來把 Wii 當成多點觸控 (Multitouch) 儀器來用,但是你最多只能支援四個點,在 vgod 的部落格上面有介紹其中一個做法:

所以,當我們在選擇用什麼方式來實做時,是有很多考量的,所以,任何一種選擇都有其優劣,主要是看你想要製作什麼樣的桌子,在什麼情況下使用,並且你期望花多少力氣。在考量到穩定性、實做方便性、低成本以及真正的多點觸控 (Multitouch) (不是 Johnny Lee 的陽春型 Multitouch) 之下,有兩個方案顯得非常迷人。一個是 Microsoft Surface Table 所用的 DI (Diffused Illumination):

microsoft-surface.png

另外一個是由 Jeff Han 所發明的 FTIR (Frustrated Total Internal Reflection):

而這兩項建置技術也是 DIY 族群所廣為擁抱的,因為價格低,實做不複雜的原因。在 NUI 論壇裡面可以看出來有兩派,一派擁護 FTIR,一派擁護 DI,而觀察的趨勢是,早起大部分 NUI 的人都是用 FTIR,不過當 Microsoft Surface Table 推出後,DI 的方式在 NUI 裡面就大為盛行了。

因為 FTIR 以及 DI 都是利用紅外光 (IR) 的原理,因此在下篇文章當中我將會先介紹 IR 的特性,這篇文章到目前為止有點長,就在此先休息一下吧。我希望的是,不瞭解技術的人在看完文章之後,也能完全建立你們自己的桌子,所以如果有任何不懂的地方可以隨時提出來,如果是我能夠解答的部份,我會為你解答。(不過這一篇似乎還沒講到如何實做)。

喜歡這篇文章嗎? 分享出去給作者一點鼓勵吧!