本发明属于计算机三维动画技术领域,更具体地说是一种基于多目标进化的人体物理运动生成方法,涉及计算机人体物理动画约束求解方法。
背景技术
基于物理模拟的人体运动,由于能够合成符合自然规律的运动片段,是近年来计算机动画研究领域中最活跃的领域之一。人在现实环境中,包括摩擦力、支持力和姿态在内的环境在时时变化,人具有对运动进行控制的天生属性,实时对环境的变化做出响应,确保运动平稳。为了模拟上述行为,基于几何的运动生成方法往往需要大量运动数据,进而通过数据驱动合成;相反,基于物理模拟的方法,通过物理控制器生成运动,不需要大数据支持,且得到的运动片段满足真实环境中的物理规律。
为了模拟真实的人体物理运动,通常对人体采用抽象建模,将人体转化为多个刚体的链接结构;为了模拟肌肉力矩机制,设计物理控制器,通过对骨骼产生力矩作用,驱动人体物理模型运动;为了保证运动系统稳定,人体物理模型引入了反馈单元,通过对系统状态量的改变,来计算控制器中重要关节的改变量,进而将反馈叠加到原始控制器,确保人体稳定运动,避免摔倒,自碰撞等。
在对反馈控制策略约束求解过程中,往往涉及多个目标函数,例如根关节惩罚项、姿态惩罚项、能量等。大多数方法对它们加权求和,转换为单目标函数求解。优化过程各目标函数权重的选取,对优化的方向、收敛时间、成功与否至关重要;选择失当则极易进入局部极小值导致无法收敛。实施过程需反复尝试,工作繁重,对用户素质要求较高。
物理求解问题中可行解的空间很小,个体变异落到可行域的可能性很低,需要多轮迭代产生足够多的个体,经过物理仿真,才能获得到满足可行区域的解。期间会导致“无效的”物理计算时间,如何提高落到可行域的个体的成功率,降低迭代次数,是一个需要解决的问题。
现有的物理控制器求解方法有人工设计、倒立摆模型法、开环控制法和闭环反馈控制策略。
早期运动控制采用手工设计反馈控制器,大多数利用重心位置、速度或其他关键信息作为观测变量,手动设计反馈项进而控制角色。手动设计反馈要求人员对运动细节十分熟悉,反馈项权重、不同反馈项间的组合关系需要反复实验,繁杂耗时,对设计人员的专业素质有一定要求。
倒立摆模型作为低维物理模型也用于运动控制,通常生成物理行走。首先根据地形计算步态数据,然后利用弹簧倒立摆计算人体重心曲线,进而求解全身运动,以生成适应不同地形、具备转向功能的不同风格运动。由于低维物理模型方法仅对下肢物理建模,只能生成与足迹相关的下肢运动,此外如果不借助外部输入,无法真实还原上肢运动。
运动数据库的发展带来新的机遇。研究人员利用动捕数据采用基于采样的优化算法进行运动生成,即前馈控制,并对走跑、跳跃、翻滚等运动的控制,后期则采用cma-es进化算法结合回溯来达到丰富优异的运动效果。前馈控制方法虽然生成多种运动,但是其受限于运动数据,属于开环控制,只能生成与运动数据相同时间的运动,接下来的运动控制就会失效。
线性反馈作为经典控制策略,来源自动化控制,随着计算机动画发展,近年来被应用于物理控制。利用观测量与理想变量的差值,通过反馈矩阵作用到关键关节,通过影响目标姿态来达到对运动进行控制的目的,保证人体的平稳运动。然而求解过程中目标函数较多,权重设计需要丰富的专业经验,普通用户需要多次试验,十分繁杂,任务繁重。
技术实现要素:
本发明是为避免上述现有技术所存在的问题,提供一种基于多目标进化的人体物理运动生成方法,通过多目标进化算法生成平衡稳定的人体物理运动,用户不需要精通物理运动规律和控制器相关参数,省去多目标函数的繁杂调参过程,降低求解控制器难度、提高控制器生成运动的效果。
本发明为解决技术问题采用如下技术方案:
本发明基于多目标进化的人体物理运动生成方法的特点是:由多刚体和铰链关节构成人体物理模型,通过物理控制器产生力矩驱动人体物理模型运动;所述物理控制器的构造过程包括:首先种群父代个体变异产生子代,采用禁选区域预筛选策略去除不满足约束的个体,并通过重采样获取新生子代;其次,新生子代通过物理仿真并计算多目标函数值,采用基于区域密度多层取优算法取优获得下一代父代;再次,通过基于剪枝的多阶段优化算法决定是否进入下一阶段优化;循环往复,经过多次迭代得到最优个体并生成物理控制器。
本发明基于多目标进化的人体物理运动生成方法的特点也在于:由初始控制器和反馈单元共同组成物理控制器,所述初始控制器利用当前姿态与目标姿态的差值产生初始力矩,所述反馈单元利用当前变量与理想变量差值,并通过反馈矩阵放大叠加到目标姿态,产生反馈力矩;将所述初始力矩与反馈力矩求和获得作用力矩,将所述作用力矩通过铰链关节驱动人体物理模型,生成物理运动;按如下过程构造控制器:
步骤1、针对人体运动数据,在一个固定的运动周期内提取关键帧,并通过时空优化算法计算获得初始控制器;
步骤2、按如下过程获得反馈单元:
步骤2.1、在反馈单元的解空间中随机采样产生子代,以所述子代作为初始种群;
步骤2.2、利用基于径向基函数rbf高斯核函数的支持向量机svm构造分类器,利用所述分类器对于种群中不满足约束条件的个体进行筛选,所述筛选是指:若分类器判定个体a处在不满足约束条件的禁选区域,则舍弃个体a;随后,父代重新变异生成新增子代,且步长随着重采样的次数呈韦伯衰减临时性地减少;由所述新增子代和未舍弃个体构成新生子代;
所述约束条件包括:所述控制器生成运动达到规定数目的周期、中途不摔倒,以及模型内部不发生碰撞;
步骤2.3、利用步骤2.2获得的新生子代通过进化算法进行人体物理仿真,所述人体物理仿真是指由控制器产生力矩驱动人体物理模型产生运动;设置各目标函数,并计算获得新生子代个体对应的多目标函数值,利用所述多目标函数值评价各新生子代个体的优劣;
步骤2.4、由步骤2.3获得的新生子代个体所对应的多目标函数值,以及父代个体的多目标函数值构成集合b,将所述集合b划分为正个体集和负个体集,所述正个体集中的元素满足约束条件,所述负个体集中的元素处于不满足约束条件的禁选区域;利用所述正个体集和负个体集对于所述svm分类器进行更新;并采用基于区域密度的多层取优算法对于正个体集中的个体进行取优,作为下一代候选父代个体;
步骤2.5、采用基于剪枝的多阶段优化算法,按如下方式决定是否进入下一阶段优化:
若所述候选父代个体中优秀个体的比率高于设定值,则决定进入下一阶段进行优化,随后使当前优化窗口后移,形成最新优化窗口;舍弃候选父代中不满足最新优化窗口的个体,由未舍弃的个体组成新的父代;若所述候选父代个体中优秀个体的比率不高于设定值,以所述候选父代个体组成新的父代;所述优秀个体是超出当前优化窗口的个体;
步骤2.6、若当前优化窗口达到控制器优化的设定时长,确定当前新的父代为最终父代,并转向步骤2.7;否则返回步骤2.2继续迭代;
步骤2.7、针对步骤2.6所获得的最终父代,选择其中目标函数值最小的个体构造反馈单元。
本发明基于多目标进化的人体物理运动生成方法的特点也在于:所述的步骤2.4中,在对于正个体集中的个体进行基于区域密度的多层取优算法取优时,首先采用非支配排序对正个体集中所有个体进行分层,对累计个体个数大于子代数的最后一层个体采用区域密度进行排名,选取较优个体;所述区域密度是指:任一个体与区域内所有其它个体的距离的平均值,区域密度的值越大,对应的个体更优。
与已有技术相比,本发明有益效果体现在:
1、本发明以多目标进化算法对物理控制器进行求解,进而生成人体物理运动,用户不需要陷入繁杂调参、反复试验的工作中,有效降低了控制器求解难度。
2、本发明中基于剪枝的多阶段物理优化算法,通过优化窗口舍弃较差个体,有效加快了物理运动优化求解速度。
3、本发明采用基于区域密度的多层取优算法以及禁选区域预筛选策略,达到了均匀选取下一代父代个体的目的,提高了子代中正个体的比率,从而有效提高最终父代质量,并最终提高控制器生成运动的效果。
4、本发明适应于多种不同类型的人体运动。
附图说明
图1是本发明方法流程图;
图2是本发明中基于剪枝的多阶段优化求解示意图;
图3是利用本发明方法生成的三维虚拟人体物理运动结果图;
具体实施方式
本实施例中基于多目标进化的人体物理运动生成方法是:由多刚体和铰链关节构成人体物理模型,刚体质量默认为同等密度,刚体的外形为圆柱体,通过物理控制器产生力矩驱动人体物理模型运动;物理控制器的构造过程包括:首先种群父代个体变异产生子代,采用禁选区域预筛选策略去除不满足约束的个体,并通过重采样获取新生子代;其次,新生子代通过物理仿真并计算多目标函数值,采用基于区域密度多层取优算法取优获得下一代父代;再次,通过基于剪枝的多阶段优化算法决定是否进入下一阶段优化;循环往复,经过多次迭代得到最优个体并生成物理控制器。
本实施例中由初始控制器和反馈单元共同组成物理控制器,初始控制器为微分比例控制器,即pd控制器,初始控制器利用当前姿态与目标姿态的差值产生初始力矩,反馈单元利用当前变量与理想变量差值,并通过反馈矩阵放大叠加到目标姿态,产生反馈力矩;将初始力矩与反馈力矩求和获得作用力矩,将作用力矩通过铰链关节驱动人体物理模型,生成物理运动。
本实施例中软件的物理底层采用opendynamicengine(ver0.14)软件开发包,进化算法采用开源项目shark开发库中的mo-cmaes工具包,物理仿真时间步长为0.0025秒。
本实施例中按如下过程构造控制器:
步骤1、针对人体运动数据,在一个固定的运动周期内提取关键帧,并通过时空优化算法计算获得初始控制器。
步骤2、参考图1所示流程图,按如下过程获得反馈单元:
步骤2.1、为了防止种群个体近亲繁殖,增加多样性,在反馈单元的解空间中随机采样产生子代,以子代作为初始种群。
步骤2.2、利用基于径向基函数rbf高斯核函数的支持向量机(supportvectormachine、简称svm)构造分类器,利用分类器对于种群中不满足约束条件的个体进行筛选,以提高种群个体的质量;其中高斯核函数g(xm,xn)为
其中,k为松弛因子;σ为高斯函数标准差;xm和xn为两个不同个体的参数向量;
筛选是指:若分类器判定个体a处在不满足约束条件的禁选区域,则舍弃个体a;随后,父代重新变异生成新增子代,且步长随着重采样的次数呈韦伯衰减临时性地减少,韦伯衰减函数fweibull(c)为:
其中,l为半衰周期,取值10;s为衰减的形状参数,本实施例中选取较快的衰减,将s取值2;c为重采样次数,为了避免步长太小,重采样次数最多为15。
由新增子代和未舍弃个体构成新生子代;约束条件包括:控制器生成运动达到规定数目的周期、中途不摔倒,以及模型内部不发生碰撞。
步骤2.3、利用步骤2.2获得的新生子代通过进化算法进行人体物理仿真,人体物理仿真是指由控制器产生力矩驱动人体物理模型产生运动;设置各目标函数,并计算获得新生子代个体对应的多目标函数值,利用多目标函数值评价各新生子代个体的优劣。
具体实施中,目标函数包括:根关节惩罚项eroot、姿态惩罚项epose、运动对称惩罚项esym和能量惩罚项eenergy。
根关节惩罚项eroot:对于普通运动,保证物理仿真运动与参考序列的根关节朝向尽可能相似,设计根关节惩罚项eroot为:
其中,t为控制器生成物理运动的时间段,qroot(t)为第t时刻物理仿真序列的根关节朝向四元数,qroot_ref(t)为第t时刻参考序列的根关节朝向四元数,dq(qroot(t),qroot_ref(t))为四元数qroot(t)和四元数qroot_ref(t)之间的距离。
姿态惩罚项epose:为了提高物理仿真运动效果,需保证物理仿真运动各个关节的姿态与参考序列相似,设计姿态惩罚项epose为:
其中,jnum为人体物理模型中关节的总个数,qj(t)为第t时刻物理仿真序列中第j个关节朝向四元数,qj_ref(t)为第t时刻参考序列中第j个关节朝向四元数;dq(qj(t),qj_ref(t))为四元数qj(t)与四元数qj_ref(t)之间的距离;wj为第j个关节在姿态惩罚中的权重,本实施例中认为所有关节等价,即wj取值为1。
运动对称惩罚项esym:对于行走类运动,在左脚或者右脚着地时刻,运动呈现镜面对称特性,为使行走类运动左右对称均衡,需要进行对称项惩罚,设计运动对称惩罚项esym为:
p为人体物理运动周期的个数;
q(i,j)为人体物理模型在第i次脚着地时第j个关节的朝向四元数;
qroot(i)为人体物理模型第i次脚着地时根关节朝向四元数;
能量惩罚项eenergy:人体在进化过程中,为了存储更多体力保护自己,潜意识地遵循着能量消耗最小或接近最小的准则进行运动,依据上述准则,设计能量惩罚项eenergy为:
rnum为人体物理模型中刚体数目;ir为第r个刚体的惯量;wr为第r个刚体绕父关节转动的角速度;mr为第r个刚体的质量,hr为第r个刚体质心的高度。本实施例中考察在时间段t内所有刚体的转动机械能的大小。
步骤2.4、由步骤2.3获得的新生子代个体所对应的多目标函数值,以及父代个体的多目标函数值构成集合b,将集合b划分为正个体集和负个体集,正个体集中的元素满足约束条件,负个体集中的元素处于不满足约束条件的禁选区域;利用正个体集和负个体集对于svm分类器进行更新;并采用基于区域密度的多层取优算法对于正个体集中的个体进行取优,作为下一代候选父代个体。
具体实施中,在对于正个体集中的个体进行基于区域密度的多层取优算法取优时,首先采用非支配排序对正个体集中所有个体进行分层,对累计个体个数大于子代数的最后一层个体采用区域密度进行排名,选取较优个体;区域密度是指:任一个体a与区域内所有其它个体的距离的平均值,个体a的区域密度d(a)为:
其中,lr(a)为个体a的区域内其它个体组成的集合,|lr(a)|为集合lr(a)中元素的个数;lz为lr(a)中第z个元素与个体a之间的笛卡尔距离;区域密度的值越大,对应的个体更优。
步骤2.5、采用基于剪枝的多阶段优化算法,按如下方式决定是否进入下一阶段优化:
如图2所示流程,图(2)中圆圈中的数字表示个体控制器可以完成的周期数,优化窗口表示该阶段正在该窗口周期内进行优化。
若候选父代个体中优秀个体的比率高于设定值0.2,则决定进入下一阶段进行优化,随后使当前优化窗口后移2个周期,形成最新优化窗口;舍弃候选父代中不满足最新优化窗口的个体,由未舍弃的个体组成新的父代;若候选父代个体中优秀个体的比率不高于设定值0.2,以候选父代个体组成新的父代;如图2所示,优秀个体a11是超出当前优化窗口的个体,普通个体a22是在当前优化窗口的个体,较差个体a33是低于当前优化窗口的个体。
步骤2.6、若当前优化窗口达到控制器优化的设定时长,确定当前新的父代为最终父代,并转向步骤2.7;否则返回步骤2.2继续迭代。
步骤2.7、针对步骤2.6所获得的最终父代,选择其中目标函数值最小的个体构造反馈单元。
由初始控制器与反馈单元结合得到物理控制器,物理控制器通过产生力矩驱动人体物理模型运动,生成人体物理运动,如图3所示。图3中(a)图是针对走路的人体物理运动生成效果,相邻图片之间的间隔为0.20秒;图3中(b)图是针对跑步的人体物理运动生成效果,相邻图片之间的间隔为0.13秒;图3中(c)图是针对翻滚的人体物理运动生成效果,相邻图片之间的间隔为0.27秒。图3所示的人体物理模型与地面的接触力是以直线a44所表征。
本发明的控制器可以方便快速生成长时间的稳定运动,与真实人体运动几乎一致,生成的运动在满足物理规律的基础上,具有较好的效果,在计算机仿真和计算机三维动画等领域具有较好的应用前景。