APP下载

可溶性液体的真实感触觉交互研究

2018-08-17,

计算机工程 2018年8期
关键词:触觉摩擦力代理

马 ,

(天津大学 计算机科学与技术学院,天津 300350)

0 概述

随着虚拟现实(Virtual Reality,VR)技术的发展,触觉交互受到了广泛的关注。在触觉交互中,实时的触觉力计算,也称为触觉渲染,是一个开放并且活跃的领域,如图像处理[1]、虚拟手术[2]、场景模拟[3]等。其中可溶性液体的触觉交互一直是研究的热点。例如,在VR游戏中,当用户扮演魔法师将各类药剂混合在一起时,如果能将药剂混合时的触觉力实时地反馈给用户,那么将会很大程度地提高VR游戏的真实感,从而提升用户体验。

在触觉交互中,常常通过代理(代理是与液体交互的物体,通过虚拟耦合机制与触觉设备相耦合)与可溶性液体进行交互。目前,可溶性液体的触觉渲染方法主要分为2类。一类是网格方法[4],使用网格中液体所占的权重表示混合液体分布,通过液体权重的变化计算触觉力。这种方法虽然可以实现可溶性液体触觉力的计算,但是精确度受网格大小影响。如果要求高精度的模拟,则需要很精细的网格,从而导致算法效率的下降。另一类方法是光滑粒子流体动力学(Smoothed Particle Hydrodynamics,SPH)方法[5],该方法使用混合粒子模拟可溶性液体。混合粒子是一种混合模型,混合粒子中体积分数的变化表示可溶性液体中液体分布的变化。通过计算代理的粘滞力和压力,求得最终的触觉力。这种方法较好地模拟了可溶性液体触觉交互,但仍然存在不稳定和不真实的现象。文献[5]通过修改核函数,使得触觉力不稳定的问题得到了一定的改善,但在代理粒子周围混合粒子不足的情况下,触觉力不稳定的现象并没有得到很好的解决。另外,这种方法在真实性上仍有不足。在现实中,代理与可溶性液体交互的触觉力不仅仅包含粘滞力和压力,还包含摩擦力等。不同的液体对代理摩擦力的不同会导致触觉力也不同,所以,摩擦力在可溶性液体的触觉交互中是一个重要的分力。为了解决以上方法中不真实和不稳定的问题,需要提出新的方法模拟可溶性液体的触觉交互。

由于SPH方法在刻画细节方面上优于网格方法,因此本文提出一种改进的SPH方法,该方法适用于可溶性液体的触觉交互。在文献[6]计算粘滞力方法的启发下,本文运用基于速度的方法计算粘滞力,以解决上述方法不稳定的问题。另外,为提升触觉力的真实性,在触觉计算中添加浮力和摩擦力的计算。

1 相关工作

1.1 可溶性液体模拟

在计算机图形学领域中,可溶性液体的模拟在近几年来受到广泛的关注。文献[7]将体积分数引入计算机图形学领域,用来表示各相的空间分布。随后,文献[8]提出基于网格的方法模拟可溶性液体,文献[9-10]基于SPH方法模拟可溶性液体。这些方法假定液体之间的扩散效应都是由浓度差引起的。文献[11-12]通过格子波尔兹曼方法(LBM)模拟可溶性液体,文献[13]通过双相流模型模拟喷水场景。以上方法均取得了良好的效果,但由于效率等原因不能很好地运用在可溶性液体的触觉交互模拟中。而文献[14]使用混合粒子模拟可溶性液体,提高了模拟的效率。为了高效率地模拟可溶性液体的触觉交互,本文使用文献[14]的方法模拟可溶性液体。

1.2 触觉渲染

