雷锋网按:本文作者布格小虎,专注于VR内容及技术,不定期分享VR前沿探讨及技术开发内容。
今天我们将探讨一个有趣的问题:虚拟现实中手的使用。这次的文章是根据Jakob Johansson(CEO Gleechi)和Kai Hubner,PhD (CTO Gleechi)在VRDC讲座中整理的。
首先请大家攥紧拳头试想一下没有手的生活是多么不便,我们不能翻开书本,不能抓取杯子,不能弹奏乐器,不能和朋友击掌,等等。灵活的双手为生活带来了太多便利,是生活中不可或缺的一部分。Gleechi公司致力于研究机械手已经有8年的时间,直到VR市场的打开,Gleechi公司发现机器人和虚拟现实中的角色人物有太多相似的地方,关于如何抓取物品,如何与物体交互?这个在机器人研究中的关键问题,也成为了VR领域所需要解决的问题。
现在很多的虚拟现实游戏,关于手的操作都有很大的问题,例如物体直接跳到虚拟手上,虚拟手穿过物品,或者当使用隐形的虚拟手时,我们只能看到物体悬浮在空中。而导致这些的原因是因为人手的结构非常复杂,尤其实在人们尝试用手和物品进行交互时,事情就变得更加复杂了。下面我们将具体谈谈如何在VR开发中解决这些问题。
历史上。世界第一个机械手是由devol&Engelberger,Unimate (1960年) 发明的。这个机械手自由度为1DOF (degree of freedom),只能在一个维度上抓取物品。然而现在的机械手发展与真实世界的手更加接近了。我们将基于以下三个方面谈谈机械手和虚拟手的发展:
关于这个话题,我们将通过性能(performance)和灵活性(flexibility)两个方面做出介绍,正如下图:
高性能的手:在工厂里经常使用,它快速,强大,准确,适合做重复性工作。
高灵活性的手:与不同的物体有更多交互,但性能可能较差。
人手:处于居中位置。
所以在应用开发中,我们如何选择输入设备呢?这个问题也可以通过性能和灵活性两个方面做出解答。拥有高性能的动作控制器(motion controller)提供了友好的操作,用户只需要按下简单的按钮去完成任务。然而对于复杂的手指跟踪我们更愿意选择灵活度高的摄像机。
物体是交互中重要的一部分,物体会决定手的交互方式。谈到这个问题我们先来介绍一个简单的概念可供性(affordances): 是环境与生物体之间的关系,通过一系列的刺激,为生物体提供一个机会执行动作。 比如机器人看见一个锅手把,他会与手把交互,举起锅子。如果看到一个轮子,他会想旋转它,如果是斧子,他会想举起它。
我们对不同的抓取进行了等级分类,如下图所示:
力量抓取(power grasp)和精确抓取(precision grasp)。根据不同物品和你将对物体进行不同的操作,例如握住一个球或者夹起一根笔。我们从可供性,工具和分类三个方面,决定了如何抓取。Aaron M. Dollar两年前的一个有趣的研究,他对一个佣人和一个机械工程师的日常手部操作进行观察研究发现,两人超过50%的操作都集中于三种抓取动作,但是佣人的力量抓取比例大于精确抓取,而工程师相反。
那么在下图的游戏开发中,我们应该怎么做呢?
我们可以看到场景中有各种物品,我们需要使用力量抓取去得到一个重物例如图中的铁锅,而抓取一个较小的叉子,我们使用精度抓取。
了解了概念之后,我们开始进入重点,虚拟抓取(virtual Grasp)。我们关注于如何让虚拟手在VR世界中更加贴近自然手的操作,我们将从:
手的展示(Representation of hands)。
物体交互(Object interaction) 。
输入 (Input) 。
三个方面的细节谈谈虚拟手。
1、避免恐怖谷(Avoid the uncanny valley) :恐怖谷理论是一个关于人类对机器人和非人类物体的感觉的假设,它在1969年被提出,其说明了当机器人与人类相像超过一定程度的时候,人类对他们的反应便会突然变得极反感,即哪怕机器人与人类有一点点的差别都会显得非常显眼刺目,从而整个机器人有非常僵硬恐怖的感觉,有如面对行尸走肉。如果VR游戏中,我们使用与人类手非常相像的一双虚拟手,但是虚拟手的行为却不自然,那么用户就会感到害怕和不适。
2、避免特性手 (Avoid hand personalities),比如很大或者很小的虚拟手。或者一双行动自然的虚拟手,但是皮肤颜色与用户不同。
3、Be consistent(一致性):关于虚拟手的一致性,比如当我们在应用中选择与真实人手最接近的模型来进行交互时,我们希望交互的效果是最自然的。当我们选用机械手的模型进行交互时,物体可能会跳到虚拟手上。隐形手可能是一种解决虚拟手和物体交叉穿过的好办法。卡通手会在抓取到物体的时候消失。我们也可以让虚拟手拿一个工具来进行交互。
例如下表所示:
上图表格从上到下,手的展示越来越抽象,下图表格,随着手的展示抽象感增强,交互的复杂度随之减少。
4、忽略手臂(skip the arms): 因为手臂在虚拟场景中会有很大浮动,影响整体效果。
5、思考关注场景中的每个物体(think long and hard about every object in the scene) : 让场景中的物品尽可能的与虚拟手交互。
6、使交互物品可观察 (make is obvious how to interact with object): 不要使对一个物品有很多复杂的操作,这样开发会变得更复杂。
7、选择最自然的抓取 (pick the most natural grasps): 思考人们想在虚拟环境中对物体做什么操作,比如一个杯子,我们会用它喝水,把他放进洗碗机,把它摔在地上..等等。另外,正如我们之前提到的,抓取操作有很多种,物体的不同,使用目的不同,抓取的方法也会不同。
8、根据使用案例选择控制器 (choose controller based on the use case):如之前我们谈到过的运动控制器(Motion controller)在游戏中更容易使用,用户不用考虑太多,只需要按下按钮。而当我们用到肢体语言时,手指的追踪就显得尤为重要了。
9、反馈(use feedback):告诉用户他成功的拿起了物品,比如使用声音,或者视觉上感受到物体被拿起,或者高亮被操作的物品。
10、有时手的操作回馈会显得奇怪(Some times hands and feedback gets weird):有时玩家对物体进行预测不到的操作,可能会得到奇怪的反馈。
总结:虚拟手的操作是VR开发中的重要部分,希望大家通过这篇文章对于虚拟手有了更深层次的了解,对于虚拟手在应用中的选择也有了更准确的把握。