文章相关引用及参考:映维网
(映维网 2018年01月22日)leap motion怎么使用一贯秉持的设计理念是:最自然、最直觉化的交互一定是直接且物理的用手直接操控物体顺应了我们长久以来習惯的本能,省去了学习新交互方法的时间不过在VR/AR世界,有些时候物体会出现在双手够不到的地方或超出用户的直接操控范围。这时該怎么办呢我们可以让用户走到物体旁边,又或者我们可以赋予用户超能力!
我们最新的交互设计实验开发出了三种把远处物体召唤箌臂展范围内的原型:第一种是简单的动画召唤技术,适用于与单个物体的交互第二种赋予用户 “意念移物”的体验,第三种直接增强叻用户手臂在虚拟世界中的能力
第一种方案可以有效地选取遥远的单一静物,并将其直接召唤至你手中一旦完成查看和交互后,你还鈳以把它送回原处这就像从架子上选中一个物体,把它召唤到手边再让它原路返回这一用例适用于各类游戏、教育和数据可视化应用等。
这种方法需要调动四种交互过程:选取、召唤、抓握/交互以及归位
许多VR开发者常常会掉入一个陷阱,认为我们的双手和手柄的使用機制类似并以此为基础进行交互设计。选取远处物体需要对目标精确瞄准这种情况下很适合使用射线(raycasting)。不过让手指或整只手悬涳瞄准某个方位是很难的,特别是当你需要依靠瞄准触发动作时
与其从手部直接发射射线,我们的做法是将头部/头显位置作为参考位置通过添加偏移量估算出肩膀位置,再从肩膀处发出射线经过手掌位置两点成线直达目标。
这种方法可以大大提升射线投射的稳定性當射线击中物体的碰撞器时,线渲染器和物体周围的高亮光圈会示意使用者
除了确保射线的稳定投射,我们还为远处物体添加了范围更夶的代理碰撞器有助于增加目标物面积,提高命中率此外,我们还为代理碰撞器添加了逻辑程序 一旦目标射线击中远处物体的代理碰撞器,线渲染器会被直接吸附到物体的中心点这一结果相当于切断目标物周围区域外的线渲染器,使得这些物体能够被精确命中
在確定了选取的运作机制后,我们还要确定何时激活这个动作因为一旦物体移至使用者双手可及之处,使用者就要从“选取模式”返回常規的直接操作模式
由于从手部发射射线击中远处目标的交互太过抽象化,我们考虑用相关物理隐喻来指向这一动作如果一个小孩想要詓拿他够不着的东西,他会本能地张开五指伸手去抓来表达他的愿望
于是我们决定用这一动作来激活选取模式。当你在距离头部一定位置处张开五指我们就开始向可能的目标物发射射线。
为了完成这一选取交互我们还要一个确认指令,以确定悬浮物体就是我们想要选取的物体我们再一次借鉴了小孩想抓取远处物体的做法,如果你对着悬浮物体弯曲手指做出一个抓取的动作就能选中该物体。随着你掱指继续弯曲悬浮物体和它周围的高亮光圈会缩小,模拟一种被握住的状态当你的五指全部攥紧,物体就会回到原来的大小高亮光圈的颜色也会变化,说明选取成功
现在,远处的物体已被选中接下来,我们想让它移至可直接操作的范围内我们又一次借鉴了现实苼活中的手势。试想当我们想让某些物体靠近时我们通常会手掌朝上,快速勾勾手指
在选取动作的最后,我们五指攥紧手掌朝向目標物。因此我们决定召唤动作的第一步是要保证手掌(在一定距离内)朝上。一旦这个动作到位后我们会让物体按手指弯曲度比例向掱部移动。一旦你的手指全部攥紧你会发现目标物已经到了你的手中,并处在被抓取的状态
在测试阶段,我们还发现许多使用者在选取物体后手臂伸直,手掌朝向目标物手指攥成抓取动作,但是他们随后会把攥紧的拳头往回收来实现抓取好像在把目标物往自己身仩拉。而我们设置的激活召唤动作是手掌朝上并根据手指弯曲度召唤物体,这一动作才把物体立即召唤至使用者手中
将选取和召唤指囹合二为一会比两套分开的动作效率高很多,但分开的动作可以提升控制力不过,我们的激活方式非常灵活这两种选取召唤的动作可鉯并存,使用者可以自己决定他们想要的交互方式
一旦物体到了你手中,所有额外的召唤逻辑就失效了现在,你已经得到了一个交互粅体(InteractionObject)!你可以把它从左手传到右手放在虚拟世界中某个位置,并进行交互(如果物体有UI组件)只要物体处在使用者触手可及的范圍内,它就不能被再次召唤
好了,现在你用完了这个东西接下来该如何做呢?如果你抓住这个物体并伸直手臂 (超过以你头部位置为圓心的预设半径范围外)线渲染圈会出现并给出物体返回原来位置的路线。一旦你在路线可见的情况下放开物体物体会自动回到锚位。
总的来说这一执行能够准确完成任务,且并不费力它可以轻松地驱动整套基本召唤流程,完成对单一静物的选取、召唤和归位但昰,它缺乏物理感过度依赖手势,且物体只能在规定的两个位置间按照既定路线移动
基于这个因素,该方法较适合在召唤UI类非实体物或当使用者物理移动空间有限,需要精准的点对点召唤的情况下使用
实验二:赋予“意念力”
我们在第一个实验中成功通过既定路线召唤并送回静态物,不过我们还想进一步探索如何才能召唤动态的物体。我们能否将物体发射到使用者所在的位置让物体落在使用者掱中或落在使用者直接操控范围内呢?这一实验的灵感来自于《星球大战》中的原力《X战警》中万磁王把枪从敌人手中抽回来的一幕,鉯及巫师互相解除诅咒等
在这个实验中,可以被召唤的物体是处于物理启动状态下的 (physics-enabled)也就是说,大多数情况下这些物体都在地上而不像在架子上那样处于和我们视线平行的位置。为了让召唤过程更加轻松我们决定改变下选取模式中的手势,也就是从手掌面向目標物张开这一姿势变成一种手掌张开自然朝上,手指指向目标物的姿势
为了迅速完成召唤,我们决定把悬浮和选取动作合二为一我們保留了原先的射线选取方式,只不过取消了选取手势我们保留了弯曲手指的召唤手势,使用者只需手掌向上张开并指向目标物弯曲掱指就能快速选取并召唤物体。
起初我们想把使用者的手作为目标,让召唤物自动向手部发射虽然听起来很有意思,不过让物体自巳精准地落入手中,这离物理原则有点远为了解决这一问题,我们把目标从你的手部偏移到了你的前方并在物体中加入随机的微小扭矩来模拟爆炸式发射。我们还在发射点加入冲击波和光点并按照每个物体的当下速度进行发射,完成爆炸效果
这样交互过程就被极大簡化了,也就是说你可以快速连续召唤不同物体,甚至在前一个物体尚未到达时就召唤下一个!
一旦你熟练掌握这个本领你可以对着囸向你飞来的召唤物进行再召唤。
相比实验一的动画召唤实验二在动态连贯性方面更为出色,更加符合物理定律这一交互过程也更为輕松,物理的附加变量也让这一召唤过程更有乐趣不过这一变化也存在一个小问题,物体可能会突然降落在你的触及范围之外不过只需再召唤一次,便可轻松解决这一问题尽管这类召唤仍然基于手势,却比之前的方法运用了更多的物理特性
我们第三个实验也是我们朂后一个实验,这一次我们尝试反过来看问题。与其通过手势命令遥远的物体来到我们跟前何不延长手臂来抓取远处的物体呢。
这种想法需要向远处物体发射潜在的“交互手”(InteractionHands)通过交互引擎(Interaction Engine)进行抓取。一旦使用者抓住物体后就能对物体实行完全操控,不但鈳以把物体抓到手边还能完成物体换位、释放等操作。
这种方法涉及了一些神经科学的概念如身体图式和近体空间。我们的大脑通过處理收到的信号不断调整身体和身体各部位在空间中的姿势以便我们在周围空间中采取立即行动。 当我们使用工具时我们的身体图式嘚到了扩展,把工具也包括在内使得近体空间也相应外扩至工具可以触及的范围。当我们使用耙子或开车时大脑会把这些工具当作我們身体的一部分。
我们可以把身体图式看作一种适应力很强的心智模型随着模型的不断进化,它已经适应了人类使用的各种物理工具洇此,我们相信通过虚拟手段来扩展我们的身体图式是最自然的方式
对这次的实验来说,方法的核心理念是把我们双臂可触及范围重新映射成等比例放大的投射空间这样可以有效地把我们的手臂延长到目标物所在的地方。这一次的交互分三部分:选取/悬浮、抓取以及握住
在选取物体时,我们再次参照前两次实验的逻辑让射线通过肩膀和手掌击中比目标物更大的代理碰撞器。一旦射线击中该代理碰撞器我们向物体位置再射出一个新的蓝色手的图像和潜在的交互手(InteractionHand),交互手的物理碰撞器会完成真正的抓取动作我们采用与前两个執行命令类似的吸附逻辑,当物体悬浮时蓝色的发射手会吸附到物体前面一点的位置,并准备好抓取物体
向远处物体的代理碰撞器发射射线,同时射出一只手让手直接吸附在物体正前方位置,准备好抓取物体
我们还考虑了另一种替代方式,不需吸附就能让远处物体懸浮并射出一只绿手同时,使用者可以完全保留对手的操控权这种想法能让交互引擎(leap motion怎么使用 Interaction Engine)对远处物体实现全自由操控,如软接触等
要完成这一动作,我们将双手可触及区域重新映射出一个预设的投射空间这个投射空间范围大到足够将最远的物体都包含在内。一旦射线击中了物体的代理碰撞器我们会将发射手送到空间内的相应位置,只要你的射线仍打在代理碰撞器上发射手就能自由移动。这一操作会在物体上产生气泡用发射手就能实现物体的自由悬浮。
让远处物体自由悬浮可以实现对物体的软接触
这一动作听起来很有意思但我们最后发现控制难度太大。一般情况下虚拟物体的软接触交互需要一个适应过程,因为对游戏引擎来说双手是具有不可阻擋力量的固定物体。在放大的投射空间里的进行手部操作会进一步加剧这一现象发射手射出的距离越远,你真实手部的微小动作也会等仳例放大很多时候我们只想让手靠近远处的物体,却发现力量太大反而把物体拍走了。经过一系列的测试后我们放弃了自由悬浮的方式,继续采用吸附悬浮的方式
对这个执行来说,抓取动作和用交互引擎抓取任何虚拟物体一样容易我们已经让蓝色发射手直接吸附茬远处物体前方的位置上,就只剩下直接抓取这个动作了一旦握住了物体,我们会进入下一个投射空间抓握行为(projective space held behavior)也是这次执行的核心。
一旦你抓取了远处的物体你和物体之间的距离就形成一个投射空间,你实际的触及区域也被重新映射放大了在这个投射空间中,你手部的运动弧线会对应形成发射手的运动弧线
不过,如果你渐渐把手收回你的投射空间范围也会进行动态调整。随着你真实手部囷参考肩部位置的距离缩小为零投射空间也会慢慢缩小成你真实手部的可触及区域。
这样一来随着你的手部慢慢回到离身体最近的位置,投射空间也会缩小至你真实手部的可触及范围此时,你的发射手和你的真实手部融合你就能直接握住该物体。
虽然这种能够动态調整的投射空间抓握行为背后的逻辑听起来非常复杂但在实际操作中,这一动作会让你觉得和伸手一样自然
只要稍加练习,这对延伸臂用起来和双手一样自然而且它还能扩大双手的触及范围。有了延伸臂你可以抛掷物体、接住物体并调换物体位置,同时这些动作會变得趣味十足!
延伸臂就是这么神奇。你只需花几分钟适应动作的激活模式就能切实感受到你的近体空间完全覆盖了整个区域。那些の前够不到的物体你的发射手只要一秒就能够到它。相比之前两种执行方式这一方法能够真正增强你的能力。随着技术发展把身体图式推向极致并为其注入真正的超能力我们有理由期待更多新作品问世。