文献[15]使用欧拉方法模拟液体的触觉交互,但该方法精确度较低,不适于精确的触觉交互模拟。文献[3,16]采用SPH方法实现固-液之间的触觉交互,该方法使用统一建模,将固体和液体同时使用SPH方法建模,它们的触觉力是通过固体粒子与液体粒子之间的相互作用计算而得。但该方法在可溶性液体的触觉交互中,不能精确处理液体溶合过程中粘度的变化,导致触觉力计算失真。文献[17]同时使用SPH方法和欧拉方法来模拟触觉交互,其中,液体通过SPH方法建模,固体使用欧拉方法建模,该方法结合了两者的优点,提高了触觉交互的效率。然而,当模拟较为复杂的固体时,触觉交互的效率会降低。

目前可溶性液体触觉交互的方法较少。文献[4]使用网格的方法模拟可溶性液体的触觉交互。触觉力通过Navier-Stokes方程实现,并且保证了液体的不可压缩性。该方法通过各种液体在网格中所占的比例,加权计算触觉力。但是,该方法精确度受到网格大小的影响,网格过大会降低精确度,网格过小效率会降低。文献[5]提出了使用SPH方法模拟可溶性液体的触觉交互,在一定程度上提高了精确度。触觉力通过粒子之间的相互作用而产生,这种方法在液体混合过程中会出现不稳定的现象。而且,由于影响可溶性液体触觉交互的因素有很多,该方法只考虑了粘滞力和压力的计算,忽略了其他分力的计算,导致触觉力的真实度不高。为了解决上述问题,本文提出一种稳定的方法模拟可溶性液体触觉交互,并且在一定程度上提高了触觉力的真实性。

2 本文方法流程

本文的方法流程如图1所示。首先,用户通过代理向可溶性液体输入交互力FInteraction。根据用户的输入,使用混合粒子模拟可溶性液体。图1中的混合粒子由3种颜色构成,分别代表3种不同的液体,并且不同的混合粒子中每种液体的体积分数各不相同。在模拟的过程中,每一个混合粒子的速度v、位置x等相关特征均可被获取。根据这些相关特征,计算每一个代理粒子的触觉力,这些触觉力包括压力、摩擦力、浮力和粘滞力。最后,根据整合模型,将每一个代理粒子的触觉力整合成最终的触觉力,通过触觉设备传递给用户。

图1 本文方法流程

3 可溶性液体和代理的模拟

本节将简要介绍有关可溶性液体模拟和代理模拟的内容。

3.1 可溶性液体模拟

可溶性液体的触觉交互要求模拟可溶性液体的算法有很高的效率,所以需要一种高效的方法模拟可溶性液体。本文基于文献[14]的方法使用混合粒子和体积分数模拟可溶性液体。这种方法可以很好地处理可溶性液体中各种液体的分布,从而在一定程度上提高可溶性液体触觉交互的效率。

混合粒子是一种混合模型,用于模拟可溶性液体中各液体之间的分布。在每次计算过程中,混合粒子中的各液体应该满足连续方程和动量方程。连续方程和动量方程分别为:

(1)

(2)

其中,ρk为液体k的密度,αk为液体k的体积分数,uk为液体k的速度,pk为液体k的压力,g为外力,主要由重力和用户通过设备输入的交互力组成,Tk为粘性应力张量,Fk为相间动量源,这是与单相液体模拟主要的不同。这些方程源自于文献[13]。恒定体积的混合粒子公式为:

(3)

其中,ρm为混合粒子的密度,um为混合粒子的速度,pm为混合粒子的压力,Tm为混合粒子的粘性应力张量,Tdm为各液体之间转移的动量,umk为漂移速度,表示液体k相对于混合粒子的速度。本文方法实现了可溶性液体的触觉交互,用户会通过设备输入的交互力FInteraction改变可溶性液体的状态,从而达到交互的目的。

式(3)、式(4)是可溶性液体的控制方程。其中,每一种液体k的空间分布完全由其体积分数αk表示,因此,不需要计算不同液体之间的分界。更详细的描述请参见文献[14]。

3.2 代理模拟

本文使用固体在虚拟环境中进行交互,所以,该固体就是本文的代理(如图1中的白色小球),影响触觉交互的重要因素之一是效率。为了提高触觉交互的效率,需要使用高效率的方法模拟代理。本文使用统一的粒子模型[18]模拟代理。

