一种基于子空间筛选的三维虚拟人体物理运动生成方法与流程

文档序号:13447575阅读:265来源:国知局
一种基于子空间筛选的三维虚拟人体物理运动生成方法与流程

本发明涉及计算机三维动画技术领域,具体是一种基于子空间筛选的三维虚拟人体物理运动生成方法。



背景技术:

人体运动广泛应用于动画影视特效、交互式游戏、机器人仿真和生物力学等领域。现阶段,人体运动数据大部分来自于动捕设备。虚拟场景中包含不同的地形或障碍物,若直接应用动捕数据,则会导致角色穿地、穿墙或滑步等不正常现象,因此往往需要动画师手工调整和后期运动编辑,期间涉及的工作量繁重。并且,针对一些复杂的运动,例如翻滚、跳跃、跨越等动作,角色多个部位与环境接触,涉及多个碰撞约束,依靠手工调整和运动编辑,虽然可以保证几何方面层次的约束,但是仍然可能会破坏人体运动的物理约束,导致关节加速度过大,或超过最大生理运动极限等问题,很难保证运动的真实性。

鉴于上述问题,基于物理的人体运动生成方法被提出并成为主要解决方案。该方法将人体抽象为具体的物理模型,并将人体置于虚拟环境中进行仿真,来生成满足物理和几何约束的运动。该类方法将人体建模为多个刚体链接的铰链结构,通过时空优化方法求解驱动物理模型所需的关节力矩和外部力。

现有的物理运动生成有轨迹规划法、低维物理模型方法,控制策略方法和数据驱动方法等。

轨迹规划法通过结合运动学规律设置一些目标约束函数,采取手工调节或者离线时空优化等算法,调整运动物理参数或轨迹来获取目标运动,可以生成走、跑等运动;轨迹规划法需要人为调整关键帧,工作量大,而且不能生成复杂运动,无法满足运动多样性要求。

低维物理模型方法采用一阶倒立摆或弹簧倒立摆模型模拟人体重心,结合逆向运动学和动力信息来生成运动,能够生成适应不同地形、具备转向功能的不同风格运动。由于低维物理模型方法仅对下肢物理建模计算重心和足部等重要关节信息,而其他关节利用骨骼约束与运动学规律反算,因此只能生成与足迹相关的步行运动,不能生成空翻,跳起等复杂动作;此外如果不借助外部输入,无法真实还原上肢运动。

控制策略方法也用来生成人体物理运动,且可以生成人体上肢的物理运动。控制策略方法通过设置一组运动规则并采用多组最优控制来生成运动。通过设置一组动量、末端效应器、落地点时机评估等目标函数,通过基于优先权的优化算法,生成角色的不同行走运动,包括不同风格、速度的运动。控制策略生成的运动方法需要要求研究者对运动序列的关键点,状态转移条件十分熟悉;另外生成的运动种类有一定的局限性,创建新的运动需要重新设计一套复杂运动规则。

上述方法采用优化算法或基于规则来生成运动,难免会导致得到的运动比较僵硬,类似机器人的运动。随着动作捕捉设备的普及与运动数据库的建立,获取运动数据相对较易,研究人员利用运动数据来指导生成物理运动,解决物理运动不够自然的问题,还可以生成类似翻滚等腾空的复杂运动。由于人体物理模型多自由度,强耦合特点,求解困难,导致目前的方法求解时间长;针对复杂人体物理运动(比如翻滚跳跃等)的生成则容易进入局部极小值,导致最终求解失败;其次生成运动抖动较大。



技术实现要素:

本发明的目的是提供一种基于子空间筛选的三维虚拟人体物理运动生成方法,以解决现有技术轨迹规划法、低维物理模型方法难于生成复杂运动且生成运动不够自然的问题,以及传统动捕数据驱动生成运动“抖动”较大,且优化时间长,对动捕数据质量有一定要求的问题。

