碰撞检测的方法和装置制造方法及图纸

技术编号:4125837 阅读:200 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种碰撞检测的方法和装置,属于网络游戏领域。所述方法包括:为游戏中待检测的第一模型和第二模型分别生成碰撞面片;获取第一模型、第二模型的碰撞面片中的3D空间信息;并转换为2D平面上的图形,得到第一模型的第一图形和第二模型的第二图形;检测第一图形与第二图形是否相交,如果是,则第一模型与第二模型发生碰撞,否则,不发生碰撞。所述装置包括:创建模块、获取模块、转换模块和检测模块。本发明专利技术通过将3D模型的碰撞检测转化为2D平面内图形的检测,极大地减少了碰撞检测的计算量,缩短了碰撞检测的时间,提高了碰撞检测的效率。

【技术实现步骤摘要】

本专利技术涉及网络游戏领域,特别涉及一种碰撞检测的方法和装置
技术介绍
在游戏中物体的碰撞是经常发生的,怎样检测物体的碰撞是一个很关键的技术问题。尤 其是在飞行射击游戏中,如果不能很好地解决这一问题,会极大地影响玩游戏者的兴趣。碰 揸检测可以探测游戏中各物体的物理边缘,检测出游戏中的各物体是否发生碰撞。当两个3D 物体撞在一起的时候,这种碰撞检测技术可以防止它们相互穿过。例如,当游戏中的人物撞 在墙上的时候,碰撞检测技术会根据人物和墙之间的特性确定两者的位置和相互的作用关系, 从而保证该人物既不会穿墙而过,也不会把墙撞倒。目前成功商业3D游戏普遍采用的碰撞检测是BSP (Binary Space Partitioning, 二叉空间 分割)树方式及包装盒方式。BSP树是用来控制检测顺序和方向的数据描述,通过找出两个 物体间的分隔面的方法来判断两个物体是否相交,如果分隔面存在,则没有发生碰撞。包装 盒方式就是采用一个描述用的正方体或者球型体包裹住3D物体对象整体,或者是主要部分, 然后根据描述用包装盒的距离、位置等信息来计算是否发生碰撞。该正方体和球型体也可以 由其他形状来代替。现有的碰撞检测技术是在3D环境中通过计算实现的,这种计算通常都比较复杂,计算 所需的时间也比较长,因此,碰撞检测的效率较低。
技术实现思路
为了解决现有技术存在的问题,本专利技术实施例提供了一种碰撞检测的方法和装置。所述技术方案如下一种碰撞检测的方法,所述方法包括为游戏中待检测的第一模型和第二模型分别生成碰撞面片;获取所述第一模型的碰撞面片中的3D空间信息和所述第二模型的碰撞面片中的3D空间 信息;将获取的3D空间信息转换为2D平面上的图形,分别得到所述第一模型的第一图形和所述第二模型的第二图形;检测所述第一图形与第二图形是否相交,如果是,则所述第一模型与第二模型发生碰撞,否则,所述第一模型与第二模型不发生碰撞。所述为游戏中待检测的第一模型和第二模型分别生成碰撞面片,具体包括 按照预设的规则,为游戏中待检测的第一模型和第二模型分别生成碰撞面片,所述预设的规则为碰撞面片的重心与待检测模型的重心的距离不得超过预设的值。所述预设的规则具体为碰撞面片与待检测模型的面积最大的截面在同一个平面。 所述为游戏中待检测的第一模型和第二模型分别生成碰撞面片之后,还包括 将所述第一模型的碰撞面片和所述第二模型的碰撞面片命名为相同的名字; 获取所述第一模型的碰撞面片中的3D空间信息和所述第二模型的碰撞面片中的3D空间信息,具体包括根据所述名字查找所述第一模型和第二模型的碰撞面片,获取所述第一模型的碰撞面片 中的3D空间信息和所述第二模型的碰撞面片中的3D空间信息。 所述第一模型与第二模型发生碰撞之后,还包括对于所述第一模型和第二模型中的任一个模型,如果该模型所属的物体还包括其它模型, 则不显示该模型,显示所述其它模型。将获取的3D空间信息转换为2D平面上的图形,具体包括当所述3D空间信息为3D空间三角形信息时,将获取的3D空间三角形信息转换为2D 平面上的三角形;当所述3D空间信息为3D空间非三角形信息时,先将所述3D空间非三角形信息转换为 3D空间三角形信息,再将获取该3D空间三角形信息转换为2D平面上的三角形。 一种碰撞检测的装置,所述装置包括创建模块,为游戏中待检测的第一模型和第二模型分别生成碰撞面片;获取模块,用于获取所述第一模型的碰撞面片中的3D空间信息和所述第二模型的碰撞 面片中的3D空间信息;转换模块,用于将所述获取模块获取的3D空间信息转换为2D平面上的图形,分别得到 所述第一模型的第一图形和所述第二模型的第二图形;检测模块,用于检测所述第一图形与所述第二图形是否相交,如果是,则所述第一模型 与第二模型发生碰撞,否则,所述第一模型与第二模型不发生碰撞。所述创建模块具体包括创建单元,用于按照预设的规则,为游戏中待检测的第一模型和第二模型分别生成碰撞 面片,所述预设的规则为碰撞面片的重心与待检测模型的重心的距离不得超过预设的值。 所述预设的规则具体为碰撞面片与待检测模型的面积最大的截面在同一个平面。 所述创建模块还包括-命名单元,用于将所述第一模型的碰撞面片和所述第二模型的碰撞面片命名为相同的名字;所述获取模块具体包括查找单元,用于根据所述名字查找所述第一模型和第二模型的碰撞面片;获取单元,用于在所述査找单元找到所述第一模型和第二模型的碰撞面片后,获取所述第一模型的碰撞面片中的3D空间信息和所述第二模型的碰撞面片中的3D空间信息。所述装置还包括显示处理模块,用于在所述检测模块判断出所述第一模型与第二模型发生碰撞之后,对 于所述第一模型和第二模型中的任一个模型,如果该任一模型所属的物体还包括其它模型, 则不显示该任一模型,显示所述其它模型。所述转换模块具体包括-三角形转换单元,用于当所述获取模块获取的3D空间信息为3D空间三角形信息时,将 该3D空间三角形信息转换为2D平面上的三角形,分别得到所述第一模型的三角形和所述第 二模型的三角形;非三角形转换单元,当所述获取模块获取的3D空间信息为3D空间非三角形信息时,先 将所述3D空间非三角形信息转换为3D空间三角形信息,再将该3D空间三角形信息转换为 2D平面上的三角形,分别得到所述第一模型的三角形和所述第二模型的三角形。本专利技术实施例提供的上述方法和装置,通过将3D模型的碰撞检测转化为2D平面内的图 形的检测,极大地减少了碰撞检测的计算量,縮短了碰撞检测的时间,提高了碰撞检测的效 率。而且,由于碰撞面片是在3D模型中创建的,很容易进行修改,可以通过修改碰撞面片 来实现不同区域的碰撞检测,操作简单、方便。另外,对碰撞面片和模型的相似度的要求不 是很高,可以使用具有一定差异的碰撞面片来进行碰撞检测。当游戏中的物体包括多个模型 时,如果其中一个模型发生碰撞,则其它模型还仍然显示,从而增强了游戏的真实性,提升 了游戏玩家的体验。附图说明图1是本专利技术实施例提供的对游戏中的多个模型进行检测的示意图2是本专利技术实施例提供的碰撞检测的方法流程图3是本专利技术实施例提供的生成碰撞面片的示意图4是本专利技术实施例提供的判断三角形是否相交的示意图5是本专利技术实施例提供的碰撞检测的装置一种结构图6是本专利技术实施例提供的碰撞检测的装置另一种结构图。具体实施例方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术实施方式作进 一步地详细描述。本专利技术实施例提供了一种碰撞检测的方法,包括为游戏中待检测的第一模型和第二模型分别生成碰撞面片;获取第一模型的碰撞面片中 的3D空间信息和第二模型的碰撞面片中的3D空间信息;将获取的3D空间信息转换为2D 平面上的图形,分别得到第一模型的第一图形和第二模型的第二图形;检测第一图形与第二 图形是否相交,如果是,则第一模型与第二模型发生碰撞,否则,第一模型与第二模型不发 生碰撞。本专利技术实施例中涉及的模型是指3D模型,通常为网络游戏中的3D模型。该模型可以使 用多种建模工具生成,如使用3DMAX生成。网络游戏中的物体可以由一个模型组成,也可 以由多个模型组成。例如, 一种大型飞机由机身模型和机翼模型组成等。当一个物体由多个 模型组成时,每个模型都有自己的碰撞面片。所述碰撞面片是在模型本文档来自技高网...

