福感科技有限公司 欢迎您!
联系方式

    地址:北京市平谷区马坊镇金河北街17号院3号楼7层712

    电话:010-89968230

    网站:http://www.fgsense.com

你的位置:首页 > 新闻动态 > 公司新闻

基于数据手套的虚拟手建模与驱动

2020-12-21 19:59:54      点击:

基于数据手套的虚拟手建模与驱动

李琴, 黄德所, 汪文革, 左从菊

(解放军炮兵学院二系炮兵仿真教研室, 安徽合肥230031

摘要:针对传统虚拟操作的不足,结合WSTGLOVE5数据手套等硬件设备,本文提出一种新的虚拟操作方法。采用面向对象的方法实现数据手套数据的荻取,采用层次建模方法建立虚拟手的几何模型,实现对虚拟手的控制以及虚拟手对物体的虚拟操作。并给出具体的应用实例。

关键词:数据手套;跟踪器;虚拟操作;VegaCreator

引 言

虚拟世界是通过计算机成像生成视觉信息,并利用其它反馈设备提供触觉、力觉、听觉、嗅觉等效果而生成的模拟真实世界的环境。虚拟操作是真实人与虚拟世界交互的一种方式。 虚拟操作与真实操作的区别在于操作对象是虚拟的,操作对象的一切属性,包括几何形状、 材质、纹理、硬度、重量等,都是通过计算机赋予的,因此可以随意更改。虚拟操作的灵活性使得它有广泛的应用前景。可以开发各种虚拟训练器,用于设备的维修或装配训练。相对于实物训练,它可以降低花费,具有可重用性、可扩展等优点。传统的虚拟操作可以使用鼠标、键盘等交互设备,通过预先定义的运动规则实现操作,这种操作显然与真实操作有很大差别,交互的质量不高、效果不好,为了进一步提高真实性和沉浸感,可以使用数据手套跟踪手和手指的运动,利用获取的数据在计算机中生成虚拟手,来模拟真实操作过程。

在实现虚拟操作时,虚拟手模型的建立和驱动是比较关键的问题, 本文探讨数据手套的接口技术,利用可视化仿真建模技术Creator说明虚拟手的建模过程,基于可视化仿真技术VegaVC++6.0平台研究虚拟手的驱动方法。

数据手套的数据获取

数据手套已成为一种被广泛使用的传感设备,它戴在用户手上,作为一只虚拟的手与虚拟场景进行交互。可以在虚拟世界中进行物体抓取、移动、装配、操纵、控制等操作,并将手指和手掌伸屈时的各种姿态转换成数字信号传送给计算机。本文所采用的数据手套是北京万视达公司的WSTGLOVE5(如图1所示),该数据手套共有5个光纤传感器,每个手指上都分布了一个传感器,用于测量手指的弯曲程度。采用可伸缩的合成弹力纤维制造,可以适合不同大小的手掌。


WSTGLOVE5通过USB口与计算机连接好之后,安装数据手套的驱动程序, 该驱动程序为用户提供了在C++环境下开发人机交互程序所需要的头文件GloveSDK.h、 库文件GloveSDK.lib和动态库GLoveSDK.dll。根据头文件的相关函数可以方便地实现计算机与数据手套之间的通信。采用面向对象的思想,编写针对数据手套的控制类:DateGlove类。



通过此类可以读取数据手套各个传感器的相关信息,在实际应用中,将这些信息转化为各个手指的角度值,计算相邻时间间隔传感器输出角度的差值,调用可视化模型驱动软件中相应的函数实现对虚拟手手指的控制,要求与现实世界中手的运动能完全同步起来。

由于该数据手套没有定位装置,只能采集到手的状态信息,而对于手的位置方位信息是无能为力的。因此在实际应用中,还必须配有空间位置跟踪设备,检测手在空间中的实际方位及其运动方向。

2虚拟手建模

要将数据手套测得的人手数据信息映射到虚拟场景中,必须建立与之对应的虚拟手模型。目前三维可视化仿真建模软件有很多,例如Multigen Creator3DSMaxs等,结合Creator软件的优点,本文采用Creator软件建立虚拟手模型。

2.1实时建模软件一Creator

MultiGen.Paradigm公司推出的Creator建模软件是一套高度逼真、最佳优化的实时三维建模工具,能够满足视景仿真、交互式游戏开发、城市仿真以及其它的应用领域,其文件格式为.flt该格式在实时三维领域中已成为最流行的图像格式,也成为了实时仿真、虚拟现实业界的标准数据格式。Creator的特点主要体现在如下几个方面:

1)它包括一套强大的集成工具,可以在“所见即所得”的环境中创建可视化的层级数据库,这些数据库在常规建模中遵循OpenFlight标准。

