为了模拟汽车虚拟装配培训环境下的虚拟手交互,设计了一种基于物理粒子和刚性骨架的虚拟手模型:使用刚体模拟虚拟手的骨骼,将具有物理特性的粒子耦合到蒙皮网格上相应的位置,动态地调整刚度值。提出了一种算法复杂度低的辅助抓取方法,将虚拟手抓取物体的情况分为被抓取和未被抓取两个状态,有效地减少了物体意外掉落的情况,提高了抓取的稳定性。最后将虚拟手模型集成到车辆装配培训系统,通过对照实验验证本方法可以有效地提高交互真实感,在所有任务场景中都得到了满意的效果。
在日常工作和学习中,手是我们与外界交互的最重要的媒介之一。同样,在虚拟现实环境下,虚拟手抓取的真实感也是影响用户体验的关键因素。然而,使用虚拟手在虚拟环境中精确地操作对象是一项复杂的任务,为达到良好的真实感和稳定性,需要发展合理的虚拟手模型和交互方式。
虚拟手与虚拟物体的交互方式大致可以分为三类。第一类是识别用户的有效抓取手势,随后从预定义的手势库中选择适合当前抓取行为的手势, 最后将虚拟物体与虚拟手绑定, 完成抓取动作。
Oprea 等人[1]分析了33 种不同的抓握类型, 在操纵不同几何形状和不同大小的对象时, 选择最适应对象形状的类型, 取得了灵活高效的交互效果。这类方法的优点是交互比较稳定,不易发生物体意外掉落或者物体剧烈抖动的情况, 但是这类方法的缺点是不够真实, 比如在抓住物体时, 虚拟手无法对物体做更多细致的动作, 手指可能会穿透物体,等等。第二类是从力学角度分析虚拟手与虚拟物体之间的摩擦和碰撞情况。Holl等人[2]提出了一种基于库仑摩擦模型的仿真方法,并在Unity 引擎中实现,使得虚拟手可以与任意形状的物体进行交互。
与第一类方式相比, 这类方式可以模拟更加真实的交互动作, 显著增强用户的沉浸感, 但计算非常复杂,运算效率低。第三类方式则是通过制定符合抓取行为特点的约束规则,来替代复杂的受力分析,如基于有效阈值角度[3]、摩擦锥[4] [5]的抓取规则。胡晨等人[6]利用基本几何体分解复杂物体,根据形状特征和手指抓握的接触关系制定抓取规则,实现了对复杂物体的稳定抓取。
虚拟手的建模方法有两种。一种方法是,将手建模为由刚体组成的铰接体,计算效率比较高,但这种模型在与虚拟物体接触时,能得到的碰撞和接触点信息有限,导致抓取动作非常僵硬[7] [8]。另一种是将手建模为可变形的软体,当柔软的手指和物体接触时,接触面会发生膨胀,使得抓握更加精确和稳定[9] [10]。
手是人体中非常复杂的器官,由骨骼、皮肤、肌肉等组成,每次交互动作都需要各个部分互相配合才能完成。因此,准确地模拟手的变形以及在抓取过程中手对物体的影响,是发展虚拟手交互方法的关键。Delrieu 等人[11]使用刚体模拟虚拟手,提出了基于虚拟弹簧的抓握方法。该方法分为接触阶段、抓握阶段、操纵阶段和释放阶段,可以实现精确、稳定的抓握而不会意外掉落;但是该方法不够真实,无法模拟虚拟的装配培训操作。Verschoor 等人[12]使用有限元法模拟虚拟手的非线性皮肤,使用能量最小化框架模拟元素之间的机械能交换,然而基于有限元法的可变形软体模拟需要大量的计算成本。Kim 等人[13]则将虚拟手描述为大量粒子的集合, 通过粒子和虚拟物体的碰撞和摩擦, 产生包括抓握、抬起和捏等交互,然而该方法抓取较为困难,抓取时会发生抖动,且容易意外释放要抓取的物体。而其他方法如Jacobs [14]、Chessa [15]和Quan [16]等同样存在穿模、物体被弹飞等问题。
为保证交互稳定性和鲁棒性,提高交互的真实感,克服物体被意外释放和被弹飞等现象,本文提出一种基于物理粒子和刚性骨架的虚拟手模型,既能有效降低计算量,提高操作的稳定性,也能使虚拟手与虚拟对象的交互更加真实。基本想法是:1) 用刚体模拟手的骨骼,并制定一定的约束规则用于虚拟手与物体的交互,2) 使用具有物理特性的粒子模拟手的皮肤,将物理粒子耦合到蒙皮网格上相应的位置,