基本介紹
- 中文名:厲動
- 外文名:Leap Motion Controller
發展
功能
硬體介紹
開發
坐標系統
- Leap遵循右手坐標系,坐標系中單位與世界中一毫米相對應,坐標原點是設備的中心。
XZ軸組成水平的一個平面,X軸指向設備的長邊,Y軸豎直,向上為正方向!Z軸相對螢幕向外是正方向!
動作綁定數據
當設備檢測到手、手指、工具或者是手勢的話,設備會賦予它一個唯一的ID號碼作為標記,只要這個實體不出設備的可視區域,這個ID號就會一直不變,如果設備丟失這個實體之後又出現了,Leap 就會賦予它一個新的ID號碼,但是軟體不會知道這個和以前的那個實體有什麼關係。
注意:我們計畫在發布給消費者能夠提高為你程式提供的動畫步驟的數據。在將來發布的SDK中,我們計畫使用骨骼手指模型來提供更加詳細的數據綁定和連續性的實時數據。
2.1 幀
A Frame object provides lists of the tracking data, gestures, and factors describing the overall motion observed in the Leap field of view.
一個Frame的對象提供了綁定數據,手勢和元素的列表,這些數據用來描述設備視野內觀察到整體的動作。
數據綁定列表
Hands——所有的手
Pointables——所有作為 Pointables的手指和工具
Fingers——所有的手指
Tools——所有的工具
Gestures——所有的手勢包括開始、結束或者在進行中的
這三個 可指向物體的列表(可指向物體、手指、工具)包含每一個在每一種里被檢測到的可指向的物體。你可以使用一個手來訪問這些可指向的物體,這個手對象是通過Hands在手列表中的對象。需要注意的是:手指或者工具可能不會被手對象所關聯,願意是這些可指向的物體只有一部分在Leap的可視區域裡面。
如果你綁定了一個單獨的物體,比如一個手指頭,每一幀中,你都可以通過ID和那個物體關聯起來,並在新的幀裡面找到它。使用以下的方法來找到相應的類型物體。
Frame.Hand()
Frame.Finger()
Frame.Tool()
Frame.Pointable()
Frame.Gesture()
這些方法函式返回相應的對象的引用,如果在當前的幀裡面存在的話。如果這個對象不再存在了,一個特殊的無效對象就會被返回。無效對象被很好的定義供你使用,但是不存在有效的綁定數據。這項技術幫助我們減少了空對象檢測的工作。
2.3 幀動畫
Leap 能夠分析在場景中較早的幀中的整體的動畫,並且綜合典型的移動旋轉和縮放因素。比如,如果你將兩隻手同時向左移動,並保證在Leap的視野裡面,在幀中包含了移動的信息。如果你彎曲你的手就像旋轉一個球,在幀裡面就包含旋轉的信息。如果你移動兩隻手相對或者相向移動,那么在幀中就包含了縮放的信息。Leap設備對於動畫的分析基於在視野中的所有物體,如果有一個手在其中的話,那么就會基於這一個手的因素來分析,如果兩個手的話,分析動畫就會基於兩個手的因素。你也可以為每一個手獲得獨立的動畫因素,需要從Hand對象裡面獲得。
幀動畫的產生是通過當前的幀與更早的幀的比較獲得的。描述動畫合成的屬性包括以下:
RotationAxis — 旋轉軸的方向.
RotationAngle —順時針旋轉的角度
RotationMatrix — 描述旋轉的矩陣.
ScaleFactor — 表達碰撞或者收縮的因素
Translation — 線性移動的因素
你可以直接添加動畫因素來操作這些物體,而不需要綁定個人的數據。
手模型
這個 手模型 提供了被綁定的手的位置信息、特點以及運動方式。並且還包括了手指或者手上的工具的所有和手關聯的東西的信息。
LeapAPI儘可能多的提供關於手的信息。但是,Leap不能夠確定每一幀所有屬性。比如當你的手突然攥成了拳頭,這個時候,它上面的所有的手指是不能用了,手指的list就成了空。所以你的程式需要對這種情況做一個檢測。
Leap設備不能確定某一個手是左手還是右手,多於兩個手出現都可以放到list裡面去,如果不止一個人將手放進來,或者有一個像手的物體。然而還是建議最多兩個手來保證動作步驟的質量。