2)作为仿真软件,它与CAD软件不同,它所追求的是建模方面的逼真性和在虚拟世界显示中的实时交互性。

3Creator与仿真软件Vega一起使用时,可直接将.flt文件导入VegaLynx界面,生成.adf文件后,即可通过编程调用.adf文件进行虚拟仿真。此外,Creator具有很好的兼容性,可导人.3ds.dxf.stl等格式的文件,还可导出.dxf.wrl.stl等格式的文件。 其应用也十分广泛,在训练系统、军事演习、游戏开发等领域使用尤为普遍。

2.2虚拟手模型的建立及细化

虚拟手模型是通过人手结构分析、模型制作、 冗余面消隐、合理设置DOF节点等步骤完成的。

根据人手结构,将手简化成手掌和5个手指,然后再将每个手指分为指段,其中大拇指为2个指段,其余4个手指为3个指段。根据人手的运动特性,每个手指的运动都依附于手掌, 即可以将手指看作手掌的子物体,而对于单根手指的指段,顶部指段从属于基部指段的运动, 也可以在指段之间建立父子关系,于是就可以建立单向的层次树状结构。

1)模型数据库优化。

在一定帧频率的作用下,任何实时系统的硬件只能对有限数量的多边形进行实时计算处理。 如果模型数据库中的多边形数量超过了实时系统的处理能力,那么仿真系统就无法流畅地运行。在实际建模时,主要采用冗余面消隐方法消除隐藏面。

2DOF技术。

DOFDegree of Freedom)技术可以使模型对象具有活动能力,控制模型的某部分按设置的自由度范围进行移动或旋转运动。虚拟手手指的弯曲,可以通过DOF技术来实现,即在每一个指段设置DOF节点,DOF节点可控制所有子节点按照设置自由度范围进行移动或者旋转运动。虚拟手模型共有14DOF节点,分别分布于五指上,它们都能在一定范围内自由活动。图2是利用Creator软件建立的虚拟手渲染后的模型。



3虚拟手的驱动

3.1实时驱动软件—Vega

VegaMultiGen.Paradigm公司应用于实时视景仿真、声音仿真、虚拟现实及其它可视化领域的领先的软件环境。它将先进的模拟功能和易用工具相结合,对于复杂的应用,能够提供便捷的创建、编辑和驱动工具。Vega能显著地提高工作效率,同时大幅度减少源代码开发时间。 它把先进的仿真功能和易用的工具结合到一起, 创建了一种既使用简单,又具创造力的体系结构,从而可使用户简单迅速地创建、编辑、运行复杂的仿真应用。与其它同类型软件相比较,除了其强大的功能外,VegaLynx图形用户界面也是独一无二的。在VegaLynx图形用户界面中只需利用鼠标点击就可配置、驱动图形。Vega还包括完整的C++语言应用程序接口API,在NT下以VC++6.0为开发环境,可以满足软件开发人员要求的大限度的灵活性和功能定制。

3.2虚拟手的控制

VC++6.0Vega集成开发环境中对相应数据手套的操作进行编程, 实现对虚拟手的精确控制。在Vega中驱动虚拟手的流程如图3所示。



