leap motion技術(shù)原理
我搞體感開發(fā)兩年,從去年知道了leapmotion這款產(chǎn)品,開始不以為然,以為是基于空氣動力學的擾流分析產(chǎn)品,春節(jié)后看到某位po主的拆機 圖,不禁驚嘆:平臺類的好創(chuàng)意都讓外國開發(fā)者搶先了。leapmotion的官方售價低于500元人民幣,利潤不高。既然制作相同產(chǎn)品為時已晚,就讓我詳 細地分析它的技術(shù)原理,拋磚引玉,激勵我們國內(nèi)開發(fā)者也能有如此優(yōu)秀的創(chuàng)意迸發(fā)出來吧。
我們的手上紋路很多,筆桿等物體也有很多顯著紋路與凹凸,leapmotion的基本原理是用高清攝像頭近距離捕捉被測物體的表面照片,采集物體的紋理特征,并進行反算得到物體表面的空間信息。
學過圖形圖像學的同學對矩陣變換已經(jīng)很熟悉了,其實矩陣沒啥難的,三個數(shù)量構(gòu)成一個向量,那么一個向量的空間變換必然基于三個以上的方程組,位移和旋轉(zhuǎn)三個系數(shù)夠用,再加一列標志縮放的方程系數(shù)就夠成了齊次矩陣,也就是給向量多加一個常量的尾巴,這里一筆帶過了。
但是有一個關(guān)鍵點,那就是由world space到screen space有一個倒數(shù)運算,夠成了近大遠小的投影圖像,也就是游戲編程盡量回避的z fighting問題。
我們的眼球成像和攝像頭成像都是視錐投影,所以把含有倒數(shù)的結(jié)果反算成空間中實際存在的物體表面就必須靠猜。
兩條投影線難以確定線性方程的兩個系數(shù),所以由平面投影反算三維點位至少需要三條投影線,如果是黑白畫面的話,投影線要更多,越多越準確。
現(xiàn)在運算公式我們有了,剩下的就是用步進角匹配兩個攝像頭的特征值結(jié)果了。當兩個經(jīng)過矩陣換算的原始紋理大致相同時,我們就可以確定,這個特征面的角度。
這個捕捉方式的問題在于,如果物體太遠,紋理就捕捉不到,所以捕捉距離是非常有限的,但是作為操作界面來說足夠用了。