VR中对物体重量的感知技术
扫描二维码
随时随地手机看文章
对于现有的虚拟现实动作控制器,如果没有方法可以产生阻力反馈的话,用户将如何能够感受到虚拟物体的不同重量呢? 为此,创意公司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行业内还没有形成实现这种动作的“正确”标准。所以,我们尝试了几个不同的想法,并将它们分成两类:直接连接(直接提起,形成一个固定的节点);宽松连接(调整速度,或者使用引力把物体牵引至控制器)。不同的连接种类决定了我们模拟重量的方法。
直接连接
对于直接连接,物体会完全匹配控制器的运动。如果控制器移动太快,物体会因为重量问题而跟不上,然后两者的连接会中断,物体就会掉在地上。
宽松连接
对于宽松连接,不同重量的物体的引力强度也会不同。更轻的物体反应更快,更接近与直接连接的感觉。更重的物体的移动会滞后于控制器,而且需要更多的“力气”才能提起来。我们原先并不期待这种效果会很好——因为物体不能完全跟踪控制器的动作,这是虚拟现实的一个大忌。但是最后我们发现它的效果竟然出奇地真实。我们从中得出了两个心得:
我们在提起物体的时候仍然会显示控制器(保持对物体的完全追踪),避免用户感觉自己失去了对环境的直接控制。
当控制器接触到物体的时候,我们就将两者锁定在一起,形成一个直接连接。我们加入这个机制的原因是,我们发现重量感是在“捡起”动作发生的时候最有用,随后它就只能起到分散用户注意力的作用。