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

文档序号:9788196阅读:434来源:国知局
实现角色模型局部实时运动的方法及系统的制作方法
【技术领域】
[0001]本公开总体涉及计算机图形技术领域,具体涉及一种实现角色模型局部实时运动的方法及系统。
【背景技术】
[0002]目前游戏制作领域普遍采用骨骼动画的方法,S卩:对于角色模型,创建其相应的骨骼,美术制作人员将模型上的顶点关联到不同的骨骼,并设置好不同的影响权重,接下来美术制作人员会制作好角色模型骨骼的动画序列,然后由骨骼来驱动模型上顶点的运动,达到角色模型的动画效果,最后这种制作好的角色模型动画效果会在游戏内播放,呈现给玩家。显然这种骨骼动画方式的最终表现效果完全取决于美术制作人员预先设计好的骨骼动画序列,无法根据角色模型的实际运动情况有一些真实自然的反应,但为了在游戏达到更加逼真的效果,我们希望角色模型的某些局部能够实时地、自然地运动。比如游戏的女性角色模型,往往具有比较丰满的胸部和臀部,为了能够更好地吸引玩家,我们希望角色模型的这些部位能够随着角色模型的跑动、跳跃、翻滚、受击等产生比较自然的运动效果。比如,当角色模型进行上下跳跃的时候,其胸部会有一种自然的上下运动的效果,并且这种效果在游戏里需要实时显示出来。因此就需要一种让角色模型的某些局部能够在游戏随着角色模型的实际运动而自然运动的方法。
[0003]为了让角色模型上的某些局部能够在各种运动情况下能够产生实时、自然的运动效果,一般的技术方案是选取角色模型上需要实时运动的那部分顶点,将这部分的顶点交给第三方的物理引擎来模拟它们的运动。为了达到比较好的效果,需要在物理引擎中建立顶点之间的各种约束条件,比如相邻顶点之间有一些距离上的约束(需要美术制作人员在物理引擎配套提供的编辑工具中进行设置和调整)。选中的那部分顶点中在最外面的和非物理模拟顶点相邻的那部分顶点是边界顶点,会遵从角色模型原来的运动,即一种边界约束条件,剩下的那部分顶点则会根据建立好的各种约束条件交给物理引擎实时计算出运动的位置。上面这种实现方法通常可以达到令人满意的效果,但实际应用到游戏开发中也存在一些不足之处。首先,使用第三方的物理引擎会给游戏运行时带来额外的计算开销,特别是在需要模拟的顶点数目比较多的情况下,可能会给游戏带来性能上的问题。其次,由于是在角色模型的顶点级别进行模拟,所以对于每个角色模型,美术制作人员都需要用物理引擎提供的编辑工具在顶点上进行各种参数的设置和调整,这样就大大增加了制作的时间成本。比如一种常见的情况是,在实际制作中,角色模型身上的服装往往是和角色模型的身体统一制作在一个角色模型上,如果一个角色模型可以更换多套服装,则每一套都需要美术制作人员对上面的某些局部进行额外的处理,这无疑会增加很多制作成本。
[0004]因此,针对角色模型的局部运动需要一种新的构建方法及系统。
[0005]在所述【背景技术】部分公开的上述信息仅用于加强对本公开的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。

【发明内容】