为了达到上述目的,本发明所采用的技术方案为:

一种基于子空间筛选的三维虚拟人体物理运动生成方法,其特征在于:依次包括以下步骤:

10)、将人体抽象为由多个刚体构成骨骼、铰链关节构成人体关节的物理模型,其中每个刚体的质量默认为同等密度,每个刚体的几何形状为圆柱体;采用比例微分控制器即pd控制器计算人体的整体当前姿态与目标姿态的差值产生力矩,然后铰链关节在力矩的作用下,驱动物理模型运动;

20)、从动作捕捉设备中采集运动数据或者动画师编辑产生的关键帧数据中获取运动片段,对运动片段进行滤波去噪,去除其中的错误帧,并进行重采样,获得运动数据;30)、根据步骤20)得到的运动数据,采用等时间间隔获取得到姿态构造进化算法的初始解,为了防止种群个体近亲繁殖,增加多样性,在获得的姿态每个通道增加随机扰动,得到进化算法的初始种群;

40)、根据步骤30)得到的初始种群,作为进化算法的初始解,设置目标函数,将初始解输入进化算法,pd控制器产生力矩对人体物理模型进化物理仿真,计算得到每个个体对应的目标函数值即适应度值;

50)、根据步骤40)得到的每个个体以及相应的适应度值,采用基于空间分割的筛选算法对个体进行筛选,选择较优的若干个体,记录其目标姿态、控制轨迹,组成新的种群,时间迭代增加0.1秒,若时间到达运动数据结束时间,转步骤60),否则转步骤30),进行下一轮迭代;

60)、根据每轮迭代步骤50)记录的目标姿态、控制轨迹,采用pd控制器对人体物理模型驱动,生成人体物理运动。

所述的一种基于子空间筛选的三维虚拟人体物理运动生成方法,其特征在于:所述的步骤40)中,目标函数设置由姿态惩罚项、根关节惩罚项、末端效应器惩罚项、运动平稳惩罚项以及运动平衡惩罚项加权组成。

所述的一种基于子空间筛选的三维虚拟人体物理运动生成方法,其特征在于:所述的步骤40)中,进化算法采用对多个时刻的目标姿态进行优化,求解完毕后,往前滑动一个时刻继续求解,采用变尺度滑动窗口求解,其中窗口大小可供用户设置。

所述的一种基于子空间筛选的三维虚拟人体物理运动生成方法,其特征在于:所述的步骤40)中,进化算法采用协方差矩阵自适应进化策略算法实现。

所述的一种基于子空间筛选的三维虚拟人体物理运动生成方法,其特征在于:所述的步骤50)中基于空间分割的筛选算法,对种群中的个体在参数空间中采用k-means进行分割,然后在每个子空间中的个体选取适应度值最优的个体。

本发明用户不需要了解运动规律、人体骨架生理学等知识,仅仅需要调节优化的子空间尺度、优化步长等参数,便可以生成与输入数据类似的基于物理的真实人体运动,提高了控制器生成运动效果与运动生成范围。

与已有技术相比,本发明的有益效果体现在:

本发明提出了基于子空间筛选的智能优化算法框架,该方法可以对多个不同物理骨架,多种不同运动进行物理生成。

针对现有物理生成方法收敛速度慢的问题,本发明在保证个体差异性基础上,保证个体在子群中最优,进行子空间筛选。该方法有效减少候选个体数目,较传统方法,候选解个数降低了一个数量级,从而提高了优化求解收敛速度。

针对物理生成运动动作僵硬、抖动较大、进入局部极小值问题,本发明提出一套目标函数惩罚体系,采用滑动窗口进行统一优化避免姿态切换时的不连续性,生成的运动更加平稳,抖动更小,提高了运动生成效果。

附图说明

图1是本发明的虚拟人体运动生成方法示意图。

图2是进化算法中对个体目标姿态滑动窗口求解示意图。

