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