一种“虚拟人”行走动作合成方法与流程

文档序号:12127709阅读:480来源:国知局

本发明属于人体运动的仿真模拟技术领域,具体涉及的是一种在人体运动模拟研究中,通过计算机三维数字化成型的“虚拟人”进行运动行走时的动作合成方法,即,虚拟人行走动作合成方法。



背景技术:

人体运动仿真是一种利用计算机模拟自然真实人体运动过程的技术。其具体过程包括建立计算模型,仿真计算虚拟人在给定约束条件下的物理运动过程,并在计算机生成的虚拟环境中以三维图形方式逼真呈现该运动过程。其典型应用领域包括:(1)动画和影视特效。其基于运动捕获数据的人体动画方法有效的提高了运动和影视特效的逼真性与制作效率,特别是在许多高风险动作制作中,采用该仿真技术可以更逼真模拟出人在复杂场景中的运动状态;(2)交互式游戏。人们已经可以借助传感装置实现玩虚拟网球、乒乓球等游戏项目,将人体运动仿真技术技术与传感器结合并准确传递动作信息实现游戏“虚拟人”与游戏者的统一;(3)3.生物力学。生物力学通过分析采集到的大量人体运动数据来研究人体运动过程中肌肉骨骼系统的运动规律。通过“虚拟人”动作仿真可以可让用户编辑人体模型、对人体模型进行前向、逆向动力学计算和人体运动仿真,从而使人体运动生物力学的分析更方便、准确。进行“虚拟人”行为动作的仿真模拟通常包括人体简化模型的建立、人体模型运动方程的构建、“虚拟人”模型参数根据运动方程的变化和跟踪。但“虚拟人”的运动并不是完全独立的,特别是作为其基本动作的行走动作更是受到了环境条件的限制和约束。如何模拟虚拟人对环境的感知能力和协调反应、体现虚拟人与虚拟环境之间的相互作用和影响,以达到虚拟现实所要求的逼真性,是虚拟人所面临的重大挑战之一。这些相互作用涉及大量的三维几何计算,虚拟现实同时要求满足三维渲染的实时性,因此就要求以尽可能低的运算成本实现虚拟人的驱动及其对环境的感知能力。

解决上述问题,通常通过载入动作库(motion library)中的动作数据来驱动虚拟人物,这样可以减小计算工作量从而保证处理人体运动的实时性,但也会使得人物的动作重复化和非智能化,并缺乏对环境主动和被动的应变能力,造成不真实的情况。而如在每一帧渲染中计算虚拟人物基于对环境的判断所采取的动作和发生的结果,则高昂的运算成本会造成人物驱动的实时性成为困难。

本申请的技术方案就是为了解决“虚拟人”在行走过程中,在地面环境相互约束条件下,对虚拟人动作切换过程中的过渡方法进行改进提出一种动作融合方法,从而实现不同动作之间平滑自然的过渡。



技术实现要素:

为了解决“虚拟人”在受限制环境条件下的运动动作合成容易变形,与环境状况不匹配,导致动作失真的缺陷,本技术方案采用一种动作融合方法将环境影响加以考虑,通过动作融合对“虚拟人”身体各部位运动数据进行修正,实现不同动作之间的平滑自然过渡。

为达到上述的技术目的,本发明公开了一种“虚拟人”行走动作合成方法,该方法步骤如下:(1)对“虚拟人”及其运动的地面进行三维数据建模;(2)采集人体正常行走周期性动作数据并构建其为“虚拟人”动作数据库;(3)利用动作数据库中的数据对“虚拟人”每帧行走动作数据进行变换,当地面三维数据体现为具有坡度情况时,进行“虚拟人”支撑脚与地面的碰撞检测对“虚拟人”支撑脚位置修正;(4)根据“虚拟人”运动方向判断坡度方向,并根据坡度方向对“虚拟人”躯体动作数据进行修正,完成“虚拟人”行走动作合成。上述方法步骤(1)通过数据建模将“虚拟人”及环境的图像转换为三维数据模型,为后续步骤中数据矩阵的运算提供了数据模型条件;步骤(2)建立了人体在不同情况下的行走动作数据库,这些数据库的数据可以用来对不同环境的行走动作进行差值和变换,为后续运动变换实现了动作数据库准备;步骤(3)和步骤(4)所进行的碰撞检测和“虚拟人”运动方向坡度判断是本技术方案的核心,通过判断可以明确“虚拟人”在当前环境约束条件下的状态,并根据约束条件进行下步动作数据修正,从而实现“虚拟人”行走动作在环境中的融合,真实体现其动作特征。