图3是参数为2d的情况下基于子空间筛选示意图。

图4是三维虚拟人体物理运动生成结果图。

具体实施方式

本发明综合进化策略和时空优化算法,实现对人体运动进行物理仿真,适应于多种不同类型的人体运动,且较原有方法提高了运动效果。下面结合附图和具体实施方式对本发明做进一步说明。

在一个实施例中,本发明的基于子空间筛选的三维虚拟人体物理运动生成方法在一台处理器为intelxeoncpue5-2609v3,内存为8gb,显卡为geforcetitanx计算机上实现,该计算机采用windows10操作系统,软件中物理底层采用opendynamicengine(ver0.14),cmaes求解算法采用开源项目shark开发库,物理仿真时间步长为0.002秒。在此平台基础上,参考图1所示算法示意图,对本发明具体描述如下:

10)、将人体抽象为多刚体组成的骨骼以及铰链关节构成的物理模型,其中刚体的质量默认为同等密度,刚体的几何形状为圆柱体。比例微分控制器(pd控制器)计算当前姿态与目标姿态的差值产生力矩,然后铰链关节在力矩的作用下,驱动物理模型运动。

20)、运动片段来自于动捕数据或者关键帧数据,运动片段可能存在“抖动”或者存在错误帧不能直接进行优化求解,需要对运动片段进行滤波去噪,去除其中的错误帧,并进行重采样。

30)、根据步骤20)得到的运动数据,采用等时间间隔获取得到姿态构造进化算法的初始解,为了防止种群个体近亲繁殖,增加多样性,在获得的姿态每个通道增加随机扰动,得到进化算法初始种群,如下式所示:

θi(j,ti)表示第j个关节时刻ti的角度值。m(j,ti)表示输入的运动数据在时刻ti第j个关节角度值,表示间隔的时间,取经验值0.1s;ξ~n(0,4)运动数据后面的添加的随机项,为了保证种群个体的差异性,单位为角度值。

40)、根据步骤30)得到的初始种群,作为进化算法的初始解,设置目标函数,将初始解输入进化算法,pd控制器产生力矩驱动人体物理模型进行物理仿真,计算得到每个个体对应的目标函数值(适应度值),具体实施如下:

401)、由于优化求解过程中涉及变量多,强耦合性,对单个目标姿态求解,极易进入局部极小值,导致求解失败。为了避免陷入局部极小值,同时在不降低目标姿态采样频率前提下,将多个目标姿态统一优化,随后滑动窗口继续进行优化。如图2所示,本发明中单个窗口单次对4个目标姿态进行求解,求解结束后,滑动2个距离继续求解。

402)、本发明采用协方差矩阵自适应进化策略(cma-es)进行求解,该进化算法能够很好的适应高维约束问题。由于物理模型与外界环境的作用力不可预知,控制器主要依靠目标姿态提供给每个关节力矩来保证物理模型正常运动。因此约束变量为:

其中表示第i个目标姿态的各个关节的朝向,ds为求解目标姿态的个数,默认为4。函数γ(q)用于将4维空间中单位四元数点q转换到对应的4维超球面坐标。本发明采用子代个数为20*ds,初始步长为0.2。

403)、设置约束求解算法的约束条件,物理人模型为多个刚体连杆链接模型,刚体之间运动与力学关系需满足机器人动力学方程:其中m,v,g,τ分别表示动力学系统中惯量矩阵,非惯性项、重力项和空间广义力,f为外界作用力(摩擦力、支持力等),θ表示广义坐标向量。j为广义坐标系到世界坐标系下的雅各比矩阵。

物理模型与地面产生的摩擦力采用库伦摩擦锥模型,其中v为四组摩擦锥线性基,δ摩擦锥的加权系数,f=vδ。

404)、接下来设置目标函数,采用多种目标函数加权衡量样本的优劣程度。其中目标函数(适应度)的定义如下:

e=wpep+wrer+weee+wses+wbeb,