使用SPH方法可以将代理准确地划分为一定数量的代理粒子。这种方法最大的优点在于可以模拟任意形状的代理,不受代理形状的约束。而且在模拟过程中,触觉力的计算可以转换成不同粒子之间作用力的计算。并且这种方法可以通过相邻搜索的策略避免额外的碰撞检测,从而提高效率。

在模拟过程中,代理具有恒定的密度,在整个模拟过程中是不变的。当计算粒子密度时,本文只计算混合粒子的密度,省略代理粒子密度的计算,进一步提高了可溶性液体触觉交互的效率。

4 触觉渲染

本节将介绍可溶性液体的触觉渲染,其中包括触觉力的计算和触觉力的整合2个部分。首先通过粒子之间的作用力计算每一个代理粒子受到的触觉力。然后通过整合模型,将每一个代理粒子的触觉力整合成最终的触觉力,通过触觉设备反馈给用户。

4.1 触觉力的计算

传统方法[5]可以很好地实现可溶性液体触觉力的计算,然而,使用该方法计算触觉力时会出现不稳定的现象。文献[5]的触觉力的计算只包括压力和粘滞力,实际上,影响可溶性液体的触觉力的因素有很多,如摩擦、浮力等。为了进一步提升稳定性和真实性,本文提出一种新的计算触觉力的方法,该方法通过速度变化计算粘滞力,并且在触觉力的计算过程中添加摩擦力和浮力的计算。

在模拟可溶性液体的触觉交互过程中,当混合粒子进入代理粒子的核心半径区域时会产生触觉力;当混合粒子离开代理粒子的核心半径区域时,触觉力将消失,也就是说触觉力产生的原因是由于混合粒子进入了代理粒子的核半径区域。触觉力产生的原理如图2所示,代理粒子核半径区域内的混合粒子对代理粒子具有触觉力,核半径区域外的混合粒子对代理粒子没有触觉力。

图2 触觉力产生原理

对于每个代理粒子,计算触觉力的方法可以描述如下:

fproxy(x)=fpre(x)+ffri(x)+fbuo(x)+fvis(x)

(5)

其中,fbuo(x)为浮力,fpre(x)为压力,ffri(x)、fvis(x)分别为摩擦力和粘滞力。对于每个代理粒子x,浮力计算如下:

其中,ρi为代理粒子x附近的混合粒子xi的密度,h为核半径,核半径范围以外的混合粒子将不会被计算进触觉力,di为深度,W是核函数。压力的计算方法如下:

(7)

其中,Vi和V分别为混合粒子xi和代理粒子x的体积。Pi计算如下:

Pi=k(ρi-ρ0)

(8)

其中,ρ0是混合粒子的密度,k是一个常数。

在可溶性液体的触觉交互中,由于混合粒子的特征不是恒定的,因此不同的混合粒子与代理粒子之间的摩擦力是不同的,如图3所示。

图3 代理粒子与混合粒子之间摩擦力的示意图

因此,摩擦力在可溶性液体的触觉交互中是一个重要的分力,在计算过程中不可以忽略。为提高模拟真实性,本文在触觉力的计算中增加摩擦力的计算。摩擦力计算公式如下:

(9)

其中,mi为混合粒子的质量,m为代理粒子的质量。Ki由下式计算:

其中,c为数值传播速度,ρi和ρ为混合粒子和代理粒子的密度,Δv=vi-v和Δx=xi-x表示代理和液体的相对速度与相对位置,ω为一个常数,ui为混合粒子的粘度系数,计算公式如下:

其中,αmk为混合粒子中液体k的体积分数,μmk为混合粒子中液体k的粘度系数。不同的混合粒子粘度是不同的,并且粘度随着混合粒子中各液体的体积分数的改变而改变。这是混合粒子对代理不同摩擦力的主要原因,也是和单相流触觉交互不同的地方。

