为什么VR中需要『触觉』和『力反馈』?如何让VR中产生『触觉』和『力反馈』?
触觉力反馈当然是有的!
做过一段时间触觉反馈的设计应用,我也来写点干货吧。
首先为什么需要触觉反馈
为了真实( ・᷄ὢ・᷅ )
而且在某些可预期的应用里面,触觉反馈将会是重要甚至必需的信息,比如精细遥控外科手术,精密仿生义肢,不可描述类娱乐游戏等。
接下来是如何产生触觉反馈
其实对于VR触觉模拟的研究已经有很多了,这里挑一些基础的说一下。另外由于我比较懒所以文中出现的中文术语都是自己任性翻译的,还有未经允许不要转载谢谢。
上来先说下我们组里自己弄得一些有意思的应用吧,基本上用的设备是Phantom Omni,Novint Falcon 3D Touch以及Oculus rift。
这是同组的女生做的一个小project,Phantom可以接自己手指或者电容笔,然后借助手指或者笔在一块电容屏上触摸,可以感受VR中预先设定几种材料的质感,纹理,硬度。
我这种宅男就做了个飞船游戏,画质就不用看了反正我又不是做游戏开发的 - - 重点是操纵飞船中能感受到星际间各种作用力比如陨石的碰撞力,黑洞和大质量行星的引力以及降落过程中大气层内的各种风力等等。
第一人称视角,以后把Oculus部分做好之后玩起来应该还是比较带感的。
图上不是我啊,我看上去有那么宅吗哼。
操纵设备用的是Novint Falcon 3D Touch,正好被这哥们挡住了。。。
他自己做的是一个感应温度和阻力的鼠标,没有拍照,反正就是3D打印了一个鼠标,加了温度和振动配件,然后利用电磁铁模拟阻力大小...相当于全部DIY没有用到现成的触觉反馈设备,这个我服。
好了下面简单说一下触觉反馈这个题目,我就写个小paper好了。
概述
首先稍微解释下触觉和力反馈的概念,相较于听觉或视觉而言,触觉反馈(Haptic Feedback)确实更加复杂,所以导致极其难以高保真的模拟。而触觉本身以及其对应的人类触觉感知系统就是多种不同元素的混合体,简单来说触觉可以分为:
1.动觉(Kinesthetic Perception),如对力和力矩的感受。(感知物体形状,重量,硬度等)
2.触觉(Tactile Perception), 如对振动,温度,切向力等的感受。(感知物体纹理,粗糙度,冷热等)
在生活中我们一个简单的触觉感知往往都同时包含了上述多种信息,想想你牵着女朋友的手是不是软软暖暖轻轻小小毛绒绒五味俱全啊,如果是第一次碰到还会加上微微触电的感觉呢。
这个例子除了虐狗还有一点就是说明我们一般感知到的触觉就是包括了动觉和触觉的,人类自带的几种触觉感受器(如触觉小体Meissner corpuscle, 巴氏小体Pacinian corpuscle,Merkel cell和 Ruffini ending这些我也看不懂的词)也是协同作用的,独立感知某一种特定反馈的情况很少(人体在麻醉的时候可以失去触觉仅剩动觉感知),由此可见在VR中想百分百模拟出人类日常感受到的触觉是很难的,除非黑科技把模拟触觉信号直接连入用户大脑。
现有常用的触觉反馈设备一般也是侧重于对于动觉的反馈。
1触觉反馈设备与系统
1.1触觉反馈设备
现在市场上的触觉反馈设备有很多,这里就不细讲了,贴个图:
Figure1.1
为了反馈出三维空间内力和力矩,至少要求3个自由度的位置反馈和3个自由度的力反馈,比如Novint Falcon 3D Touch,除了自身的操纵杆,也可以外接其它设备:
Source:Novint Falcon
所以说现在游戏工业是第一生产力啊,当然插些别的做其它逼真的模拟也是可以的,自己想象吧。
1.2触觉反馈系统
总的来说一个触觉反馈系统的核心主要是两点:触碰检测(Collision Detection) 和反馈(力)计算(Feedback Computation), 这两步我们放在一个Haptic Rendering里面完成。另外由于触觉反馈的实时性,Haptic Rendering的更新频率要求是很高的,我们一般取1kHz。如果更新频率太低,会导致系统不稳定比如在反馈端用户感受到的是震动而不是正常的受力情况。
话说回来触觉反馈的应用还是得搭配上视觉反馈,否则只能看不能摸或者只能摸不能看,用户玩的也不开心对不对。所以呢加上一个相适应的Visual Rendering,视觉反馈要求的更新频率就可以低多了,一般小于300Hz即可。本身人眼视觉信息也是一帧帧的图片嘛,连续性差一点也感觉不出。
还是上个图吧:
Figure1.2
上图是本地触觉反馈系统的基本结构,但是触觉反馈还有一个很重要的应用是远程操控,比如远程外科手术之类的,这就要求设置remote communication 比如client和server。这里由于时间关系我也不讲了。
队友还等着打守望呢。
2 触碰检测(Collision Detection)
接下来详细讲下触觉反馈的两个核心内容,触碰检测和反馈计算。
触碰检测是触觉反馈的前提,因为如果没有碰到你就不会有触觉反馈(废话)。
如果是简单刚体的话是比较简单进行触碰检测的,比如说在虚拟空间的球体,我们只要知道球心,半径和虚拟感知器的位置就可以知道是否发生了触碰,但如果是结构和曲率稍微复杂一些的物体我们就必须先分解建模了。
2.1 建模:三角划分(Triangular Primitives)
对于虚拟空间中的复杂物体,是否发生触碰是非常难和耗费计算资源的,因此选择合适的建模很重要,否则延迟到想哭。一般我们可以采取多边形或者三角形来分割构建物体的表面,正好拔了四粒智齿,我就拿chai3D里的牙齿来举个例子。
Figure2.1.1
比如说我们想感受这颗牙齿的质感和形状,基本视觉效果是这个样子的,但是为了进行触碰检测,我们需要对其表面建模:
Figure2.1.2
看不清楚吗,让我们近距离看一下这颗牙:
Figure2.1.3
通过将牙齿表面划分成一个个三角形(尤其是沟槽处这种复杂的地方),我们可以检测出虚拟仪器与牙齿的触碰位置(对应三角形区域)以及触碰程度(深度),可见三角形越小,划分越细,模拟效果越好,耗费计算资源越大。另外,为了模拟牙齿的质感(粗糙度),我们还在每一块三角形上加上其force normal vector:
(这样水平方向的力也能考虑进去----滑过牙齿表面的阻力)
Figure2.1.4
这样对一颗牙齿质感及形状进行触觉反馈的前期工作就完成了~
2.2建模:层次划分法(Hierarchical Bounding Representation)
适用于更复杂的物体结构。
好累啊。
先空着。
3 力反馈计算 Feedback Force Computation
触觉反馈中温度和振动这样的信息还是能比较直观地模拟出来的,接下来介绍几种现实中常见力的反馈仿真模型和算法,基本上可以满足虚拟空间中我们想要的物体的触觉反馈的属性了。
3.1形状感知
首先触觉反馈的基本内容之一就是通过触觉你能感受到虚拟空间中物体的形状,比如说借助设备你可以感受一个篮球的大小或者一个方块的形状,棱角等信息。
还有一个概念需要先说明一下就是HIP 和IHIP,前者是Haptic Interaction Point, 对应虚拟空间中触觉感知设备的实际位置,而后者是Ideal Haptic Interaction Point,对应触觉感知设备视觉上的位置。由此我们可以确定触碰的深度(depth),这往往用于判定反馈力的大小和方向。
VR中最简单的刚体模型就是球体了,假设在VR中我们用一个质点去感受球体,那么不管你在球体表面的哪个点发生碰触,反馈到的力的方向为球心到触碰点的连线,我们只需简单定义力的标量大小即可。
Figure3.1.1
如图,IHIP始终停留在球表面,正如我们不应穿透一个刚体。实际位置HIP可以在球的内部,HIP与IHIP连线即为穿透深度。最简单的情形下设置力的大小为刚体系数乘以穿透深度,如果系数比较大,触觉上我们会感觉这是一个硬硬的球,如果系数较小则是一个软蛋。
同样地我们可以仿真一个有棱有角的方块:
Figure3.1.2
3.2形状感知改进:God-object based haptic rendering
如果将上述简单模型应用在更加复杂的物件或者诸如薄板这样的特殊物体上,由于没有储存接触历史(contact history),仿真效果有可能出问题,比如发生移动HIP的时候发现感知力的方向有了突变,或者触摸平板的时候发生了穿透的感觉,因此可以用God-Object或者Proxy算法来对上述方法进行改进。
写的好累啊。
感觉还有好多讲不完了
先空着吧。
3.3引力,斥力及重力仿真
这里也先空着 往下都是空着的目录别翻了
哎你点个赞再走啊朋友
3.4摩擦力仿真及摩擦圆锥 Friction / Friction Cone Algorithm
空着
3.5渐变力 Force Shading
空着
3.6 黏度仿真 Viscosity
空着
3.7 感知及传输数据优化:死区原理 Deadband Principal
还是空着
参考列表 Reference
- Rahul Chaudhari. Computational Haptics Laboratory. Institute for Media Technology, Technishe Universität München.
- Diego C. Ruspini, Krasimir Kolarov and Oussama Khatib. The Haptic Display of Complex Graphical Environments. Interval Research Corporation. Stanford University.
- Sean Quinlan. Efficient Distance Computation between Non-Convex Objects. Robotics Laboratory. Stanford University
- W.S.Harwin and N.Melder. Improved Haptic Rendering for Multi-Finger Manipulation Using Friction Cone based God-Objects. Department of Cybernetics, University of Reading.
- Cagatay Basdogan and Mandayam A.Srinivasan. Haptic Rendering in Virtual Environments. Jet Propulsion Laboratory, California Institute of Technology.
- C.B.Zilles and J.K.Slisbury. A Constraint-based God-Object Method for Haptic Display. Artificial Intelligence Laboratory, Massachusetts Institute of Technology.