【技术保护点】
一种碰撞检测的方法,其特征在于,所述方法包括: 为游戏中待检测的第一模型和第二模型分别生成碰撞面片; 获取所述第一模型的碰撞面片中的3D空间信息和所述第二模型的碰撞面片中的3D空间信息; 将获取的3D空间信息转换为2D平面 上的图形,分别得到所述第一模型的第一图形和所述第二模型的第二图形; 检测所述第一图形与第二图形是否相交,如果是,则所述第一模型与第二模型发生碰撞,否则,所述第一模型与第二模型不发生碰撞。

【技术特征摘要】
1、一种碰撞检测的方法,其特征在于,所述方法包括为游戏中待检测的第一模型和第二模型分别生成碰撞面片;获取所述第一模型的碰撞面片中的3D空间信息和所述第二模型的碰撞面片中的3D空间信息;将获取的3D空间信息转换为2D平面上的图形,分别得到所述第一模型的第一图形和所述第二模型的第二图形;检测所述第一图形与第二图形是否相交,如果是,则所述第一模型与第二模型发生碰撞,否则,所述第一模型与第二模型不发生碰撞。2、 根据权利要求1所述的碰撞检测的方法,其特征在于,所述为游戏中待检测的第一模 型和第二模型分别生成碰撞面片,具体包括按照预设的规则,为游戏中待检测的第一模型和第二模型分别生成碰撞面片,所述预设的规则为碰撞面片的重心与待检测模型的重心的距离不得超过预设的值。3、 根据权利要求2所述的碰撞检测的方法,其特征在于,所述预设的规则具体为碰撞 面片与待检测模型的面积最大的截面在同一个平面。4、 根据权利要求1所述的碰撞检测的方法,其特征在于,所述为游戏中待检测的第一模 型和第二模型分别生成碰撞面片之后,还包括将所述第一模型的碰撞面片和所述第二模型的碰撞面片命名为相同的名字; 获取所述第一模型的碰撞面片中的3D空间信息和所述第二模型的碰撞面片中的3D空间信息,具体包括根据所述名字查找所述第一模型和第二模型的碰撞面片,获取所述第一模型的碰撞面片中的3D空间信息和所述第二模型的碰撞面片中的3D空间信息。5、 根据权利要求1所述的碰撞检测的方法,其特征在于,所述第一模型与第二模型发生碰撞之后,还包括对于所述第一模型和第二模型中的任一个模型,如果该模型所属的物体还包括其它模型,则不显示该模型,显示所述其它模型。6、 根据权利要求1至5中任一权利要求所述的碰撞检测的方法,其特征在于,将获取的 3D空间信息转换为2D平面上的图形,具体包括当所述3D空间信息为3D空间三角形信息时,将获取的3D空间三角形信息转换为2D 平面上的三角形;当所述3D空间信息为3D空间非三角形信息时,先将所述3D空间非三角形信息转换为 3D空间三角形信息,再将获取该3D空间三角形信息转换为2D平面上的三角形。7、 一种碰撞检测的装置,其特征在于,所述装置包括创建模块,为游戏中待检测的第一模型和第二模型分别生成...

【专利技术属性】
技术研发人员:王彭城姚建辉汤闻
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利