由于传统的方法在计算粘滞力时,会出现不稳定的现象,从而影响用户体验,因此本文基于文献[6],提出一种新的计算粘滞力的方法,该方法可以很好地解决计算粘滞力时不稳定的现象,计算公式如下:

fvis(x)=μx·m·Δt(Δu-u)

(12)

其中,μx为代理粒子x平均粘度,通过附近混合粒子的粘度插值计算而得,m为代理粒子质量,u为代理粒子速度。Δu计算公式如下:

其中,ui是附近混合粒子的速度。

4.2 触觉整合模型

在传统方法中有2种整合模型:一种整合模型基于网格方法[4],其触觉力是根据网格中每种液体的权重计算而得;另一种整合模型基于SPH方法[3],将所有代理粒子的触觉力求和后发送到触觉设备中。本文方法是通过混合粒子计算每个代理粒子的触觉力,然后通过每一个代理粒子的触觉力求和得到最终的触觉力,所以本文使用文献[3]的整合模型:

5 实验结果与分析

本文使用CUDA 7.0实现了可溶性液体的触觉交互,实验设备为Core i5 @ 3.0 GHz处理器、8 GB内存和NVIDIA GTX 750显卡的台式计算机。本文使用Geomagic Touch(见图4)与可溶性液体进行触觉交互。Geomagic Touch是一种较常用的触觉交互设备,具有六自由度的输入和三自由度的输出的功能,广泛应用于科研、建模等领域。本文的算法是可并行的,使得该方法能够充分利用并行架构,因而提高了模拟效率。

图4 实验环境示意图

可溶性液体触觉交互的实验场景及触觉力的变化如图5所示。使用Geomagic Touch控制代理(白色小球)与可溶性液体进行交互。触觉力会通过触觉设备输出给用户,让用户体验到代理与可溶性液体交互过程中产生的触觉力。

图5 触觉力变化折线图

本文实验通过控制代理从可溶性液体的一侧运动到另一侧,以观察触觉力的变化。实验中可溶性液体由3种液体组成,粘度分别为中、高和低。其中,图5(a)~图5(c)显示代理与可溶性液体之间的触觉交互场景。代理从图5(a)的位置移动到图5(b)的位置(从中等粘度液体移动到高粘度液体),触觉力从开始逐渐增加到图5(d)虚线(1)的位置。代理从图5(b)位置至图5(c)位置(从高粘度移动到低粘度液体),触觉力逐渐开始下降到图5(d)虚线(2)的位置。由于代理处在同一种液体中,粘度变化小,力的变化也相应地变小,因此触觉力在图5(d)中的虚线(1)、(2)位置趋于平稳。并且,从图5(d)可以看出,在代理运动的过程中,触觉力没有很明显的抖动,所以该方法具有较好的稳定性。

每个坐标轴方向上的分力如图6所示。使代理尽量保证在y轴方向上不动,因此,y轴上的力总是接近零值。如果z轴上的力总是负值,其主要原因是重力的影响,本文在触觉力的计算过程中增加了浮力,因而z轴的力波动不定。由于主要沿x轴方向进行移动代理,因此主要的触觉力来自于x轴方向上的分力,其波动是最大的。

图6 触觉力各方向分力的折线图

图7表示实验中代理所受摩擦力的变化。如图7中的(a)段所示,通过使用不同的速度移动代理模拟其所受摩擦力的变化,由于代理运动过程中与可溶性液体会产生变化的速度差和位移差,因此摩擦力也一直在波动。如图7中的(b)段所示,通过将代理从可溶性液体的一侧运动到另一侧模拟不同粘度的液体对摩擦力的影响。

图7 摩擦力变化折线图

实验结果显示,随着粘度的变化,摩擦力也发生了相同趋势的变化,所以,摩擦力对于触觉交互的真实性是不可忽略的。通过在触觉力计算中添加摩擦力的计算,触觉力的真实性得到进一步提升。

