实现角色模型局部实时运动的方法及系统的制作方法_3

文档序号:9788196阅读:来源:国知局
的效果;
[0085]c.第二质点B受到重力的作用,重力加速度为g,重力方向是定义在世界空间中的;
[0086]d.所述第二质点受到方向为沿着初始所述第一质点与所述第二质点连线方向的一恢复力的作用,所述恢复力产生的加速度为a,所述恢复力的方向定义在角色模型的局部空间中;当角色发生旋转的时候,使所述恢复力做相应的旋转,通过矩阵M进行从所述局部空间转换到所述世界空间的旋转变换。
[0087]需要说明的是,上述条件c和d是为了获得角色模型胸部真实自然的效果而引入的。对于条件C,在真实世界中,显然角色模型的胸部会受到重力的影响,有向下运动的趋势。对于条件d,加入恢复力的作用是为了让骨骼能够有一种回复到初始位置的趋势,即模拟胸部肌肉回弹的现象,保持原来的胸部形状和方向。另外需要注意的是,由于恢复力的作用是保持局部形状,因此它的方向是定义在角色模型的局部空间中的,即当角色模型发生上下左右旋转的时候,恢复力也会做相应的旋转。为了便于后面描述,假定通过矩阵M进行从局部空间转换到世界空间的旋转变换,M是一个3*3的矩阵。恢复力产生的加速度a与世界空间中的重力加速度g是同一量级的,M和a可由美术制作人员根据角色模型胸部的运动效果自行定义和调整,但本公开不以此为限。而相对地,重力则是定义在世界空间中的,即不会随着角色的旋转而变化。
[0088]在建立上述的物理模型后,我们在每帧中,根据角色的运动,实时计算出第二质点B的位置。本公开给出一种近似数值的方法计算第二质点B的位置。
[0089]a.假设第二质点B在每一帧中的位置为P(i),速度为V(i),每帧之间的时间间隔为t,则相邻两帧之间第二质点B的更新位置P'和更新速度疒可根据公式(I)计算得到,即根据加速度来更新第二质点B的速度,其中M*a是将恢复力产生的加速度从局部空间中转换到世界空间中。其中,位置是三维坐标,重力加速度和恢复力加速度都是三维的向量。第二质点B的初始位置由角色模型初始位置决定,初始速度通常设为零即可,
[0090]
[0091]b.在得到第二质点B的更新速度V'后,根据公式(2)计算得到第二质点B的更新位置K,即根据更新速度来产生第二质点B的一个临时的新位置K,
[0092]P7 =P(i)+V/*t(2)0
[0093]c.根据公式(3)对更新位置P'进行修正,得到第二质点B在第i+Ι帧的实际位置P(i+ 1),即对这个临时位置K进行修正,使得第一质点A和第二质点B之间的长度约束可以被满足,其中Pa是第一质点A在第i+Ι帧的位置,是由角色模型的实际运动所确定的,
[0094]P(i+l)=Pa+L*(P/-Pa)/|P/_Pa| (3)。
[0095]d.根据公式(4)修正第二质点B在第i + Ι帧的速度V(i + 1),作为第i+2帧的初始速度,即根据第二质点B的实际位置修正其速度,
[0096]V(i+l) = (P(i+l)-P(i))/t(4)0
[0097]上面是计算第二质点B的位置的一种近似数值方法,已经可以取得较好的结果,在实际使用中也可以采用其它的方法来计算第二质点B的位置,本公开不以此为限。
[0098]图3示出根据本公开示例实施方式的角色模型胸部实时运动的示意图。
[0099]如图3所示,根据虚设骨骼Ja的端点第二质点B的运动,将虚设骨骼Ja进行相应的旋转,并驱动角色模型胸部的运动。角色模型在没有动作的情况下,胸部也没有形变,虚设骨骼Ja在其初始位置。
[0100]当角色模型向上运动,即做出跳跃等动作时,第一质点A作为骨骼Jb的终点随骨骼Jb向上运动,同时作为虚设骨骼Ja的起点,带动虚设骨骼Ja进行相应运动,第二质点B作为虚设骨骼Ja的终点,在重力的作用下向下运动,AB的连线方向与初始位置相比发生了改变,虚设骨骼Ja向下旋转,虚设骨骼Ja的旋转带动角色模型上相应部位顶点的运动,角色模型胸部产生向下的形变。
[0101]与此同时,第二质点B受到沿着初始AB连线方向的恢复力的作用,第二质点B在该恢复力的作用下向上运动。同时,在重力的作用下,角色模型下落进行向下运动,骨骼Jb向下运动,带动第一质点A向下运动,第一质点A带动虚设骨骼Ja做相应的向下运动,而第二质点B在恢复力的作用下向上运动,使虚设骨骼Ja向上旋转,旋转后的方向与新的AB连线方向一致,虚设骨骼Ja的旋转带动角色模型上相应部位顶点的运动,角色模型胸部产生向上回弹的效果。角色模型的胸部随着角色模型的跳跃等动作,在重力及恢复力的共同作用下,产生实时自然的运动和形变。
[0102]本公开将虚设骨骼Ja进行旋转的方法是使得旋转后的虚设骨骼Ja方向能够和新的质点AB的连线方向一致。在这之后,通过之前预处理阶段的骨骼蒙皮,能够让虚设骨骼Ja的旋转带动角色模型上相应部位顶点的运动,从而达到角色模型胸部实时自然运动的效果O
[0103]应清楚地理解,本公开描述了如何形成和使用特定示例,但本公开的原理不限于这些示例的任何细节。相反,基于本公开公开的内容的教导,这些原理能够应用于许多其它实施方式。
[0104]图4示出根据本公开示例实施方式的实现角色模型胸部实时运动的系统组成示意图。
[0105]本公开针对的是角色模型的胸部,但本公开不以此为限,在角色模型运动过程中需要真实自然运动效果的部位均可,例如,还可以是角色模型的臀部等。
[0106]如图4所示,实现角色模型胸部实时运动的系统200,包括:骨骼分析单元201,用于将虚设骨骼Ja与其它骨骼连接的端点作为第一质点A,另一个端点作为第二质点B,其为自由端点,虚设骨骼Ja为在需要运动的角色胸部增加的虚拟骨骼,虚设骨骼Ja具有骨骼蒙皮;计算单元202,用于在角色模型运动中计算第二质点B的位置;旋转单元203,用于根据第二质点B的位置,使虚设骨骼Ja做相应的旋转,虚设骨骼Ja旋转后的方向与新的第一质点A与第二质点B连线方向一致。
[0107]其中,第一质点A和第二质点B之间通过直线段相连,直线段的长度为虚设骨骼Ja长度L。
[0108]计算单元202计算第二质点B的位置至少遵循如下条件之一:
[0109]a.第一质点A随着角色模型上其它骨骼运动,即作为骨骼Jb的终点,随着骨骼Jb运动,相当于是一种边界约束条件;
[0110]b.第二质点B和第一质点A之间的距离保持为L,即虚设骨骼Ja的运动是刚性的,在角色模型运动过程中,骨骼长度不会发生变化,但本公开不以此为限。本领域技术人员能够知晓,如果虚设骨骼Ja的运动及长度在一定弹性范围内波动,亦能产生本公开的效果;
[0111]c.第二质点B受到重力的作用,重力加速度为g,重力方向是定义在世界空间中的;
[0112]d.所述第二质点受到方向为沿着初始所述第一质点与所述第二质点连线方向的一恢复力的作用,所述恢复力产生的加速度为a,所述恢复力的方向定义在角色模型的局部空间中;当角色发生旋转的时候,使所述恢复力做相应的旋转,通过矩阵M进行从所述局部空间转换到所述世界空间的旋转变换。
[0113]计算单元202按照下述近似数值方法计算所述第二质点B的位置:
[0114]a.假设第二质点B在每一帧中的位置为P(i),速度为V(i),每帧之间的时间间隔为t,则相邻两帧之间第二质点B的更新位置P'和更新速度疒可根据公式(I)计算得到,即根据加速度来更新第二质点B的速度,其中M*a是将恢复力产生的加速度从局部空间中转换到世界空间中。其中,位置是三维坐标,重力加速度和恢复力加速度都是三维的向量。第二质点B的初始位置由角色模型初始位置决定,初始速度通常设为零即可,
[0115]
[0116]b.在得到第二质点B的更新速度V'后,根据公式(2)计算得到第二质点B的更新位置K,即根据更新速度来产生第二质点B的一个临时的新位置K,
[0117]P7 =P(i)+V/*t(2)0
[0118]c.根据公式(3)对更新位置P'进行修正,得到第二质点B在第i+Ι帧的实际位置P(i+ 1),即对这个临时位置K进行修正,使得第一质点A和第二质点B之间的长度约束可以被满足,其中Pa是第一质点A在第i+Ι帧的位置,是由角色模型的实际运动所确定的,
[0119]P(i+l)=Pa+L*(P/-Pa)/|P/_Pa| (3)。
[0120]d.根据公式(4)修正第二质点B在第i + Ι帧的速度V(i + 1),作为第i+2帧的初始速度,即根据最后第二质点B的实际
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1