CN104606887A - 一种碰撞判定方法 - Google Patents
一种碰撞判定方法 Download PDFInfo
- Publication number
- CN104606887A CN104606887A CN201410841317.8A CN201410841317A CN104606887A CN 104606887 A CN104606887 A CN 104606887A CN 201410841317 A CN201410841317 A CN 201410841317A CN 104606887 A CN104606887 A CN 104606887A
- Authority
- CN
- China
- Prior art keywords
- attack
- bounding box
- sphere
- bounding
- bounding boxes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本申请公开了一种碰撞判定方法,包括:A.确定角色身体上需要进行碰撞判定的部位;B.对于所述每一个部位分别设置至少一个球形包围盒,将所述球形包围盒绑定在角色骨骼上;C.所述球形包围盒的位置随着骨骼的运动而运动,在运动过程中判断所述球形包围盒是否与其他对象发生碰撞。本申请方案可以比较准确地描述身体具体部位的碰撞,并且碰撞计算开销较小。
Description
技术领域
本申请涉及计算机虚拟现实技术领域,尤其涉及一种碰撞判定方法。
背景技术
目前,绝大部分游戏为了达到提高对用户的游戏代入感程度的目的,通过采用各种不同的技术手段提高游戏模拟现实的程度,给用户带来更加逼真的游戏体验。尤其对于动作、格斗类游戏来说,提升游戏代入感的最重要途径就是可以在角色战斗过程中尽量提高一方对另一方攻击或防御动作的判定精确度,获得更加准确的判定结果。这样不仅可以带给用户更多更为真实的游戏体验,激发玩家的兴趣,并且愈加成为各种不同类型的游戏在技能系统中不可分割的重要组成部分。
现有技术中传统的碰撞检测方法为:游戏系统对于每个角色对象都维护一个自身在游戏场景中的逻辑点位置,其他角色对象在技能中产生判定的时候,只能对判定限定一个大致的范围,在这个范围中的角色对象就会被判定成功,产生被击中的效果。如果不在该区域中,则判定失败。该方案的主要缺点是只能依据逻辑点的位置进行判定检查,只能对角色在或者不在某个区域中进行判定,判定内容不够灵活细致,无法根据角色当前的具体动作进行身体上具体部位的碰撞检测。
为了对角色身体具体部位进行碰撞检测,现有技术中还提出了如下碰撞检测方法:游戏中的每个角色对象在逻辑层面会被划分为若干的身体部位,然后在游戏过程中使用程序算法在每一帧实时生成出划分好的身体的各个部位的轴对齐包围盒(AABB,Axis Aligned Bounding Box)或者有向包围盒(OBB,Oriented Bounding Box),然后将角色自身的包围盒与其他角色的包围盒进行碰撞检测。该方案虽然传统方式的基础上做出了一些改进,但是依然存在如下缺点:
由于角色对象的动画每帧都会发生变化,需要每一帧都对身体各个部位的包围盒进行重新计算生成,效率不高,加重了对CPU的负载和消耗;
因为AABB包围盒与OBB包围盒都是六面体包围盒,这就导致了用包围盒描述的身体部位与原本的身体部位差距过大,从而导致最终判定结果的不精确。如果采用AABB,AABB的轴向是锁定的,即AABB的长宽高必须和场景的XYZ轴的朝向一致,假想场景中有一个人,如果对大刀旋转45度,那么如果想用AABB包围盒的完全包围住该角色,必须会有很大的空间是浪费掉的,不会相对比较准确地包裹住身体。如果采用OBB,可以一定程度上避免判定不精确的问题,但是OBB仍然存在每帧需要根据角色的姿态和动画动态生成,开销比较大的问题。
发明内容
本申请提供了一种碰撞判定方法,可以比较准确地描述身体具体部位的碰撞,并且碰撞计算开销较小。
本申请实施例提供的一种碰撞判定方法,包括:
A、确定角色身体上需要进行碰撞判定的部位;
B、对于所述每一个部位分别设置至少一个球形包围盒,将所述球形包围盒绑定在角色骨骼上;
C、所述球形包围盒的位置随着骨骼的运动而运动,在运动过程中判断所述球形包围盒是否与其他对象发生碰撞。
较佳地,所述其他对象包括其他角色的骨骼上绑定的球形包围盒。
较佳地,所述球形包围盒的参数包括半径、中心点位置和中心点相对于该球形包围盒所绑定的骨骼的偏移值。
较佳地,步骤B进一步包括:设置球形包围盒的属性,根据球形包围盒属性将包围盒分为两种:攻击包围盒与受击包围盒;
步骤C所述在运动过程中判断所述球形包围盒是否与其他对象发生碰撞包括:若所述球形包围盒为攻击包围盒,进行攻击检测;所述攻击检测的含义为判断该攻击包围盒是否与目标对象的受击包围盒发生碰撞;
若所述球形包围盒为受击包围盒,进行受击检测;所述受击检测的含义为判断该受击包围盒是否与目标对象的攻击包围盒发生碰撞。
较佳地,步骤C所述在运动过程中判断所述球形包围盒是否与其他对象发生碰撞进一步包括:当角色做出攻击动作时,激活与该攻击动作对应的身体部位对应的攻击包围盒,激活后的攻击包围盒进行攻击检测;攻击动作结束后去激活与该攻击动作对应的身体部位对应的攻击包围盒;
未激活的攻击包围盒进行受击检测。
较佳地,所述激活与该攻击动作对应的身体部位对应的攻击包围盒的步骤进一步包括:增加所述攻击包围盒的半径。
从以上技术方案可以看出,根据三维图形仿真中建立三维模型的原理,将碰撞球绑定在骨骼上,跟随骨骼的运动而运动,并且对包围盒提供了较为灵活的控制方式,从而可以实现更为精准的碰撞判断。相对于现有技术,采用球形碰撞体相较于六面体碰撞体大大提高了碰撞检测的准确度,而且避免了每帧都需要对碰撞体的生成运算,在运行效率方面也有显著改善。
附图说明
图1为三维图形仿真中角色建模示意图;
图2为本申请实施例中球形包围盒设置示意图;
图3为本申请实施例中攻击包围盒在攻击时激活的示意图。
图4为本申请实施例提供的碰撞判定方法流程图。
具体实施方式
为使本申请技术方案的技术原理、特点以及技术效果更加清楚,以下结合具体实施例对本申请技术方案进行详细阐述。
在三维图形仿真中,角色建模分为两个部分,首先是创建角色的骨骼,然后是在该骨骼的基础上进行蒙皮操作。如图1所示,多个三角形构成角色骨骼,模型是在该骨骼基础上的蒙皮。在角色建模完成后,由3D图形引擎驱动骨骼位置变化,然后带动蒙皮模型发生变化,最终形成角色做出各种动作的效果。
根据三维图形仿真中角色建模的原理,本申请提出了如下碰撞检测方案:
采用多个球形包围盒来描述身体部位。这样做的好处是可以更准确地将身体部位包围起来,极大减小采用六面体包围盒产生的包围身体不准确的问题。
球形包围盒的设置方法与参数:首先选定一块骨骼,然后将该包围盒中心附在该骨骼上,根据骨骼的运动而运动。参数主要包括中心点位置和球体半径。可选地,参数可以进一步包括中心点相对于该球形包围盒所绑定的骨骼的偏移值。设置偏移值的目的是在认为放在骨骼点上不够精确的时候,可以适量添加一些偏移。
设置包围盒的属性,根据包围盒属性将包围盒分为两种:攻击包围盒与受击包围盒,如图2所示,201表示攻击包围盒,分布于角色四肢,202表示受击包围盒,只有攻击包围盒允许进行攻击判定,但是目标对象的攻击包围盒与受击包围盒都可进行受击判定。这样做的好处是可以更加清晰的划分出各个身体部分的功能,并且在进行碰撞检测的时候,可以根据包围盒的属性进行碰撞判定,提高运行效率。
碰撞的判断就是判断攻击包围盒是否与受击包围盒相交,若是则发生碰撞,否则未发生碰撞。
将球形包围盒绑定在骨骼上。在3D图形引擎驱动骨骼发生运动的时候,球形包围盒的位置同时也会发生改变。这样就不需要如现有技术中每帧实时生成包围盒的操作,提高运行效率。
较佳地,可以根据实际情况灵活地激活或关闭一个或多个包围盒,并且可以定制激活后的攻击包围盒大小,让其开启或关闭碰撞检测。如图3所示,左边的角色正在做出挥拳的攻击动作,与该攻击动作对应的身体部位(右手及右臂处)的攻击包围盒如(301指示)在做出该攻击动作时激活并增大体积(增加该包围盒的半径)进行攻击检测,而该角色其他位置的攻击包围盒则不激活,只有在受到攻击时才进行碰撞检测(攻击包围盒在未激活时,等同于受击包围盒)。
采用球形包围盒,首先不用动态生成包围盒大小,大小是刚开始固定的,其次可以通过对身体部位多加几个球体包围盒,可以相对比较准确地描述身体部位,因为球体包围盒的碰撞计算开销较小,即使多添加几个包围盒也不会对计算机造成大的开销。
本申请实施例提供的碰撞判定流程如图4所示,包括如下步骤:
步骤401:确定角色身体上需要进行碰撞判定的部位;
步骤402:对于所述每一个部位分别设置至少一个球形包围盒,将所述球形包围盒绑定在角色骨骼上;
步骤403:所述球形包围盒的位置随着骨骼的运动而运动,在运动过程中判断所述球形包围盒是否与其他对象发生碰撞。
根据本申请的另一实施例,所述其他对象包括其他角色的骨骼上绑定的球形包围盒,或者被攻击的靶子等
根据本申请的另一实施例,所述球形包围盒的参数包括半径、中心点位置;较佳地还可以进一步包括中心点相对于该球形包围盒所绑定的骨骼的偏移值。
根据本申请的另一实施例,步骤402进一步包括:设置球形包围盒的属性,根据球形包围盒属性将包围盒分为两种:攻击包围盒与受击包围盒;
步骤403所述在运动过程中判断所述球形包围盒是否与其他对象发生碰撞包括:若所述球形包围盒为攻击包围盒,进行攻击检测;所述攻击检测的含义为判断该攻击包围盒是否与目标对象的受击包围盒发生碰撞;
若所述球形包围盒为受击包围盒,进行受击检测;所述受击检测的含义为判断该受击包围盒是否与目标对象的攻击包围盒发生碰撞。
根据本申请另一实施例,步骤403所述在运动过程中判断所述球形包围盒是否与其他对象发生碰撞进一步包括:当角色做出攻击动作时,激活与该攻击动作对应的身体部位对应的攻击包围盒,激活后的攻击包围盒进行攻击检测;攻击动作结束后去激活与该攻击动作对应的身体部位对应的攻击包围盒;
未激活的攻击包围盒进行受击检测。
根据本申请另一实施例,所述激活与该攻击动作对应的身体部位对应的攻击包围盒的步骤进一步包括:增加所述攻击包围盒的半径。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请的保护范围,凡在本申请技术方案的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (6)
1.一种碰撞判定方法,其特征在于,包括:
A、确定角色身体上需要进行碰撞判定的部位;
B、对于所述每一个部位分别设置至少一个球形包围盒,将所述球形包围盒绑定在角色骨骼上;
C、所述球形包围盒的位置随着骨骼的运动而运动,在运动过程中判断所述球形包围盒是否与其他对象发生碰撞。
2.根据权利要求1所述方法,其特征在于,所述其他对象包括其他角色的骨骼上绑定的球形包围盒。
3.根据权利要求1所述的方法,其特征在于,所述球形包围盒的参数包括半径、中心点位置和中心点相对于该球形包围盒所绑定的骨骼的偏移值。
4.根据权利要求1所述的方法,其特征在于,步骤B进一步包括:设置球形包围盒的属性,根据球形包围盒属性将包围盒分为两种:攻击包围盒与受击包围盒;
步骤C所述在运动过程中判断所述球形包围盒是否与其他对象发生碰撞包括:若所述球形包围盒为攻击包围盒,进行攻击检测;所述攻击检测的含义为判断该攻击包围盒是否与目标对象的受击包围盒发生碰撞;
若所述球形包围盒为受击包围盒,进行受击检测;所述受击检测的含义为判断该受击包围盒是否与目标对象的攻击包围盒发生碰撞。
5.根据权利要求4所述的方法,其特征在于,步骤C所述在运动过程中判断所述球形包围盒是否与其他对象发生碰撞进一步包括:当角色做出攻击动作时,激活与该攻击动作对应的身体部位对应的攻击包围盒,激活后的攻击包围盒进行攻击检测;攻击动作结束后去激活与该攻击动作对应的身体部位对应的攻击包围盒;
未激活的攻击包围盒进行受击检测。
6.根据权利要求5所述的方法,其特征在于,所述激活与该攻击动作对应的身体部位对应的攻击包围盒的步骤进一步包括:增加所述攻击包围盒的半径。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410841317.8A CN104606887A (zh) | 2014-12-30 | 2014-12-30 | 一种碰撞判定方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410841317.8A CN104606887A (zh) | 2014-12-30 | 2014-12-30 | 一种碰撞判定方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104606887A true CN104606887A (zh) | 2015-05-13 |
Family
ID=53141695
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410841317.8A Pending CN104606887A (zh) | 2014-12-30 | 2014-12-30 | 一种碰撞判定方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104606887A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105204625A (zh) * | 2015-08-31 | 2015-12-30 | 小米科技有限责任公司 | 虚拟现实游戏中的安全保护方法和装置 |
CN105498211A (zh) * | 2015-12-11 | 2016-04-20 | 网易(杭州)网络有限公司 | 游戏中位置关系的处理方法和装置 |
CN106215419A (zh) * | 2016-07-28 | 2016-12-14 | 腾讯科技(深圳)有限公司 | 碰撞控制方法及装置 |
CN106951631A (zh) * | 2017-03-18 | 2017-07-14 | 李远阳 | 一种圆形与带旋转角度的矩形包围盒碰撞检测方法 |
CN106960475A (zh) * | 2017-03-30 | 2017-07-18 | 网易(杭州)网络有限公司 | 三维模型的部位点击处理方法及装置、存储介质和处理器 |
CN109464804A (zh) * | 2018-09-11 | 2019-03-15 | 苏州蜗牛数字科技股份有限公司 | 一种游戏内被击打目标生物的建模表现方法 |
CN109481940A (zh) * | 2018-09-21 | 2019-03-19 | 苏州蜗牛数字科技股份有限公司 | 一种运动对象跟随方法 |
CN110075523A (zh) * | 2019-04-30 | 2019-08-02 | 网易(杭州)网络有限公司 | 动作生成方法、装置、电子设备和计算机可读介质 |
CN111569424A (zh) * | 2020-05-14 | 2020-08-25 | 北京代码乾坤科技有限公司 | 游戏场景内的物理结算方法和装置 |
CN112200890A (zh) * | 2019-07-08 | 2021-01-08 | 福建天泉教育科技有限公司 | 基于Unity的碰撞器设置方法及存储介质 |
CN115430153A (zh) * | 2022-08-30 | 2022-12-06 | 不鸣科技(杭州)有限公司 | 虚拟环境中的碰撞检测方法、装置、设备、介质及程序 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101071515A (zh) * | 2007-06-25 | 2007-11-14 | 北京金山软件有限公司 | 一种在服务器端实现三维游戏碰撞检测的方法 |
US20080158251A1 (en) * | 2006-12-28 | 2008-07-03 | Sathe Rahul P | Real-time collision detection using clipping |
CN102663197A (zh) * | 2012-04-18 | 2012-09-12 | 天津大学 | 一种基于运动捕获的虚拟手抓取的仿真方法 |
CN102663808A (zh) * | 2012-02-29 | 2012-09-12 | 中山大学 | 一种基于数字家庭娱乐中三维模型的刚体模型建立方法 |
CN103729879A (zh) * | 2013-12-20 | 2014-04-16 | 浙江大学 | 基于力觉计算的虚拟手稳定抓取方法 |
-
2014
- 2014-12-30 CN CN201410841317.8A patent/CN104606887A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080158251A1 (en) * | 2006-12-28 | 2008-07-03 | Sathe Rahul P | Real-time collision detection using clipping |
CN101071515A (zh) * | 2007-06-25 | 2007-11-14 | 北京金山软件有限公司 | 一种在服务器端实现三维游戏碰撞检测的方法 |
CN102663808A (zh) * | 2012-02-29 | 2012-09-12 | 中山大学 | 一种基于数字家庭娱乐中三维模型的刚体模型建立方法 |
CN102663197A (zh) * | 2012-04-18 | 2012-09-12 | 天津大学 | 一种基于运动捕获的虚拟手抓取的仿真方法 |
CN103729879A (zh) * | 2013-12-20 | 2014-04-16 | 浙江大学 | 基于力觉计算的虚拟手稳定抓取方法 |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105204625B (zh) * | 2015-08-31 | 2018-05-08 | 小米科技有限责任公司 | 虚拟现实游戏中的安全保护方法和装置 |
CN105204625A (zh) * | 2015-08-31 | 2015-12-30 | 小米科技有限责任公司 | 虚拟现实游戏中的安全保护方法和装置 |
CN105498211B (zh) * | 2015-12-11 | 2019-04-23 | 网易(杭州)网络有限公司 | 游戏中位置关系的处理方法和装置 |
CN105498211A (zh) * | 2015-12-11 | 2016-04-20 | 网易(杭州)网络有限公司 | 游戏中位置关系的处理方法和装置 |
WO2018019160A1 (zh) * | 2016-07-28 | 2018-02-01 | 腾讯科技(深圳)有限公司 | 碰撞控制方法、装置及存储介质 |
CN106215419A (zh) * | 2016-07-28 | 2016-12-14 | 腾讯科技(深圳)有限公司 | 碰撞控制方法及装置 |
US10751626B2 (en) | 2016-07-28 | 2020-08-25 | Tencent Technology (Shenzhen) Company Limited | Collision control method and apparatus, and storage medium |
CN106215419B (zh) * | 2016-07-28 | 2019-08-16 | 腾讯科技(深圳)有限公司 | 碰撞控制方法及装置 |
CN106951631A (zh) * | 2017-03-18 | 2017-07-14 | 李远阳 | 一种圆形与带旋转角度的矩形包围盒碰撞检测方法 |
CN106960475A (zh) * | 2017-03-30 | 2017-07-18 | 网易(杭州)网络有限公司 | 三维模型的部位点击处理方法及装置、存储介质和处理器 |
CN106960475B (zh) * | 2017-03-30 | 2020-05-05 | 网易(杭州)网络有限公司 | 三维模型的部位点击处理方法及装置、存储介质和处理器 |
CN109464804A (zh) * | 2018-09-11 | 2019-03-15 | 苏州蜗牛数字科技股份有限公司 | 一种游戏内被击打目标生物的建模表现方法 |
CN109481940A (zh) * | 2018-09-21 | 2019-03-19 | 苏州蜗牛数字科技股份有限公司 | 一种运动对象跟随方法 |
CN110075523A (zh) * | 2019-04-30 | 2019-08-02 | 网易(杭州)网络有限公司 | 动作生成方法、装置、电子设备和计算机可读介质 |
US11980815B2 (en) | 2019-04-30 | 2024-05-14 | Netease (Hangzhou) Network Co., Ltd. | Action generation method, electronic device, and non-transitory computer-readable medium |
CN112200890A (zh) * | 2019-07-08 | 2021-01-08 | 福建天泉教育科技有限公司 | 基于Unity的碰撞器设置方法及存储介质 |
CN112200890B (zh) * | 2019-07-08 | 2023-09-29 | 福建天泉教育科技有限公司 | 基于Unity的碰撞器设置方法及存储介质 |
CN111569424A (zh) * | 2020-05-14 | 2020-08-25 | 北京代码乾坤科技有限公司 | 游戏场景内的物理结算方法和装置 |
CN111569424B (zh) * | 2020-05-14 | 2023-04-28 | 北京代码乾坤科技有限公司 | 游戏场景内的物理结算方法和装置 |
CN115430153A (zh) * | 2022-08-30 | 2022-12-06 | 不鸣科技(杭州)有限公司 | 虚拟环境中的碰撞检测方法、装置、设备、介质及程序 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104606887A (zh) | 一种碰撞判定方法 | |
KR101939860B1 (ko) | 분산된 대화식 시뮬레이션에서 객체의 개선된 제공을 위한 장치 및 방법 | |
JP2008033521A (ja) | プログラム、情報記憶媒体、及び画像生成システム | |
JP2006275722A (ja) | ゴルフボールの弾道シミュレーション方法及び飛行シミュレーション方法 | |
JP2010029398A (ja) | プログラム、情報記憶媒体及び画像生成システム | |
Lazaridis et al. | Hitboxes: A survey about collision detection in video games | |
CN113858207B (zh) | 人形机器人的倒地控制方法、装置、电子设备及存储介质 | |
US20090088246A1 (en) | Interactive sound synthesis | |
JP4776017B2 (ja) | プログラム、情報記憶媒体、及び画像生成システム | |
US10195529B2 (en) | Systems and methods of providing emergent interactions in virtual worlds | |
CN105069835A (zh) | 一种实现游戏人工智能真实感视觉的方法 | |
US20120223953A1 (en) | Kinematic Engine for Adaptive Locomotive Control in Computer Simulations | |
JP4176455B2 (ja) | プログラム、情報記憶媒体及び画像生成装置 | |
US11501496B2 (en) | Navigation system and method using a bounding volume hierarchy | |
Xu et al. | Procedural guard placement for stealth games | |
Müller et al. | Simulating visual geometry | |
del Pozo et al. | Simulator for control and automation using an interactive and configurable 3D virtual environment | |
Chen | Real-time physics based simulation for 3D computer graphics | |
Wang et al. | A method for 3D rock fracturing simulation based Havok | |
Macagon et al. | Efficient collision detection for skeletally animated models in interactive environments | |
Lin et al. | Design and implementation of an OpenGL based 3D first person shooting game | |
Kumar | Learning physics modeling with PhysX | |
JP5241536B2 (ja) | プログラム、情報記憶媒体及びゲームシステム | |
JP6258552B1 (ja) | 情報処理装置、情報処理方法、プログラム、ならびに、端末 | |
Queiroz et al. | Soccer Robots Modeling Project Based on RoboCupJunior: Simulation Environment for Physical Robot Improvement |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150513 |