关于VR开发中的穿墙问题随想

  在VR开发中,用户将以第一人称的视角进入虚拟世界,即用户同时身处两个坐标系:1. 现实世界坐标系(如房间的坐标系),用户的身体处于这个坐标系 2. VR世界坐标系,用户的感官处于这个坐标系,即用户以为我处于这里。blog

  而如何同步这两个坐标系HTC VIVE已经帮咱们解决了。由HTC VIVE开发的应用,在应用刚初始运行阶段,将用户所处的现实世界的位置和VR世界里的位置进行一次匹配,而后以此为基准来同步二者的关系,将现实中的移动经过空间定位映射到VR空间里的移动。游戏

  可是这也产生了一个问题。在传统的二维屏幕的游戏中,一旦游戏角色走到墙体,能够用碰撞体挡住,不让其继续穿墙运动。而VR应用却不能阻挡用户的穿墙行动,缘由是VR空间里的移动是根据人在现实世界里的走动来同步,只要个人房间够大,我就能够一直朝着一个方向走下去,而VR世界里的摄像机也将一直朝一个方向运动,这样势不可免将形成穿墙等问题,这并非咱们想要的结果。开发

 

那么要如何解决这个问题呢?同步

这里有两个想法:用户体验

1、软硬件结合。现实也造一堵和虚拟世界对应的墙,但这基本不符合实际(Haha~),Pass掉。硬件

2、强行阻止VR虚拟角色继续前行。方法

而第二种方法又有两种解决方式:im

1. 位移补偿: 虚拟角色在碰撞到墙时还继续往前走时控制其进行反向位移补偿或者将整个场景都往其运动方向进行移动补偿。项目

2. 碰撞体。和传统的游戏同样采用碰撞体阻止其继续前行,但碰撞体的强行插入将可能形成抖动。img

这两个办法其实就是强行让两个世界坐标的位移映射失效。虽然能够达到不穿墙的效果,可是又会带来新的问题。

1. 用户的感觉:什么鬼?为何我在原地踏步?周围的东西为何有种轻飘飘的感受?看来我必定是要升天了~

2. 两个世界坐标系的原点产生偏移。

那么为何会产生偏移呢?

下面用一张图来解释:

  这个问题在通常状况下可能不大,但当处于一个较小的房间而又频繁撞墙时,因为偏差的积累,问题就产生了。我人已经在墙边了,须要交互的物体却还在离墙更远的地方,这可叫我如何是好?

 

综上:如何不让用户穿墙又能够规避缺陷:

1. 在有穿墙限制的同时提供手柄的瞬移功能,就不存在坐标系偏移形成的没法交互的后果。但仍然难以解决用户原地踏步感受不良的问题。

2. 没有穿墙限制,在接近墙继续向前走时,经过UI或其余方式对用户进行提示:禁止继续往前走。在墙外布置一些空的场景,若用户执意要穿墙,走出去看不到什么新鲜的东西,也不会再尝试了,应该不会有人这么无聊吧,haha~

其实我是比较倾向使用第二种的,毕竟用户体验更天然、连贯性更好!具体采用哪一种就要根据实际项目需求了。

 

  换个思路想,阻止不了穿墙也未必是件坏事,由于咱们能够利用它来放置一些彩蛋,好比在一个没法打开的木桶里放置一些意外的惊喜,说不定用户感受会更好~若是我把头探出墙外忽然看到一个鬼脸对我说:"Catch you!"”那我必定会很“惊喜”的。

相关文章
相关标签/搜索