许 锋
(中国刑事警察学院声像资料检验技术系,辽宁 沈阳 110035)
当前,部分公安一线干警在执法过程中存在不作为、不会为和乱作为的现象,极大破坏了法律的权威和警察形象。目前的执法动作训练主要采用口述及肢体示范分解动作的方法,存在较多的局限性,对于执法过程中的突发状况无法充分模拟并且在训练过程中受训人员容易造成身体损伤,虚拟训练系统可以较好地解决上述问题,满足执法训练科学化、实战化的要求[1,2]。
虚拟人是高度真实的人类特性的数字化表现,人作为虚拟环境的主体,其运动的逼真性直接决定了使用者在虚拟世界的沉浸感[3]。肢体运动的交互通过获取人体各主要关节的运动状况,将这些运动数据传递给虚拟环境下的仿真模型,实现对应运动,最终在虚拟环境下得到流畅和自然的运动仿真效果。此外,这种运动交互方式还可为人类和动物的运动学和仿生学提供借鉴和参考[4,5]。本文在考虑降低运动合成复杂度,提高合成实时性的情况下,提出了一种运动系统的交互结构,建立了肢体交互骨架结构的简易模型,完善了模型的运动和交互规则,并实现了程序编制和实例运行。
虚拟环境下人体建模的技术和方法有很多种,依据使用的工具大体分为以下三种:软件建模、硬件建模和软硬件[6,7]。软件建模是采用较早的方式之一,目前广泛使用的软件有endorphin、Poser、Delmia以及Jack,普遍存在兼容性较差、模型库单一及误差大等问题;硬件建模是随着3D扫描技术发展而产生的,常见的有ArtecShapify Booth、Handy SCAN等,但多用于静态模型的产生,无法生成连续动作序列;软硬件结合人体建模通过专业的动作捕捉设备获取人体骨架数据,通过数据的转换完成与关节的绑定,最终实现驱动虚拟人,但存在人体尺寸匹配不准,且费用较高等问题。根据公安执法动作虚拟训练系统的需求,在分析人体结构,降低开发费用,简化骨骼和结构关节,降低运动合成复杂度等基础上,本文利用三维图形软件构建了虚拟人体模型。
依据人体的正常生理结构和运动特征,本文将骨骼认定为刚体,把各个运动关节进行简化并抽象成球体,大致分为股关节、膝关节、头关节、颈关节、肩关节、腰关节等16个主要关节,具体关节及层次见图1[8-10]。骨架上的各个关节位置如图2所示,身体的躯干部分主要包括颈关节、腰中关节和腰底关节,颈关节连接头顶关节和左右臂关节,左股关节和右股关节连接在腰底关节上,腰中关节主要功能是实现弯腰和转体运动。腰中关节是整个骨架模型的中心节点,靠近中心节点的为父节点,向下为子节点。为了在虚拟环境下如实再现人体身高特征,将骨架模型的身高设置为变量H,其它各部分模型的尺寸换算为身高的一定比例,本文以身高180cm的普通人测量结果作为依据,具体尺寸的比例关系如表1所示。根据公安执法动作的实际情况,本文的运动控制仅包括躯干、手臂和腿部,手和脚关节等细节部分被简化,没有列出。
表1 骨架尺寸表(H代表身高)
图1 人体骨架模型关节层次图
虚拟环境下的坐标系设定如图2中Cw所示,具体的设定规则如下:基坐标系设定在模型的腰部中心节点(同时也设定为质量中心和运动中心),在虚拟环境中虚拟人保持自然直立姿势,矢状面与额状面相交上下贯穿身体的为z轴;与地平面平行与矢状面平行的为y轴,方向指向身体前方;与地面平行与额状面平行的为x轴,方向按照左手规则确定。其余运动关节的子坐标系的设定与基坐标系相同,z轴同回转角度最大轴线重合且指向身体外侧,x轴垂直于z轴指向子关节方向,y轴按照左手规则。根据图1和图2中人体骨骼简化模型关节设定,共有16个关机,这些关节的自由度以及运动范围如表2所示。
表2 各个关节自由度定义及活动范围(单位为角度)
图2 关节位置及坐标系定义
在虚拟环境中模型的运动依靠各个关节的运动位姿来表达,常见的关节运动驱动方式一种是程序驱动,另一种是外部设备的交互驱动。本文采用多点电磁跟踪的方式,通过测量现实世界中人体位置姿态信息,再将其转化到虚拟环境中对应的各个关节。在现实世界坐标系中的腰中关节和腰底关节表示为Rrb(xrb,yrb,zrb)和Rrc(xrc,yrc,zrc),与之相对应的齐次式分别为Brb(xrb,yrb,zrb,1)和Brc(xrc,yrc,zrc,1);设腰中关节在现实世界中绕三轴转角分别为α、β和γ,在不考虑缩放条件下,腰底关节姿态坐标Rrc的位置齐次式Bbc如下式:
在虚拟环境中,假设基坐标系的原点在Rvb(xvb,yvb,zvb),可用围绕虚拟环境下世界坐标系转角μ、υ和λ表示其姿态,不考虑缩放的情况下,世界坐标系中腰底关节坐标齐次式Bvc如下
其余各个运动关节的坐标依据此规则进行变换,完成现实环境中的肢体运动和虚拟环境下骨架模型的数据同步。虚拟环境中的辅助人物的运动,参考表1中的骨骼尺寸和表2中的关节运动范围,通过动作生成器预先设定好的规则向骨架模型中的各个关节发送运动信号,从而实现需要的运动姿态,更有利于技术人员直观、便捷的观察和编辑骨架运动效果。从中心节点(腰中关节)开始,根据设定的骨骼尺寸和相连接的各关节转角进行传递,最终实现期望的运动姿态。在身体躯干直立,上臂围绕肩关节转动α、β和γ角,小臂转动λ角的情况下,基坐标系下腕关节的位置Bbcal3如下式
其中0.456H=0.122H+0.167H+0.167H,270°为肩关节坐标系初始位置时相对于基坐标系的转角。在虚拟环境中,当骨架模型需要缩放时,可通过计算坐标之后乘以缩放矩阵来实现,缩放矩阵的定义如下
其中:qx、qy和qz均大于零,代表骨架模型在坐标轴上的放大倍数。
如图3所示,整个系统基于SGI的Onyx可视化系统构建,硬、软件上均分为输入和反馈两个通路。系统通过放置在用户各主要关节上的运动传感器来感知运动信息,经过跟踪设备的处理后将信息传递给系统程序中的关节运动模块,最终实现虚拟环境下的模型运动。其中非用户控制的辅助人物运动根据相应触发条件由运动生成器控制,将预先设定的脚本信息传递给对应关节实现动作控制,与此同时运动信息记录模块将上述运动的数据传输进行记录,方便查询及反演,交互处理模块主要完成模型与其它事物的数据交互,反馈交互结果。
图3 交互系统结构及功能
根据本文算法,首先利用3ds MAX建立简单的三维骨架模型,然后使用Multigen-Paradigm公司研发的Creator开发软件实现模型的编辑及转换,并进行关节定义,最终利用C语言调用Vega中的API函数库,实现了通过读入交互脚本文件或外部的交互信息使模型运动的功能,并完成了部分程序功能由PC向Onyx可视化系统的移植。系统实现仿真的平台为实验室配置的图形工作站,配置有Intel Xeon E5606 CPU、12G内存、带有1.5GB显存的NVIDIA Quadro FX4800专业显卡和Windows 7 Professional 64位操作系统,图4为运行的实例。
图4 骨架模型运行实例
针对公安执法动作虚拟训练中虚拟人动作仿真及交互的需求,在考虑人体生理和公安执法动作特性的基础上,本文建立了肢体交互骨架模型,规定了模型的运动规则,并基于Creator及Vega实现了运动仿真,结果表明此方法降低了动作合成的复杂性,提高了动作合成的实时性,大大增强了沉浸效果,为公安执法动作训练提供了一条新的解决方案。但本模型不适合用于对复杂物体表面细致变化的运动表达,下一步研究工作将进行算法的优化并完善反馈信息的表达,使之适用于更加复杂的运动及警用器械的仿真中。