本文对不同的触觉力计算方法进行对比,实验结果如图8所示。结果显示,单向流的触觉[3]模拟不能很好地处理各种液体的分布,因此运动过程中触觉力没有明显地随着粘度的变化而改变,如图8中的虚线所示,力的峰值比较均匀,触觉力的细节不明显。文献[5]的方法(实线)是该领域较新的一种方法,力的细节保持较文献[3]要好很多,但触觉力仍然有一定的抖动,稳定性不足。本文在计算过程中使用了新的粘滞力的计算方法,并且在计算的过程中增加了浮力、摩擦力的计算(如点线所示)。从图8可以看到,本文计算出触觉力比文献[5]的方法更加平滑,所以本文的方法更稳定。而针对于真实性的验证,将会通过用户调查的方式进行评估。

图8 不同方法摩擦力变化折线图

6 用户调查

本文使用用户调查评估本文的方法:一方面,由于摩擦力对触觉力的真实性有很大影响,并且本文在可溶性液体的触觉渲染中添加摩擦力的计算,因此对摩擦力的评价单独作为一项指标进行评估;另一方面,通过对力的同步性、稳定性和真实性3个特征来对触觉力进行全面的评估。

实验准备:实验环境为Geomagic Touch触觉设备和普通的台式计算机。实验场景如图5所示,包括由不同粘度的3种液体组成的可溶性液体和代理(白色小球)。邀请来自计算机专业且拥有丰富的图形知识,年龄在20岁—30岁之间的16位用户参与实验,其中包括4位女性和12位男性。

实验过程:在实验开始之前,每一位用户需要阅读实验说明,并且将需要回答的问题(见表1)发送给每位用户。用户需要在实验过后填写评分,评分范围在1分~5分之间,其中,1为最差,5为最优。在每一位用户体验完毕后,将代理归为原位,从而减少外界因素对实验结果的影响。每位用户可以体验2次,分别体验本文方法和文献[5]方法。在实验中,用户的体验顺序是随机的。实验结束之后,用户给相应的问题打分,最后对摩擦力作出评价。

表1 用户在体验之后需要回答的问题

实验结果:用户调查的结果如图9所示。本文方法和文献[5]方法都模拟了可溶性液体的触觉相互,并且均取得了很好的效果。然而,用户对这2种方法的评价略有差异。从实验结果可以看出,本文的方法在稳定性、真实性和同步性上都要优于文献[5]的方法。在Q3的分数上,2个方法的差距是最大的,说明本文实现的触觉力更加真实。

图9 用户调查结果

另外,在实验的过程中,每一位用户都可以明显地感受到摩擦力。并且当速度不同、液体粘度不同时,用户感受到摩擦力也不同。从用户评分可知,本文方法增加摩擦力计算后,真实度有了很大的提升。

然而,有些用户认为触觉渲染模拟并不完美,这是因为在现实中,可溶性液体的触觉交互有很多影响因素,如材料等。但是,这些因素在模拟中无法完全实现,所以会导致用户感觉可溶性液体触觉交互的模拟和现实有一定差距。

7 结束语

本文基于SPH方法提出一种新的适用于可溶性液体触觉交互方法。为了提高模拟的真实性,本文在触觉力的计算过程中添加摩擦力、浮力的计算。此外,运用一种基于速度的方法计算粘滞力,从而提高触觉力的稳定性。实验结果证明,本文方法在真实性和稳定性上都优于文献[5]的方法。下一步将提升可溶性液体触觉交互的真实性,模拟可溶性液体与多种代理的触觉交互。此外,模拟化学反应过程中的触觉交互也是未来工作的重点。

猜你喜欢

触觉摩擦力代理
『摩擦力』知识巩固
理顺摩擦力
唤起人工触觉 实现“意念控制”的假肢
透析摩擦力
代理圣诞老人
代理手金宝 生意特别好
食的触觉
嗅觉、味觉和触觉
钢琴演奏教学中视觉、听觉、触觉的协同研究
神奇的摩擦力