上述步骤(1)中的三维数据建模是将“虚拟人”的或地面的两个相互垂直的典型二维截面轮廓数据通过差值计算各顶点的三维坐标获得,从而保证模型的网格面相同。上述建模方法通过两个相互垂直平面物体轮廓数据的获取并进行差值运算后将完整的物体三维图像以网格数据矩阵的方式呈现,方法简单,建模效率高。

上述步骤(3)对“虚拟人”支撑脚与地面的碰撞检测是采用距离计算法进行判断,具体为:从“虚拟人”上选择脚跟和脚尖作为计算点,利用Direct3D(D3D)环境中的D3D相关函数得出这些顶点与地面的竖直距离,通过该距离判断“虚拟人”是否与地面发生碰撞。采用距离计算法可以使虚拟人在行走过程中始终保持正确的位置关系,同时还可得到所在D3D三维网面的三角形面元的索引,以便在后续的计算中访问这个三角形的顶点数据从而确定其法线方向。

上述步骤(4)中,对“虚拟人”躯体动作数据修正采用动作融合方式进行,其具体方法是将动作库里现有的多个动作数据进行线性组合生成一套新的动作数据A,即可得到在2个典型动作A1和A2之间的中间插值动作A=A1*(1.0-α)+A2*α,这里的差值参数α取值0-1.0,通过改变插值参数α便可使人体动作在A1和A2之间调整,以获得虚拟人动作对环境的反应能力。上述方法可以同时考虑到两个方向坡度影响下“虚拟人”行走的合理动作,用这样的动作驱动方法使在坡度变化的地面沿任意方向行走的“虚拟人”给观察者充分可信的真实感。

上述步骤(4)中“虚拟人”对运动方向判断坡度方向进行判断是通过对地面法线方向的计算实现的。通过地面法线方向的计算就可以确定“虚拟人”当前在地面上的状态,进而获得其与地面之间的夹角信息,为运动动作智能化提供数据计算参考。

为提高计算的效率,充分发挥计算性能,在进行碰撞判断、“虚拟人”支撑脚位置及身体修正时均基于GPU的矩阵、矢量运算完成。

本技术方案中,通过“虚拟人”在行走过程中与地面的碰撞检测,使人体与地面处于合理的相对位置,实现了虚拟人在行走过程中对其所处的虚拟世界中环境地形的感知和反应能力,人体动作适应于环境变化的调整保证了虚拟人运动的真实性,利用动作融合的方法实现了人体在不同坡度沿不同方向行走时的动作调整,这些基于GPU的矩阵、矢量和三维顶点的计算,也使多个虚拟人的驱动满足实时性的要求。

具体实施方式

为更清楚的对本申请技术方案予以阐述,下面进行具体方法的阐述:(1)对“虚拟人”及其运动的地面进行三维数据建模。该方法主要利用图像建模原理,根据需要建模物体多个方向图片或照片的二维数据信息进行重构,获得保存有环境信息的三维网格数据模型。由于图像本身包含着丰富的场景信息,从图像获得照片般逼真的场景模型,成本低廉,真实感强,自动化程度高,纹理颜色真实感强,不受时空限制。目前的计算机图形学和计算机视觉方面的研究通常采用此种建模方式。(2)采集人体正常行走周期性动作数据并构建其为“虚拟人”动作数据库。“虚拟人”行走动作数据的获取是进行动作融合的基础,通过不同状态运动数据的采集获得“虚拟人”各关节动作数据,包括旋转角度、平移矢量和每两个关键帧之间的子帧数目并以自定义的动画文件格式保存,之后载入这些文件数据再插值得到每个子帧的动作数据,通过这些数据中的旋转角和平移矢量构建成变换矩阵,作用于表征各肢体的D3D网面,完成了对虚拟人物的驱动过程。(3)利用动作数据库中的数据对“虚拟人”每帧行走动作数据进行变换,当地面三维数据体现为具有坡度情况时,对“虚拟人”支撑脚与地面的碰撞检测进行“虚拟人”支撑脚位置修正。在实际环境条件下,“虚拟人”常常需要在有坡度并且坡度变化的地面上沿任意方向行走,这时还完全靠水平地面上行走的动作数据来驱动人体,就会发生与实际不相符的情况:虚拟人要么在空中、要么埋在地面以下行走。为避免这种现象,需要对支撑脚与地面之间进行准确的碰撞检测(collision detection),得到脚的最低点(脚跟或脚尖)与地面的偏差量,由此纠正躯体的位置,可以使人体支撑点准确地落在地面上。具体过程是:从虚拟人体上的几个代表顶点、在行走过程中取脚跟和脚尖最为合理,利用D3D相关函数得出这些顶点与地面的竖直距离,通过这个距离再修正人体的位置即可使虚拟人在行走过程中始终保持正确的位置关系。(4)根据“虚拟人”运动方向判断坡度方向,并根据坡度方向对“虚拟人”躯体动作数据进行修正,完成“虚拟人”行走动作合成。利用动作融合的方法可以较好地解决“虚拟人”动作与环境的融合问题,主要通过将动作库里现有的多个动作数据进行线性组合生成一套新的动作数据A,即可得到在两个典型动作A1和A2之间的中间插值动作:A=A1*(1.0-α)+A2*α,这里的浮点数α为插值参数取值范围0-1.0。上式表示这2个动作所包含的所有对应的旋转角度和平移矢量各自进行线性组合。改变插值参数α便可使人体动作在A1和A2之间调整,以获得虚拟人动作对环境的反应能力,或完成指定的目标任务。如果要采取这种方法,首先要求应用于虚拟人的动作库中存有覆盖所有动作和动作幅度的基本动作。对于行走动作,基本动作除在水平地面上的行走动作外,如果要构成虚拟人在不同坡度地面上行走的任意动作,还应包含上坡和下坡的行走动作。假设人能直立行走的最大坡度为45°角,制作了45°上下坡的两个基本动作A+fb和A-fb,虚拟人在上坡时前方的下肢弯曲形成的力矩可以克服上半身的重量,下坡时后面的下肢作较大弯曲且重心靠后以抵抗重力防止下滑。那么虚拟人在任意坡度θ上的行走时就可以由这两套基本动作与水平行走动作A0融合所产生:

A=A+fb*tgθ+A0*(1.0-tgθ),θ≥0

A=A-fb*tgθ+A0*(1.0-tgθ),θ<0。

除前后的上下坡角度θ以外,还应考虑人体的左右即与行走方向垂直的方向上地面的坡度φ造成对行走动作的调整。例如虚拟人在45°坡度上沿着该坡度平面与水平面相交直线行走时,沿行走方向上的坡度θ=0,左右方向上的坡度φ=45°,人体位于地势高的下肢各关节会做较大的弯曲以避免与地面磕碰;同时另一下肢会更多地向下伸展以减小脚底与地面的距离,把这种情况与相反方向的行走动作保存作为另外2个基本动作A+lr和A-lr,那么在左右方向+45°~-45°坡度之间行走的基本动作可表示为:

Alr=A+lr*tgφ+A0*(1-tgφ),φ≥0

Alr=A-lr*tgφ+A0*(1-tgφ),φ<0。

综合考虑在前后与左右方向上地面的坡度对行走动作的影响,可以先由上式合成的动作Alr替代前式中的A0,再由前式得到动作,这就是同时考虑到了两个方向坡度影响的虚拟人行走的合理动作,用这样的动作驱动在坡度变化的地面沿任意方向行走的虚拟人可以给观察者充分可信的真实感。“虚拟人”对地面坡度的感知是通过地面法线方向n(nx,ny,nz)的计算获取、确定的。其具体计算是:虚拟人行走方向可以表示为v(vx,0,vz),如果地面不是水平面,则需要计算行走方向v(vx,vy,vz)的y分量才能得出坡度值θ(v处于D点地形曲面的切平面内)。位于地形切平面的矢量v(vx,vy,vz)与法线n垂直,它们点乘的结果为0:n·v=0;由此得到:

vy=-(vxnx+vznz)/ny,将之归一化为v(vx1,vy1,vz1),由sinθ=vy1可以求出。而与行走方向垂直的矢量就是n与v这2个矢量叉乘结果:v’=v×n,同样由sinφ=v’y可以得出虚拟人左右方向上的地形坡度。以上所有矢量运算均由GPU高效率地完成,从而以较低的运算成本实现了虚拟人对虚拟环境地形的感知。

通过虚拟人在行走过程中与地面的碰撞检测,使人体与地面处于合理的相对位置。实现了虚拟人在行走过程中对其所处的虚拟世界中环境地形的感知和反应能力,人体动作适应于环境变化的调整保证了虚拟人运动的真实性,利用动作融合的方法实现了人体在不同坡度沿不同方向行走时的动作调整,这些基于GPU的矩阵、矢量和三维顶点的计算,也使多个虚拟人的驱动满足实时性的要求。

以上所述仅为本发明技术方案的较佳实施例而已,并不用以限制本发明申请,凡在本技术方案实质内容上所作的任何修改、等同替换和简单改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1