[0006]本公开提供一种实现角色模型局部实时运动的方法及系统,能够让角色模型的某些局部随着角色模型的运动而自然地运动,从而使得角色模型能够具有更加逼真的动画表现效果。
[0007]本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
[0008]根据本公开的一方面,一种实现角色模型局部实时运动的方法,包括:
[0009]将虚设骨骼与其它骨骼连接的端点作为第一质点,另一个端点作为第二质点,所述虚设骨骼为在需要运动的局部部位增加的虚拟骨骼,所述虚设骨骼具有骨骼蒙皮;
[0010]在角色运动过程中,计算所述第二质点的位置;
[0011]根据所述第二质点的位置,使所述虚设骨骼做相应的旋转。
[0012]根据本公开的一实施方式,所述第一质点和所述第二质点之间通过直线段相连,直线段的长度为所述虚设骨骼长度L。
[0013]根据本公开的一实施方式,计算所述第二质点的位置至少遵循如下条件之一:
[0014]a.所述第一质点随着角色模型的其它骨骼运动;
[0015]b.所述第一质点和所述第二质点之间的距离保持为L;
[0016]c.所述第二质点受到重力的作用,重力加速度为g,重力方向定义在世界空间中;
[0017]d.所述第二质点受到方向为沿着初始所述第一质点与所述第二质点连线方向的一恢复力的作用,所述恢复力产生的加速度为a,所述恢复力的方向定义在角色模型的局部空间中;当角色发生旋转的时候,使所述恢复力做相应的旋转,通过矩阵M进行从所述局部空间转换到所述世界空间的旋转变换。
[0018]根据本公开的一实施方式,按照下述近似数值方法计算所述第二质点的位置:
[0019]a.根据如下公式计算得到所述第二质点的更新速度疒,
[0020]ψ =V(i)+g*t+M*a*t;
[0021]b.根据如下公式计算得到所述第二质点的更新位置K,
[0022]P7 =p(i)+V/*t;
[0023]c.根据如下公式对更新位置P'进行修正,得到所述第二质点在第i + Ι帧的实际位置P(i+1),
[0024]P(i+l)=Pa+L*(P/-Pa)/|P/_Pa ;
[0025 ]其中,V (i)为所述第二质点在第i帧的速度,P (i)为所述第二质点在第i帧的位置,t为第i帧和第i + Ι帧之间的时间间隔,Pa是所述第一质点在第i+Ι帧的位置,P(i+1)为所述第二质点在第i+Ι帧的位置。
[0026]根据本公开的一实施方式,根据如下公式计算所述第二质点的速度:
[0027]V(i+l) = (P(i+l)-P(i))/t,
[0028]其中,V(i+1)为所述第二质点在第i+Ι帧的速度。
[0029]根据本公开的一实施方式,所述使所述虚设骨骼做相应的旋转包括使所述虚设骨骼旋转后的方向与新的所述第一质点与所述第二质点连线方向一致。
[0030]根据本公开的一实施方式,还包括:通过所述骨骼蒙皮使得所述虚设骨骼的旋转带动角色模型上相应部位顶点的运动。
[0031]根据本公开的一实施方式,所述虚设骨骼不具备动画信息。
[0032]根据本公开的一实施方式,所述第二质点为自由端点。
[0033]根据本公开的另一方面,一种实现角色模型局部实时运动的系统,包括:
[0034]骨骼分析单元,用于将虚设骨骼与其它骨骼连接的端点作为第一质点,另一个端点作为第二质点,所述虚设骨骼为在需要运动的局部部位增加的虚拟骨骼,所述虚设骨骼具有骨骼蒙皮;
[0035]计算单元,用于在角色运动过程中,计算所述第二质点的位置;
[0036]旋转单元,用于根据所述第二质点的位置,使所述虚设骨骼做相应的旋转。
[0037]根据本公开的一实施方式,所述第一质点和所述第二质点之间通过直线段相连,直线段的长度为所述虚设骨骼长度L。
[0038]根据本公开的一实施方式,所述计算单元计算第二质点的位置至少遵循如下条件之一:
[0039]a.所述第一质点随着角色模型的其它骨骼运动;
[0040]b.所述第一质点和所述第二质点之间的距离保持为L;
[0041 ] c.所述第二质点受到重力的作用,重力加速度为g,重力方向定义在世界空间中;
[0042]d.所述第二质点受到方向为沿着初始所述第一质点与所述第二质点连线方向的一恢复力的作用,所述恢复力产生的加速度为a,所述恢复力的方向定义在角色模型的局部空间中;当角色发生旋转的时候,使所述恢复力做相应的旋转,通过矩阵M进行从所述局部空间转换到所述世界空间的旋转变换。
[0043]根据本公开的一实施方式,所述计算单元按照下述近似数值方法计算所述第二质点的位置:
[0044]a.根据如下公式计算得到所述第二质点的更新速度疒,
[0045]V7 =V(i)+g*t+M*a*t;
[0046]b.根据如下公式计算得到所述第二质点的更新位置K,
[0047]P7 =p(i)+V/*t;
[0048]c.根据如下公式对更新位置P'进行修正,得到所述第二质点在第i + Ι帧的实际位置P(i+1),
[0049]P(i+l)=Pa+L*(P/-Pa)/|P/_Pa ;
[0050 ]其中,V (i)为所述第二质点在第i帧的速度,P (i)为所
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1