吴旭琤
(上海飞机设计研究院四性与产品支援部,中国 上海 201210)
【摘 要】提出了一种对虚拟人运动关键帧基坐标的修正方法,对基坐标引入修正因子,采用逆运动学方法,调整了虚拟人姿态,解决了虚拟人穿透障碍的失真现象。实例验证了该方法可以有效避免基坐标变化时的失真现象,提高虚拟人运动的自然逼真程度,同时具有较高的仿真效率。
教育期刊网 http://www.jyqkw.com
关键词 维修仿真;关键帧插值;虚拟人;虚拟现实
作者简介:吴旭琤(1987—),男,硕士,主要研究方向为飞机维修性工程。
虚拟维修已经成为维修性分析的有效手段,设计人员可以在虚拟环境中,对产品可视、可达、操作空间以及人体舒适度等进行分析,从而在设计阶段可以做出前瞻性的决策与优化实施方案[1]。常用的虚拟维修工程仿真软件有Delmia,Jack等[2],虽然这些软件很大程度上已经能帮助研究人员进行维修性分析,但在人体运动方面仍有不少问题有待改进。
本文针对在虚拟人基坐标发生变化时,关键帧插值出现失真现象,考虑基坐标在真实运动中的变化情况,引入修正因子进行修正,并通过仿真实例来验证模型的有效性。
1 虚拟人运动分析
在虚拟维修仿真中,常采用逆运动学算法获得关键帧,再通过关键帧插值获得连续的动作。当基坐标发生变化时,一般的关键帧插值算法会分别对关节角和基坐标进行插值,两者以相同速率变化,而这与实际情况不相符,以下蹲动作为例,会出现穿透障碍的失真现象,如Delmia动作库中的下蹲动作,双脚在下蹲过程中穿过地面。此时,往往需要添加较多的关键帧或使用碰撞检测功能来防止失真现象。但前者需要花费更多的人力时间,影响仿真工作的效率,而后者则会消耗更多的计算机资源,在复杂场景下可能会影响仿真的实时性。发生这一问题的原因是人在实际运动时,基坐标并非匀速运动,因此,在插值时需要对基坐标进行一定的修正。
2 关键帧插值的基坐标修正方法
2.1 逆运动学算法求解
本文的虚拟人采用多刚体系统的骨骼模型,全身有34个关节自由度,如图1所示。
对于逆运动学问题求解,是已知运动链的末端控制点的目标姿态,计算运动链各关节的关节角度[3]。利用Jacobian矩阵可以建立两者关系,即:
△x=J△q
其中,J为Jacobian矩阵,由运动链的几何特征唯一确定。
而逆运动学问题的解通常可以表示为:
△q=J+△x
其中,J+=JT(JJT)-1为Jacobian矩阵的Moore-Penrose广义逆。
2.2 关键帧插值的基坐标修正
根据逆运动学算法迭代求解得到的虚拟人姿态进行关键帧插值,关节角与末端控制点的关系为:
x=T(q)B
中,B为基坐标,T(q)为基坐标与末端控制点的坐标变换矩阵。
取修正因子h=L-x,L为环境限制边界,无限制的自由度分量取Li=xi。以地面限制为例,假设地面坐标为z,则:
L=[x1,x2,x3,x4,x5,x6]T
h=[0,0,z-x3,0,0,0]T
修正后的基坐标B′=B+h。
修正后的末端控制点x′=T(q)B′
通过对基坐标的修正,可以消除与限制边界的干涉量,达到姿态修正的目的。
3 仿真实例
以虚拟人下蹲动作为例,使用逆运动学算法求出下蹲后的姿态,使用带基坐标修正的关键帧插值算法获得完整的下蹲动作,整个运动过程中虚拟人都没有与地面发生干涉,如图2所示。
本文中所使用的仿真实例是在AMD A10-5750M(2.5GHz)CPU,内存4GB的PC机上完成,平均姿态计算时间为0.068s,可以流畅地完成仿真,具有较好的实时性。
4 总结
为了解决仿真中基坐标发生变化时出现的失真现象,本文提出了一种引入修正因子的关键帧插值算法,对基坐标进行了修正,所获得虚拟人仿真动作符合真实情况,同时,具有较好的实时性。
教育期刊网 http://www.jyqkw.com
参考文献
[1]刘佳,刘毅.虚拟维修技术发展综述[J].计算机辅助设计与图形学学报,2009,21(11):1519-1534.
[2]郝建平,蒋科艺,王松山,等.虚拟维修仿真理论与技术[M].北京:国防工业出版社,2008.
[3]李石磊,梁加红,李猛,等.基于姿态库和PIK算法的虚拟人全身姿态生成[J].系统仿真学报,2011,23(12):2693-2700.
[责任编辑:曹明明]