vr|ar|虚拟现实
对于现有的虚拟现实动作控制器,如果没有方法可以产生阻力反馈的话,用户将如何能够感受到虚拟物体的不同重量呢? 为此,创意公司B-Reel探索了几个方法,并对外公开了他们的实验成果,以供其他人共同探讨。
本文由B-Reel撰写,B-Reel是一家创意公司,于1999年在瑞典首都斯德哥尔摩成立。现在该公司拥有170多名设计师、策划、开发者和策略分析师,在全球范围内有6个办事处。对技术和创意的热爱是这家公司不断探索未知领域的动力。该公司力求扁平、迅速和有趣的创作流程,确保从创意到制作的整体性。B-Reel的业务范围包括策略制定、理念构思、设计、编程、动画制作、导演和问题解决。
在过去一年中,从内部项目,到与谷歌I/O大会的Google Dayream,我们一直热衷于进行虚拟现实相关的实验。我们坚定不移地相信,虚拟现实的未来很光明,处处充满着机遇。
在以往的VR尝试中,我们通过制作一些独立的体验,进一步了解到了这种媒介的制作流程和具体要求。现在,我们希望更加深入地发掘提升虚拟现实体验的基本交互原则。Daydream团队采用的实用性虚拟现实平台对我们产生了很大的启发,而这种平台的实现则需要上面提到的交互。于是,我们决定先对某种特定的交互进行单独的探索。
视觉交互模型 vs 物理交互模型
目前,大部分实用性VR界面都是通过漂浮在半空的简单2D平面固定的。但如果是VR游戏的话,它的界面显然会有更少的视觉交互,更多的物理交互。以《Cosmic Trip》为例,这款游戏巧妙地采用了物理按钮来作为菜单导航;而《Job Simulator》则几乎完全摒弃了指向—点击这种传统的交互范式。
Cosmic Trip (左) Job Simulator (右)
我们以此前提进行了头脑风暴,然后得出了一个非常吸引人的想法——我们可以模拟出与VR物体交互时的重量感。当用户捡起物体的时候,我们能否通过调整用户的动作速度让其感觉到物体的重量区别呢?更重的物体捡起来会更慢,而更轻的物体则可以用正常的速度捡起来。虽然这不算是什么创新,或许也不能直接应用在实用性的场景中,但我们觉得这个想法是非常值得探索的。
我们希望可以想出一个方法,可以应用在所有使用动作控制器的平台上:从Daydream的仿Wii控制器,到Vive和Rift这种高级的房间追踪控制器。于是,我们决定先为最先进的平台进行设计(在Oculus Touch推出之前,我们先以Vive为基准),然后为Daydream探索出简化的方式,最后是为Gear VR和Cardboard设计出基于注视点的控制。
VR动作控制器
至于开发软件,我们不知道该选择熟悉的Unity引擎,还是渲染能力更强大的Unreal引擎。目前我们还是选择了Unity,希望在未来可以更多地尝试Unreal引擎。
确立目标
我们之前的虚拟现实项目都做得比较随意,所以它们并没有什么重复利用的价值。所以这一次我们准备为自己定下更高的目标。下面是我们至少要达到的成功标准:
建立Unity引擎的协作流程,同时让更多团队成员熟悉这个流程。
制作一个内部使用的基本“样板”环境,以便我们未来可以快速建立和进行VR实验
研究过程
决定好方向和目标之后,我们组建起了一支团队:3位3D/动作艺术家、2位设计师、1位创意技术员。我们使用了Git(YiViAn注:Git是一款免费、开源的分布式版本控制系统)作为不同设备之间交流和分享资源的工具。各个场景每次可由一位成员进行查看与编辑,这时其他人员则负责制作用于主要场景的预制件(prefab)。虽然这种方式比较适合我们这样的小型团队,不过我们也在积极探索适合大型团队和项目进行高效协作的方法。
第一步:成为捡东西的艺术家
首先我们需要明确认识捡起和移动物品的基本物理学原理,否则实现重量反馈将无从谈起。而我们很快便发现,这些概念其实都是相通的。跟其他很多东西一样,VR行业内还没有形成实现这种动作的“正确”标准。所以,我们尝试了几个不同的想法,并将它们分成两类:直接连接(直接提起,形成一个固定的节点);宽松连接(调整速度,或者使用引力把物体牵引至控制器)。不同的连接种类决定了我们模拟重量的方法。
直接连接
对于直接连接,物体会完全匹配控制器的运动。如果控制器移动太快,物体会因为重量问题而跟不上,然后两者的连接会中断,物体就会掉在地上。
宽松连接
对于宽松连接,不同重量的物体的引力强度也会不同。更轻的物体反应更快,更接近与直接连接的感觉。更重的物体的移动会滞后于控制器,而且需要更多的“力气”才能提起来。我们原先并不期待这种效果会很好——因为物体不能完全跟踪控制器的动作,这是虚拟现实的一个大忌。但是最后我们发现它的效果竟然出奇地真实。我们从中得出了两个心得:
我们在提起物体的时候仍然会显示控制器(保持对物体的完全追踪),避免用户感觉自己失去了对环境的直接控制。
当控制器接触到物体的时候,我们就将两者锁定在一起,形成一个直接连接。我们加入这个机制的原因是,我们发现重量感是在“捡起”动作发生的时候最有用,随后它就只能起到分散用户注意力的作用。
第二步:探索其他感官提示
除了捡起和抓取这两个机制外,我们觉得也有必要研究一下其他可以帮助反映物体重量的反馈形式。重量感可以通过两种形式体现:视觉反馈和触觉反馈。当控制器接近特定物体的张力临界值时,我们试图利用这两种反馈来加强用户所能感受到的“拉扯感”。
视觉反馈取决于连接的种类。对于直接连接,我们尝试了多种可以提示控制器速度的指示器。我们发现越简单的界面的效果会越好,于是我们决定使用基本的红绿指示器,并将其连接在控制器上,随着物体的速度逐渐到达临界值,指示器的颜色也会从绿色变成红色。在宽松连接中,控制器和物体之间就像是被一根“橡皮筋”连接着,所以指示器的颜色将能更加形象地反映出张力的变化。
指示器
在触觉反馈方面,我们将视觉指示器的逻辑应用在了控制器的振动上。当用户接近张力的临界值时,控制器的振动强度会加大。这种方式虽然简单,但很有效。
第三步:测试、调整、再测试
在如此多的影响因素之下,我们似乎有无数个需要测试的组合。所以为了更好地测试和比较不同的组合,我们开始在同一个环境中使用不同的配置,遵循先测试,再调整,然后在测试的原则。
最终,我们根据“捡起”这个动作,选定了一些最能反映出各种因素的影响的方法。这些方法之间的最要区别甚至还不是物理学规则的不同——它们主要体现在物理交互的视觉和触觉反馈。
直接提起物体连接到控制器,但通过静态碰撞器来固定。这是捡起东西最简单的形式,没有任何的重量模拟。
带触觉反馈的固定节点连接到控制器的物体在碰撞的时候会改变位置。如果控制器移动得太快,物体会由于自身的重力而掉落。在接近临界速度的过程中,控制器的振动会越来越强烈。
带视觉反馈的固定节点连接到控制器的物体在碰撞的时候会改变位置。如果控制器移动得太快,物体会由于自身的重力而掉落。在控制器接近临界速度的过程中,视觉指示器的颜色和读数会发生变化。
同时带视觉反馈和触觉反馈的固定节点连接到控制器的物体在碰撞的时候会改变位置。如果控制器移动得太快,物体会由于自身的重力而掉落。在控制器接近临界速度的过程中,视觉指示器的颜色和读数会发生变化,控制器的振动会越来越强烈。
张力物体通过张力牵引至控制器,当物体接近控制器的时候速度会增加。
速率(张力太大时连接会中断)物体越接近控制器,它的速度会越快。如果控制器与物体之间的张力超过临界值,物体会由于自身的重量而掉落。
速率(连接永远不会断开)物体越接近控制器,它的速度会越快,无论张力大小如何,物体永远都不会掉落。
此时,我们想听取一些来自团队外部的意见,看看什么因素是有帮助的,起反作用的,或者没必要的。
我们制作了两个用于用户测试的场景。我们可以看到下面两张图片,用户四周都设置了7个架子。在第一个场景中,每个架子前面都有一个物体,测试者可以采用不同的方法捡起这些物体,然后直接比较它们的感受。在他们逐一尝试这些方法的时候,我们会询问一系列的问题,如:哪一个物体感觉最重?如果你需要捡起大量物体,你最喜欢使用哪一个方法?哪一个方法的感觉最自然?
第二个场景中,我们在每一个架子前加入了多个轻重不一的物体。这样用户就可以了解到哪一种方法可以更好地表现出各个物体之间的重量差异,然后在相同的环境中比较其他方法的区别。
心得总结
虽然我们可以从用户测试中发现一些比较明显的倾向,但是没有得出一个普遍认可的最佳配置。但这也是我们意料之中的结果,对于这些实验,我们并不认为可以找到一个“正确”的答案。但从用户的回复中,我们还是总结出许多经验。
当连接可以断开时,宽松连接的效果最好
我们的测试者表示,这种机制能够最自然地传达重量感。当物体由于张力的关系不会断开连接时,用户会感觉物体像是漂浮在半空一样,不会对用户的动作产生反馈。断开这个连接不仅可以让物体掉落到地上,而且可以促使用户有意识地根据物体的感知“重量”来调整自己的动作。
除非对交互很重要,否则重量只会令人感到厌烦
我们的测试者很享受在宽松连接下的交互,许多人都认为这种机制非常有趣好玩。在偶尔使用的情况下,如果要吸引用户关注某个物品的重量,我们认为宽松连接会是一个不错的机制,值得进一步研究。
不过,当我们询问测试者更倾向于使用哪种方法来捡起多个物体时,他们不约而同地选择了最简单的直接连接。因为在效率优先的时候,人们就不想被物体的重量拖慢自己的操作速度。
这能为我们以后的项目带来许多启发。当需要精确模拟现实的时候,我们可能会直接避免让用户捡起体积会重量很大的物体,或者也可以让他们这样做。毕竟,虚拟现实最令人兴奋的地方是,它可以让人看到和做到现实生活中不可能的事情。
越多反馈越好,不要忘记声音
我们的测试者都希望得到更多的反馈,但有一个例外:在能够理解视觉反馈和动作之间的联系的前提下,加入视觉和触觉反馈会有不错的效果,否则视觉反馈只会起到分散注意力的效果。
再详细一点来说,我们可以想象一下声音可以如何加强环境的物理性质,也就是说如何让环境变得更加真实,更有沉浸感。我们在决定为测试加入声音的时候并没有考虑太多,但事实证明声音对用户的重量感知有很大的影响。重物掉落在地面所发出的声音,或者物体之间互相摩擦的声音都会加强用户对重量区别的感知。
在虚拟现实中,“基本”的交互远比想象中的复杂
与基于屏幕的传统UX(用户体验)相比,基于物理学原理的交互模型的设计会复杂得多,因为有许多因素都会影响到最终的交互效果。你在设计交互发生的框架时肯定会发生一些无法控制的问题,而交互本身的设计就不会出现这种情况。游戏行业在这个问题的处理上已经有多年的经验,而我们才刚刚开始赶上来。
最后的一些想法
在这个过程当中,我们得到了很多关于重量模拟交互的宝贵经验。我们知道时间总是有限的,而且要把每一个交互的所有元素都分解出来是一项不可能完成的任务。不过,识别和解析重复的交互不仅可以优化它们,也能让我们更好地处理以后肯定会遇到的其他特定交互。你会发现一些在理论上可行的方法却不能应用于实践。
我们还想强调这些实验的次要目标也是非常重要的(对我们来说,这加深了我们对Unity的熟悉,并提供了一个基本的模板环境)。设定具体、可实现的目标是很有意义的。
那我们的建议是什么呢?我们发现这一切其实都是取决于体验本身。在许多情况下,我们为模拟重量而加入的限制都是不受欢迎的,因为它们降低了用户的操作效率,并迫使他们将注意力集中在交互本身,而不是他们正在进行的动作。所以,除非你有理由把用户的注意力集中在物体的重量上,否则最好还是使用更简单的直接连接。
话虽如此,我们仍然认为宽松连接(在张力过大时断开连接)是有一定前景的。这背后还有很多值得斟酌和探讨的地方,同时还要考虑很多其他的影响因素:不规则的物体形状,物体移动的起始位置,还有是否使用双手捡起物体。这只是开始而已,我们非常期待未来更多的配置方法。
全部0条评论
快来发表一下你的评论吧 !