HOWTO: 在Macbook上DIY窮人的multi-touch (Part 1)

Apple雖然已經把multi-touch擴展到iPhone以外的Macbook Air和Macbook Pro,可是唯獨Macbook還是沒有multi-touch trackpad能用。在看了前陣子CMU HCII的PhD學生Johnny Lee利用Wiimote做了個multi-touch demo後,就讓我興起在自己的Macbook上也搞一個來玩的念頭。這整個過程我會發表在這blog上,讓有興趣的人可以參考。

簡介

multi-touch的實做方法很多,最簡單的一種稱為 FTIR (Frustrated Total Internal Reflection)。FTIR是在壓克力面板內打入紅外線,當手指按上去時會產生反射,接著在面板後用一個紅外線攝影機去追蹤這些因為反射而亮起來的地方。

在Johnny Lee的Wiimote demo中,其實也是用了相同的概念。他用自製的紅外線LED燈(注意看影片,上面可是有100顆LED…)往user的方向照,而紅外線碰到手指會反射回去(他在手指上貼了反射片,能拉大手指和身體其他部位反射的差距),最後再利用Wiimote內建的紅外線攝影機來做tracking。這裡要特別說明的是,Wiimote非常神奇的內建了硬體的光點追蹤(blob tracking),最多可以支援到四個光點,而Johnny Lee就是利用了這個內建功能輕易的完成了multi-touch控制器(嚴格說起來沒有”touch”,應該叫做multi-point才對)。

根據以上的說明,我們可以知道要自己DIY一個最簡單的multi-touch device需要下列材料:

  1. 紅外線LED x N
  2. 紅外線攝影機 x 1
  3. 一塊壓克力板, 或是可以貼在手指上的反射片
  4. 光點追蹤軟體或硬體

目標

整個project最後目標是能接到Mac OS X底層的API,讓這個DIY裝置的輸出直接變成OS X能接受的event。後來研究一下才發現,Apple根本就還沒公佈什麼multi-touch API,雖然我猜已經有未公開的API了,但我不知道怎麼查,如果有人知道請告訴我,我會非常感激你的 😀

因為我想在Macbook上做到multi-touch control,又不想破壞我的愛機,所以只好採用非接觸式的控制方式,也就是像Johnny Lee那樣在空中揮動手指就能感應。

我上個星期趁放假花了三天,已經完成了第一階段的prototype,證實這個idea是真的能運作的。
有圖有真相:

這篇先寫到這,下一篇將開始介紹硬體部份的製作。

21 thoughts on “HOWTO: 在Macbook上DIY窮人的multi-touch (Part 1)

  1. 真的太酷了~
    著個真的能應用在很多地方
    如果不須要wiiremote就更容易普及

  2. Pingback: Apple » HOWTO: 在Macbook上DIY窮人的multi-touch (Part 1)

  3. Hi Mr. Monday,

    原來你也在DIY multi-touch table,難怪UIUI上每天都是multi-touch的文章..:-D
    很少看到台灣的blog有這種hardware hacking的介紹,我很期待你的DIY分享 😀

  4. Pingback: » vgod on Multi-Touch

  5. Pingback: Apple » Blog Archive » vgod’s blog: HOWTO: ???Macbook???DIY?????????multi-touch (Part 1)

  6. Pingback: Iphone » vgod’s blog: HOWTO: ???Macbook???DIY?????????multi-touch (Part 1)

  7. 如果是一般的網路攝影機或是一般的攝影機
    是否也能實作?
    還是一定得要有夜視功能或是什麼紅外線感應的才OK
    還是只要有遙控功能的(就是像電視遙控器指著鏡頭就有感應的)也行
    我想說內建的功能應該不會太複雜
    我也看過蘋果官網MACBOOK中的內建鏡頭DM並沒有很強調有紅外線功能
    我也想在桌上型PC試試看(但沒有內建攝影機)
    因為文中提過用內建的+自製濾光片就可以當成紅外線功能的用
    所以不曉得一般的攝影機能否實作
    希望各位能夠答覆
    謝謝

  8. Hi Apple,

    其實一般的攝影機都是能看到紅外線的。可是有許多攝影機會故意加上阻擋紅外線的濾光片,讓鏡頭只會接收到可見光。這種攝影機大多把濾光片黏死在鏡頭上,要拆也不容易。所以實做前還是先拿個遙控器對攝影機按按看,只要能看到遙控器發光就可以了。

  9. 謝謝你 Vgod
    我還有一個問題
    紅外線LED燈如果買IR LED來兜
    是不是用發射型的LED

  10. Apple:
    沒錯, 要能發射紅外線光的LED.
    在電子材料行應該會看到兩種大小, 買大的就對了.

  11. Pingback: » DIY Surface Table (I): NUI & 實作的總類

  12. Pingback: » MMDays - Mr. Monday - DIY Surface Table (I): NUI & 實作的總類

  13. 發現外接視訊攝影機一個問題了
    如果把鏡頭面對自己如VGOD提供的上圖
    就會有左右相反的問題
    真的很麻煩
    OPENCV內建的好像也沒有左右對調的讀取鏡頭
    但是把鏡頭放在後面和人一樣面對螢幕左右才正常
    不知道該如何是好

  14. OPENCV內建光點追蹤我有點問題
    CAMSHIFT和MEANSHIFT我看手冊(155頁左右)不曉得差別在哪
    各位有沒有一個比較易懂的範例
    就是光點追蹤和產生對應物件
    OPENCV中文HP給的範例不太懂
    http://www.opencv.org.cn/index.php/%E8%AE%BE%E5%AE%9A%E8%B7%9F%E8%B8%AA%E7%9B%AE%E6%A0%87%E5%9B%BE%E7%89%87%E7%9A%84%E6%94%B9%E8%BF%9Bcamshift%E4%BE%8B%E5%AD%90
    說明我還大概了解
    把要追蹤物體圖片存起來在放大區域算直方圖
    但是一些具體(基本的動作是哪些和哪些是額外的功能)
    例子代碼又加了很多我不懂和追蹤光點有什麼關聯的
    希望對這方面有所認識
    謝謝

  15. APPLE:
    iSight也有左右相反的問題, 只是我在文章中沒有提到, 但我的程式裡有處理:p
    OpenCV有堤供翻轉畫面的函式, cvFlip. 把畫面丟進去, flip_mode設成1就可以左右翻轉了

  16. 請問可以交我如何使用opencv擷取攝影機的原始圖案嗎

    因為我弄了很久始終不懂.而且我也找不到什麼書

    拜託你了…謝謝

  17. Pingback: 圖片左右相反 軟體 -部落格熱搜- 圖片左右相反 軟體

留言給我吧!