LeapMotion體感的原理是什么?
來(lái)源:
互聯(lián)網(wǎng) |
責(zé)任編輯:傳說(shuō)的落葉 |
發(fā)布時(shí)間: 2013-07-24 11:56 | 瀏覽量:
了解完leapmotion是什么,再帶大家了解一下leapmotion的原理。本文作者從API的角度大概描述了leapmotion的原理,圖片解析很到位,是個(gè)不錯(cuò)的教程。
Leap Motion體感器的結(jié)構(gòu)圖
大體上,Leap 傳感器根據(jù)內(nèi)置的兩個(gè)攝像頭從不同角度捕捉的畫(huà)面,重建出手掌在真實(shí)世界三維空間的運(yùn)動(dòng)信息。檢測(cè)的范圍大體在傳感器上方25 毫米到600 毫米之間,檢測(cè)的空間大體是一個(gè)倒四棱錐體。
首先,Leap Motion 傳感器會(huì)建立一個(gè)直角座標(biāo)系,座標(biāo)的原點(diǎn)是傳感器的中??心,座標(biāo)的X 軸平行于傳感器,指向屏幕右方。 Y 軸指向上方。 Z 軸指向背離屏幕的方向。單位為真實(shí)世界的毫米。如圖:
在使用過(guò)程中,大躍進(jìn)運(yùn)動(dòng)傳感器會(huì)定期的發(fā)送關(guān)于手的運(yùn)動(dòng)信息,18 per這樣的信息稱(chēng)為“幀的”(框架)。每一個(gè)這樣的幀包含檢測(cè)到的:
Leap 傳感器會(huì)給所有這些分配一個(gè)唯一標(biāo)識(shí)(ID),在手掌、手指、工具保持在視野范圍內(nèi)時(shí),是不會(huì)改變的。根據(jù)這些ID,可以通過(guò)Frame::hand( ) , Frame::finger( ) 等函數(shù)來(lái)查詢每個(gè)運(yùn)動(dòng)對(duì)象的信息。
Leap 可以根據(jù)每幀和前幀檢測(cè)到的數(shù)據(jù),生成運(yùn)動(dòng)信息。例如,若檢測(cè)到兩只手,并且兩只手都超一個(gè)方向移動(dòng),就認(rèn)為是平移;若是像握著球一樣轉(zhuǎn)動(dòng),則記為旋轉(zhuǎn)。若兩只手靠近或分開(kāi),則記為縮放。所生成的數(shù)據(jù)包含:
其中,手掌的法向量和方向如下圖所示:
「手掌球」的圓心和半徑:
對(duì)于每個(gè)手掌,亦可檢測(cè)出平移、旋轉(zhuǎn)(如轉(zhuǎn)動(dòng)手腕帶動(dòng)手掌轉(zhuǎn)動(dòng))、縮放(如手指分開(kāi)、聚合)的信息。檢測(cè)的數(shù)據(jù)如全局變換一樣,包括:
Leap 除了可以檢測(cè)手指外,也可以檢測(cè)手持的工具。像上文所說(shuō)的,就是細(xì)的、筆直的、比手指長(zhǎng)的物件:
對(duì)于手指和工具,會(huì)統(tǒng)一地稱(chēng)為可指向?qū)ο髮?duì)象(Pointable,抱歉不太會(huì)翻譯),每個(gè)Pointable對(duì)象包含了這些信息:
根據(jù)全局的信息、運(yùn)動(dòng)變換,手掌、手指和工具的信息和變換,開(kāi)發(fā)者就可以靠這些來(lái)制作游戲、程序了。(本文來(lái)源:知乎)
Leap Motion體感器的結(jié)構(gòu)圖
大體上,Leap 傳感器根據(jù)內(nèi)置的兩個(gè)攝像頭從不同角度捕捉的畫(huà)面,重建出手掌在真實(shí)世界三維空間的運(yùn)動(dòng)信息。檢測(cè)的范圍大體在傳感器上方25 毫米到600 毫米之間,檢測(cè)的空間大體是一個(gè)倒四棱錐體。
首先,Leap Motion 傳感器會(huì)建立一個(gè)直角座標(biāo)系,座標(biāo)的原點(diǎn)是傳感器的中??心,座標(biāo)的X 軸平行于傳感器,指向屏幕右方。 Y 軸指向上方。 Z 軸指向背離屏幕的方向。單位為真實(shí)世界的毫米。如圖:
- 所有手掌的列表及信息;
- 所有手指的列表及信息;
- 手持工具(細(xì)的,筆直的,比手指長(zhǎng)的東西,例如一枝筆)的列表及信息;
- 所有可指向?qū)ο螅≒ointable對(duì)象),即所有手指和工具的列表及信息;
Leap 傳感器會(huì)給所有這些分配一個(gè)唯一標(biāo)識(shí)(ID),在手掌、手指、工具保持在視野范圍內(nèi)時(shí),是不會(huì)改變的。根據(jù)這些ID,可以通過(guò)Frame::hand( ) , Frame::finger( ) 等函數(shù)來(lái)查詢每個(gè)運(yùn)動(dòng)對(duì)象的信息。
Leap 可以根據(jù)每幀和前幀檢測(cè)到的數(shù)據(jù),生成運(yùn)動(dòng)信息。例如,若檢測(cè)到兩只手,并且兩只手都超一個(gè)方向移動(dòng),就認(rèn)為是平移;若是像握著球一樣轉(zhuǎn)動(dòng),則記為旋轉(zhuǎn)。若兩只手靠近或分開(kāi),則記為縮放。所生成的數(shù)據(jù)包含:
- 旋轉(zhuǎn)的軸向向量;
- 旋轉(zhuǎn)的角度(順時(shí)針為正);
- 描述旋轉(zhuǎn)的矩陣;
- 縮放因子;
- 平移向量;
對(duì)于每只手,可以檢測(cè)到如下信息:
- 手掌中心的位置(三維向量,相對(duì)于傳感器座標(biāo)原點(diǎn),毫米為單位);
- 手掌移動(dòng)的速度(毫米每秒);
- 手掌的法向量(垂直于手掌平面,從手心指向外);
- 手掌朝向的方向;
- 根據(jù)手掌彎曲的弧度確定的虛擬球體的中心;
- 根據(jù)手掌彎曲的弧度確定的虛擬球體的半徑;
其中,手掌的法向量和方向如下圖所示:
- 旋轉(zhuǎn)的軸向向量;
- 旋轉(zhuǎn)的角度(順時(shí)針為正);
- 描述旋轉(zhuǎn)的矩陣;
- 縮放因子;
- 平移向量;
Leap 除了可以檢測(cè)手指外,也可以檢測(cè)手持的工具。像上文所說(shuō)的,就是細(xì)的、筆直的、比手指長(zhǎng)的物件:
- 長(zhǎng)度;
- 寬度;
- 方向;
- 指尖位置;
- 指尖速度;
-
分享到:
相關(guān)文章
網(wǎng)友評(píng)論
您需要登錄后才可以發(fā)帖 登錄 | 立即注冊(cè)
關(guān)閉
- 用戶名:
- 密 碼:
- 驗(yàn)證碼: 看不清? 點(diǎn)擊更換
- 忘記密碼?
全部評(píng)論:0條
推薦
熱門(mén)