DateGlove类中定义虚拟手控制函数,将其放在整个系统的循环中。首先将第一组数据手套信息赋给虚拟手的各个节点,之后每次将下一个循环与上一个循环的数据差赋给虚拟手的各个关节, 实现虚拟手连续的运动。

由于该数据手套每个手指上只有一个传感器,以无名指为例,读出的传感器值为hand.m_pGlove>ddata[3],而建立的虚拟手模型每根手指有2个或3个节点。根据人手运动的经验数据可以知道p它们之间存在一种线性关系, 以下是控制手指运动的相关代码:



ChangeDof作为一个成员函数,用来控制节点的运动,获取当前每个手指关节的当前坐标, 并根据angle来改变手指关节的坐标,然后在Vega的主循环中实时渲染出来。

3.3虚拟手对虚拟物体的操作

虚拟手对虚拟物体操作的核心部分是虚拟手与虚拟物体的碰撞检测问题。选用Vega中的Volume方法和BUMP方法进行碰撞检测。首先采用Volume算法,定义一个包围虚拟手模型的长方体,检测长方体是否与场景中虚拟物体发生了碰撞,如果没有,继续检测;否则采用比较精确的BUMP方法,BUMP方法使用6根线段,包括XY轴的正负方向和由相交矢量的位置和方向定义的z轴正负方向。这里相交矢量的位置和方向与各个手指端DOF的位置和方向一致。 各线段长度分别由相对于XYZ轴的3个属性VG_BUMP_WIDTHVG_ BUMP_LENGTHVG_BUMP_HEIGHT控制。当其中任意一根线段与其它虚拟物体发生交叉, 将返回一定的数值。如果返回的值等于24,就表示发生碰撞。在虚拟手模型的每根手指上都采用BUMP方法定义6根线段,根据返回值就可以判断是哪根手指与虚拟物体发生了碰撞。

由于该数据手套没有力反馈功能,发生碰撞检测后需要给用户输出视觉反馈,如改变所操纵的虚拟物体颜色,来通知用户已经发生碰撞,可以进行操作。

将虚拟物体的可操作部件名称存人数据表中,当虚拟手与虚拟物体发生碰撞检测后,首先判断是否为有效的可操作部件。若是有效部件,则进行操作;若为无效部件,则重新进行选取。

操作部件分为按钮式开关、扳动式开关和扭转式开关等。对于不同的开关,定义相关的碰撞规则。例如对按钮式开关,用食指进行选取,仅当食指指端6根线段中的一根发生碰撞检测并判断为有效部件时,按钮式开关按照已经定义好的方式(例如沿它的局部坐标系中的z轴平移指定的步长)改变状态即可。

4应用实例

为了检验本文所述方法的可行性与效果,笔者开发了一套原型系统,利用WSTGlove采集手的姿态信息,利用头盔显示器观察虚拟世界和虚拟手的运动,Flock of Birds磁定位器用来定位头盔和手的方位信息。

软件部分包括Windows XP操作系统、VC++6.0、Vega、Creator。 在该实例中,虚拟工作环境包括虚拟手、虚拟物体,如图4所示,当虚拟手的食指与虚拟物体的开关面板发生碰撞时,开关面板变成红色,提示用户可以进行虚拟操作, 当用户按下按钮后, 开关面板打开。



4结束语

无论在一般的基于身份的密码方案中,还是在本文基于身份的代理盲签名方案中,都需要有一个可信的PKG来生成密钥。一般PGK是诚实可信的,但是在现实中很难找到这样的一个可信中心,这就成为了于身份的密码方案中的—个瓶颈。因此,将方案推广到无可信第三方的情况是非常有意义的。这是值得我们进一步研究的问题。


声明:文章内容整理来源于网络,版权属于原作者,如有问题,请联系我们!

Copyright 2019 www.fgsense.com

福感科技有限公司 版权所有 All Rights Reserved

京ICP备20002031号

010-89968230