划出个未来:Leap Motion 开发及初体验
作为 Kinect 较早的玩家之一,我经历了一个由惊喜到淡忘的过程。动作捕捉游戏一开始确实能够让人惊喜非常,配套游戏的设计也确实让人眼前一亮。可大概 1 个月以后,我就对 Kinect 失去了兴趣。说实话,玩法不够多,体验不够好,而且体育锻炼我更愿意去户外。但是将 Kinect 用于其他领域,可能性就会大很多。比如用在互动广告、现实增强等等方面。
微软推出 Kinect for Windows 开发套件,目标就在于推广 Kinect 进入商用及民用领域。Kinect 擅长人体结构的探测以及人脸识别,但对更近距离以及更高精度的要求无能为力,而 Leap Motion 正填补了这个领域。Kinect 识别人体骨架、动作主要依靠硬件特性,Leap Motion 则主要依靠算法。我们有机会拿到了一台 Leap Motion 开发版,进行了操作和简单的开发体验。
Leap Motion 外形很小巧,尺寸大约为 80 毫米× 30 毫米× 11 毫米, 重量约 32 克。侧面使用铝合金材质,顶部是黑色半透明玻璃,底部是橡胶垫脚。可以通过位于“正面”右下角的指示灯和左侧的接口判断正反,Leap Motion 在正常工作时会点亮绿色指示灯,同时能够看到设备顶部透明顶盖下被点亮的红外线 LED。
简单地说,Leap Motion是通过两个摄像头捕捉经红外线 LED 照亮的手部影像,经三角测量算出在空间中的相对位置。Leap Motion 的识别范围大致为设备顶部以上 25 毫米处至 600 毫米处,识别空间基本上是个倒置的四棱锥体。理论上在这个空间中能够实现精度为 0.01 毫米,目标是手指的动作识别,延迟大概在 5-10 毫秒左右。
Leap Motion 提供 SDK,包含多个示例,但开发资源相对 Kinect 来说依然太初级。使用示例可以基本预览 Leap Motion 的功能,包括指尖位置,指尖方向,运动趋势,手势识别,手掌平面及四指方向的识别,以手指为基准的球面法线计算,握笔手势中的笔势识别等等。Leap Motion 的运行依靠算法,需要一定量的处理器和内存资源,在酷睿 i5 3210M 平台上大约消耗 20% CPU,500 MB 左右的内存,Leap Motion 控制器本身也会显著发热。
我们使用 SDK 进行了简单的开发,使用 C++,主要调用 SDK 中的 Leap.dll,通过计算手指的平均位置控制鼠标指针,将手指顺时针画圈(CircleGesture_Clockwise)手势定义为左键鼠标点击,将手指点击(KeyTapGesture)手势定义为鼠标右键,将手掌点击(ScreenTapGesture) 手势定义为点住左键不动/释放,制作了一个简单的鼠标应用,我们叫它“Leap Mouse”。然后,顺手玩了一下《Left 4 Dead 2》。
Leap Motion 能实现 0.01 毫米级别的动作捕捉,在你握住笔或者其他细长的物体时可以计算出笔尖的位置,用于绘画或者书写应用是个好消息。Leap Motion 的预售价格为 79.99 美元,而在笔记本计算机中添加触控部件的成本会随着尺寸从 13 英寸约 75 美元起跳。如果未来 Leap Motion 能够直接嵌入笔记本的掌托,我认为是替代触控的一种方案。
但是同样的,Leap Motion 在笔记本上与触控有一样的问题:手臂悬空的糟糕体验。实际上,Leap Motion 的高精度其实也会带来一些问题。Leap Motion 的精度目前是不能调节的,所以在不需要高精度控制的场景下,比如用 Leap Motion 控制鼠标就会显得非常吃力。如果像一些鼠标那样提供一个 DPI 切换的功能,Leap Motion 的实用性也许会好很多。
其实说到底,这些假设都只是“治标不治本”,在我的想象中,Leap Motion 的功能绝不仅限于在屏幕上操作。Leap Motion 能够提供三个轴向的动作捕捉,而现在的这些应用都只是利用了两个轴,“纵深”的数据一直都没有利用起来。我们测试的这台 Leap Motion 由 Crytek 上海工作室提供,对于 Crytek 这样设计尖端 3D 图形引擎的公司,Leap Motion 这样的控制器能够直接代替现在的旋钮 3D 控制器进行模型的演示。能够想象的是,如果未来全息显示技术实用化,Leap Motion 会是现实和虚拟之间非常好的接口。
Leap 公司已经公布,未来会随着 Leap Motion 一同正式发布一个名为 Airspace 的应用商店,里面会推出免费或是付费的应用,来发挥 Leap Motion 更多地潜力。如果你是开发者,去 Leap Motion 官网申请开发版吧,如果你是消费者,可以选择海外代购,或者去淘宝看看。