姿态惩罚项ep:考察物理运动与参考序列中姿态之间的差异,利用每个关节的四元数差值进行衡量,并对多个关节加权求平均。其中wj为每个关节在总体姿态惩罚中的权重,dq为当前姿态第j个关节四元数qj与参考姿态第j个关节四元数qj_ref之间的距离,jnum为所有关节的数量,本发明中认为所有关节是等价的,关节权重系数均为1,有下式:

根关节惩罚项er:考察物理运动与参考序列的根关节的差异。该关节的控制目的是为了保证仿真序列与参考序列角色的总体朝向尽可能相近。其中qroot为当前姿态的根关节的四元数,qroot_ref为参考姿态的根关节的四元数,有下式:

er=dq(qroot,qroot_ref),

末端效应器惩罚项ee:考察脚部等末端效应器相近程度。保证末端部位在正确时刻到达正确位置。对于行走运动来说,末端效应器则为双脚;对应跳跃、翻滚等动作,需要考虑头部,手部等效应器。其中enum为末端效应器的个数,dv为当前姿态第e个末端效应器向量pe与参考姿态第e个末端效应器向量pe_ref之间的距离,有下式:

运动平稳惩罚项ep:考察运动的稳定性,在一定程度上起到抑制角速度过大的效果。在行走控制中,运动幅度不易过大,虽容许当前序列与参考序列有一定的偏差,但相应的角速度需控制在一定幅度内,此项目需要设置较高权重。然而对于跳跃空翻等大角速度的动作,该权重则需要降低。其中ωroot、ωroot_ref为当前姿态与参考姿态根关节的角速度,ωj、ωj_ref为当前姿态与参考姿态第j个关节的角速度,ve、ve_ref为当前姿态和参考姿态第e个末端效应器的速度,有下式:

运动平衡惩罚项ee:考察末端效应器相对于重心的偏移程度,保证重心在各自的脚步支撑的稳定区域内,该项多用于行走运动的控制。其中com、comref为当前姿态和参考姿态重心的向量,有下式:

50)、根据步骤40)得到的多个个体以及相应的适应度值,采用基于空间分割的筛选算法对个体进行筛选,选择较优的若干个体,记录其目标姿态、控制轨迹,组成新的种群,时间迭代增加0.1秒,若时间到达运动数据结束时间,转步骤60),否则转步骤30),进行下一轮迭代,具体实施如下:

多组cma-es进化算法分别对不同的初值进行优化,得到一组物理运动姿态。每个样本的物理状态为由前几个目标姿态共同决定:

其中dynamic为物理仿真过程函数,pr,vr,ar分别为根关节的位移、线速度、线加速度,qt,则角色所有关节(包含根关节)对应的角位移向量,角速度向量,角加速度向量,e为本次仿真时间段的目标函数值。表示第i个目标姿态,k为开始时刻到仿真到时刻t所需目标姿态的个数。

为了保证后续优化求解的多样性,需要对cma-es生成的所有子代进行筛选,同时保证两个前提条件,个体的之间差异性和个体适应性尽可能最优。

首先对所有子代个体进行初步筛选,摒弃适应度排名朝后的30%个体,剔除适应性特别差的个体;然后,将剩余的个体选取最靠近当前目标姿态的10个(不足10个全选),用这组目标姿态构造参数子空间如下:

函数γ将一组目标姿态转换为一组独立参数pari向量,作为第i个体的在子空间中特征参数,将所有个体参数向量利用k-means算法进行聚类,得到n个子类,继而在各个子类中寻找最优的适应度的个体,作为下一次迭代的初始解。图3表示参数pari为2维,子类个数n为5时的示意图,加粗的顶点即为下一轮迭代的初始解。

60)、根据每轮迭代步骤50)记录的目标姿态、控制轨迹,采用pd控制器对人体物理模型驱动,生成人体物理运动,如图4所示。

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