游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3900|回复: 0

VR开发中的碰撞处理:“触觉”与“力反馈”的产生

[复制链接]

1万

主题

1万

帖子

3万

积分

论坛元老

Rank: 8Rank: 8

积分
36572
发表于 2016-10-27 14:45:13 | 显示全部楼层 |阅读模式
QQ截图20161027143141.png

  文/胡痴儿2.0

  触觉和力反馈都是现实中很重要的信息,但是目前因为技术限制所以没有,不过如果没有力反馈,就会给我们的交互带来一系列的问题:

  1.反作用力和摩擦力

  2.重量

  3.指尖对物体的摩擦,手指对物体的位置方向调整

  4.惯性

  如果没有触觉,那就缺少了实在的感觉,你感觉自己的手是『麻木的』。

  而触摸会让一个物体感觉很厚实。

作者676.jpg

  1.反作用力和摩擦力

  在现实中,我们捡起一个物体,会感到它的手感。

  我们捏着它,会感到它的反作用力。

  这时我们就会知道:『哦,原来这个物体被我握在手里。』

  你慢慢松手,变会感到物体对你反作用力越小。

  而当松手到一定程度,物体便会慢慢往下滑……

  所以,在现实中,你即使闭上眼睛也能将一个物体放下。

  因为你松手时感到了放下物体时的反作用力越来越小直至松开的这样一个变化过程。

作者1248.jpg

  而这种变化在VR中是没有的,在VR中只有0和1——

  要么抓住,要么松开,没有一个触觉告诉你这个东西从手上滑落了。

  更严重的是,在VR中,根本就没有这种作用力。

  你捡起一个东西,你的手指穿透了它,你感受不到它的力反馈,认知系统便开始质疑它的存在了。

作者1758.jpg

  2.重量

  这是我用oculus touch玩的一个游戏《Killing Floor》——桌上插了一把刀,你伸手过去

作者2250.jpg

  当你中指无名指按下hand trigger,虚拟的刀就稳稳地被『抓』在你手里——纹丝不动。

作者2647.jpg

  而你在现实中如果抓着一把刀,应该可以用手指转动它吧?

  更可怕的是你感受不到它的重量,就像是掂着一块很轻很轻的泡沫板。

作者3123.jpg

  你在现实中抓住一根棍子,理论上你可以抓到棍子的任何一端,可以转动棍子,更快月松手让棍子滑到手上的任何位置……但是在VR中这一切都做不到。

作者3562.jpg

  在现实中,我们捡起一个东西的习惯是——

  伸手去抓一个东西,然后再感到物体对手的反作用力,再拿起来物体握在手里的重力,于是你知道『我抓起了这个物体』。

  而如果在VR中,你看见一个物体,伸手去『抓』,结果一抓抓了个空。

  或者你一抓,想把它抓了放到某个位置,你本来用了很大的力想把它拿起来,结果它不费吹灰之力,你一抓之下远远甩出了它本来的位置。

作者4082.jpg

  3.指尖对物体的摩擦,手指对物体的位置方向调整

  在VR中,你无法用指尖抓起某个东西。

  因为这里的hand trigger是用到了中指无名指,甚至整个手的力量。

作者4513.jpg

  你摩擦指尖,摩擦被你指尖抓住的东西,你能感到它的纹理和触感。而在VR中,你感到被你抓着的东西是虚无的。

作者4916.jpg

  亦无法用指尖转动发条这样细小的部件。

作者5286.jpg

  在现实中我打乒乓球的时候喜欢用发球的左手微微摩擦乒乓球,这样它打出去时会微微旋转,但是在VR中我无法用指尖摸到乒乓球,更无法旋转它。

作者5705.jpg

  4.惯性

  用oculus touch抓东西是中指和无名指按下hand trigger。

  (在游戏《Ripcoil》中)

作者6172.jpg

  当你抓下时,整个圆盘呈现在你手里。

作者6541.jpg

  在现实中,我们扔出一个物体,会感到相应的重量,你是扔一个轻飘飘的垒球?还是一个沉重的铅球,你的手会给它一个不同的重量。

  你要将一个球扔到不同远近的地方,扔远点就用很大的力甩出去,扔在很近的一个垃圾桶里就得小心地控制自己的力道……这就是惯性。

作者7014.jpg

  但是在VR中,就麻烦了,如果给你一个很重的虚拟的铅球,你把它抓起来,轻飘飘似虚无,这时让你扔,你完全不知道把它扔到什么位置。

  『投掷』这个动作本身也有很多让用户不好把握的地方,比如你扔一个东西其实需要在手腕加速到最快时松手,但是这个动作在玩oculus touch的时候需要在甩出去的时候松开中指和无名指按着的hand trigger,因为手上的虚拟物体没有重量也没有惯性,所以用户很难把握扔出去的力道,结果停在半空,一松手,虚拟物体直直地掉到了地上。

作者7627.jpg

  振动反馈

  目前的controller,以oculus touch为代表,都是采用震动(vibration)的方式产生触觉,内置一个线性加速度计(linear actuator)。

  你可以设置:0.0f、0.5f、1.0f 频率(frequency)和0.0f 到1.0f的振幅(amplitude)以区分『不同的触觉』。

  但是振动的时间不能太长,一是时间长了用户的手对振动麻木了,二是时间长了影响controller 的位置跟踪。

作者8229.jpg

  目前,是采用最简单的振动,在最关键的操作上完成交互,具体分为两种haptic:

  当你在VR中,打碎一个玻璃杯、捡起一个甜甜圈、拍了一下桌子(与全息的刚体碰撞),或者手上的全息物体给你提示,这时你手上的controller都会振动以脉动触觉(pulse haptic)。

  还有一种是基于距离的振动(distance based haptic),当你拉开抽屉或者旋转门把手的时候触发。

作者8803.jpg

  最简单的就是颠乒乓球,你能感到乒乓球每次砸到球拍上时的那种震动。

作者9246.jpg

  当然,除了『手』,身体上也需要触觉和力反馈,最好的做法是将现实中的姿势和VR中的姿势相匹配,下面是我考虑的四种力反馈:
  • 屁股坐在椅上
  • 背靠椅背
  • 脚踩地面
  • 手放在桌上

  而这四种力反馈就能在VR中找到对应关系,所以就很舒服。

作者9712.jpg

  相关阅读:深度解读VR游戏开发:导航、avatar和视觉设计

著作权归作者所有,转载请联系作者获得授权。原文地址
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-12-28 23:47

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表