一种碰撞判定方法

文档序号:8285640阅读:530来源:国知局
一种碰撞判定方法
【技术领域】
[0001]本申请涉及计算机虚拟现实技术领域,尤其涉及一种碰撞判定方法。
【背景技术】
[0002]目前,绝大部分游戏为了达到提高对用户的游戏代入感程度的目的,通过采用各种不同的技术手段提高游戏模拟现实的程度,给用户带来更加逼真的游戏体验。尤其对于动作、格斗类游戏来说,提升游戏代入感的最重要途径就是可以在角色战斗过程中尽量提高一方对另一方攻击或防御动作的判定精确度,获得更加准确的判定结果。这样不仅可以带给用户更多更为真实的游戏体验,激发玩家的兴趣,并且愈加成为各种不同类型的游戏在技能系统中不可分割的重要组成部分。
[0003]现有技术中传统的碰撞检测方法为:游戏系统对于每个角色对象都维护一个自身在游戏场景中的逻辑点位置,其他角色对象在技能中产生判定的时候,只能对判定限定一个大致的范围,在这个范围中的角色对象就会被判定成功,产生被击中的效果。如果不在该区域中,则判定失败。该方案的主要缺点是只能依据逻辑点的位置进行判定检查,只能对角色在或者不在某个区域中进行判定,判定内容不够灵活细致,无法根据角色当前的具体动作进行身体上具体部位的碰撞检测。
[0004]为了对角色身体具体部位进行碰撞检测,现有技术中还提出了如下碰撞检测方法:游戏中的每个角色对象在逻辑层面会被划分为若干的身体部位,然后在游戏过程中使用程序算法在每一帧实时生成出划分好的身体的各个部位的轴对齐包围盒(AABB,AxisAligned Bounding Box)或者有向包围盒(OBB,Oriented Bounding Box),然后将角色自身的包围盒与其他角色的包围盒进行碰撞检测。该方案虽然传统方式的基础上做出了一些改进,但是依然存在如下缺点:
[0005]由于角色对象的动画每帧都会发生变化,需要每一帧都对身体各个部位的包围盒进行重新计算生成,效率不高,加重了对CPU的负载和消耗;
[0006]因为AABB包围盒与OBB包围盒都是六面体包围盒,这就导致了用包围盒描述的身体部位与原本的身体部位差距过大,从而导致最终判定结果的不精确。如果采用AABB,AABB的轴向是锁定的,即AABB的长宽高必须和场景的XYZ轴的朝向一致,假想场景中有一个人,如果对大刀旋转45度,那么如果想用AABB包围盒的完全包围住该角色,必须会有很大的空间是浪费掉的,不会相对比较准确地包裹住身体。如果采用0BB,可以一定程度上避免判定不精确的问题,但是OBB仍然存在每帧需要根据角色的姿态和动画动态生成,开销比较大的问题。

【发明内容】

[0007]本申请提供了一种碰撞判定方法,可以比较准确地描述身体具体部位的碰撞,并且碰撞计算开销较小。
[0008]本申请实施例提供的一种碰撞判定方法,包括:
[0009]A、确定角色身体上需要进行碰撞判定的部位;
[0010]B、对于所述每一个部位分别设置至少一个球形包围盒,将所述球形包围盒绑定在角色骨骼上;
[0011]C、所述球形包围盒的位置随着骨骼的运动而运动,在运动过程中判断所述球形包围盒是否与其他对象发生碰撞。
[0012]较佳地,所述其他对象包括其他角色的骨骼上绑定的球形包围盒。
[0013]较佳地,所述球形包围盒的参数包括半径、中心点位置和中心点相对于该球形包围盒所绑定的骨骼的偏移值。
[0014]较佳地,步骤B进一步包括:设置球形包围盒的属性,根据球形包围盒属性将包围盒分为两种:攻击包围盒与受击包围盒;
[0015]步骤C所述在运动过程中判断所述球形包围盒是否与其他对象发生碰撞包括:若所述球形包围盒为攻击包围盒,进行攻击检测;所述攻击检测的含义为判断该攻击包围盒是否与目标对象的受击包围盒发生碰撞;
[0016]若所述球形包围盒为受击包围盒,进行受击检测;所述受击检测的含义为判断该受击包围盒是否与目标对象的攻击包围盒发生碰撞。
[0017]较佳地,步骤C所述在运动过程中判断所述球形包围盒是否与其他对象发生碰撞进一步包括:当角色做出攻击动作时,激活与该攻击动作对应的身体部位对应的攻击包围盒,激活后的攻击包围盒进行攻击检测;攻击动作结束后去激活与该攻击动作对应的身体部位对应的攻击包围盒;
[0018]未激活的攻击包围盒进行受击检测。
[0019]较佳地,所述激活与该攻击动作对应的身体部位对应的攻击包围盒的步骤进一步包括:增加所述攻击包围盒的半径。
[0020]从以上技术方案可以看出,根据三维图形仿真中建立三维模型的原理,将碰撞球绑定在骨骼上,跟随骨骼的运动而运动,并且对包围盒提供了较为灵活的控制方式,从而可以实现更为精准的碰撞判断。相对于现有技术,采用球形碰撞体相较于六面体碰撞体大大提高了碰撞检测的准确度,而且避免了每帧都需要对碰撞体的生成运算,在运行效率方面也有显著改善。
【附图说明】
[0021]图1为三维图形仿真中角色建模示意图;
[0022]图2为本申请实施例中球形包围盒设置示意图;
[0023]图3为本申请实施例中攻击包围盒在攻击时激活的示意图。
[0024]图4为本申请实施例提供的碰撞判定方法流程图。
【具体实施方式】
[0025]为使本申请技术方案的技术原理、特点以及技术效果更加清楚,以下结合具体实施例对本申请技术方案进行详细阐述。
[0026]在三维图形仿真中,角色建模分为两个部分,首先是创建角色的骨骼,然后是在该骨骼的基础上进行蒙皮操作。如图1所示,多个三角形构成角色骨骼,模型是在该骨骼基础上的蒙皮。在角色建模完成后,由3D图形引擎驱动骨骼位置变化,然后带动蒙皮模型发生变化,最终形成角色做出各种动作的效果。
[0027]根据三维图形仿真中角色建模的原理,本申请提出了如下碰撞检测方案:
[0028]采用多个球形包围盒来描述身体部位。这样做的好处是可以更准确地将身体部位包围起来,极大减小采用六面体包围盒产生的包围身体不准确的问题。
[0029]球形包围盒的设置方法与参数:首先选定一块骨骼,然后将该包围盒中心附在该骨骼上,根据骨骼的运动而运动。参数主要包括中心点位置和球体半径。可选地,参数可以进一步包括中心点相对于该球形包围盒所绑定的骨骼的偏移值。设置偏移值的目的是在认为放在骨骼点上不够精确的时候
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1