利用碰撞检测算法可以得到物体的碰撞位置和碰撞深度,但是还不足以对物体之间的碰撞效果进行仿真,还需要计算物体间的接触力才能对物体发生碰撞后的运动状态进行计算。虚拟环境中物体接触力的仿真模型有两种,即连续接触模型和罚函数法接触模型。
罚函数法实质上是将接触碰撞界面的边界非线性转化为材料非线性来进行接触碰撞界面的计算。其原理是,在每一个时间间隔首先搜寻各从点是否穿透其靶点,没有穿透不做任何处理;如果穿透,则在该从点和其靶点之间引入一个较大的法向接触力,法向接触力正比于从点相对于其靶点的穿透量和表征接触碰撞界面刚度的罚因子,从而使穿透部分自动回到平衡位置。在物理上相当于在从点与靶点之间放置一个法向弹簧,以限制两者之间的穿透。“对称罚函数法”则是同时对每个主点也做上述类似处理。罚函数法不增加方程组的最后总自由度,方程组的系数矩阵保持正定,容易在现有显式程序中实现,数值求解比较方便,具有较高的计算效率。
在连续接触力模型中,用拉普拉斯乘子限制接触体之间的穿透,能精确执行接触运动学约束条件。但是,连续接触力模型在求解时需引入拉普拉斯乘子,增加了方程组的未知量数目和系统的总自由度,并且涉及未知接触力的联立方程求解,需要采用迭代方法计算,提高了计算费用,只限用于隐式算法中。
在VR环境中要计算的接触碰撞力往往数以百计,采用连续接触模型会极大地增加计算负荷,拖慢画面更新速度。因此,在VR环境中普遍采用罚函数法接触模型。
罚函数法接触模型基于广义胡克定律,设置物体的刚度参数和阻尼参数,以两碰撞物体的相对穿透深度与相对速度作为输入参数,得到物体的接触力,接触力方向为接触点的法线方向,指向物体内侧。碰撞力的计算公式为
式中,Fc为两物体间的接触力;x,为两个物体的相对穿透深度与相对速度;k为两个物体表面接触刚度;c为两个物体表面接触阻尼。(www.xing528.com)
参数k和参数c的取值一般参照物体弹性与塑性特性,如Hertz接触定律等。但是,需要考虑系统的计算精度与更新频率,若更新频率较低,则要适当调低刚度取值,否则容易造成瞬态接触力过大,导致系统崩溃等现象。
对接触表面的摩擦力仿真,可参考库仑摩擦模型,将接触力作为输入参数,计算得到表面摩擦力,摩擦力方向与两接触物体相对运动方向相反。库仑摩擦模型的公式为
Ff=fFc (3.35)
式中,Ff为表面摩擦力;f为库仑摩擦系数,f的取值可参考物体静摩擦系数,或者根据实验结果自行选取。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。