物件碰撞检测系统及方法

文档序号:6472301阅读:223来源:国知局
专利名称:物件碰撞检测系统及方法
技术领域
本发明涉及一种检测系统及方法,尤其涉及一种物件碰撞检测的系统及方法。
背景技术
在现有的一些游戏和仿真软件中,存在很多物件,物件之间的碰撞检测非常重要。在游 戏软件中,若没有物件碰撞检测,会使得物件穿过彼此,三维画面很不真实。在仿真软件中 ,物件碰撞检测也是非常必要的,如生产线仿真软件中,人与机台之间的碰撞检测,人与叉 车之间的碰撞检测等,都是非常必要的,如果没有上述碰撞检测,会导致仿真画面不真实。
目前,即使存在物件碰撞检测,但是由于实现过程比较复杂,导致视觉上延时比较长, 达到的动画效果不流畅,给用户带来的视觉效果不好。

发明内容
鉴于以上内容,有必要提供一种有效的检测物件之间是否有碰撞的系统及方法。
所述物件碰撞检测系统,包括计算机及与该计算机相连的数据库,该数据库中存储有待 测物件,所述计算机包括生成模块,用于在三维局部坐标系中生成框住待测物件的长方体 ,还用于根据该长方体生成一个固定在三维局部坐标系上的球体;获取模块,用于根据球体 在三维局部坐标系上的球心坐标值获取该球体在世界坐标系上的球心坐标值;计算模块,用 于计算待检测的两个物件所生成球体在世界坐标系中的球心距;及判断模块,用于判断球心 距是否大于待检测的两个物件所生成球体半径值的和,若所述球心距不大于待测物件所生成 球体半径值的和,则该两个物件发生碰撞;若所述球心距大于待测物件所生成球体半径值的 和,则该两个物件没有发生碰撞。
所述物件碰撞检测方法,该方法包括如下步骤在三维局部坐标系中生成框住待测物件 的长方体;根据该长方体生成一个固定在三维局部坐标系上的球体;根据该球体在所述三维 局部坐标系上的球心坐标值获取该球体在世界坐标系上的球心坐标值;计算待检测的两个物 件所生成球体在世界坐标系中的球心距;判断球心距是否大于待测两个物件所生成球体半径 值的和;若所述球心距不大于待测物件所生成球体半径值的和,则该两个物件发生碰撞;及 若所述球心距大于待测物件所生成球体半径值的和,则该两个物件没有发生碰撞。
相较于现有技术,所述物件碰撞检测系统及方法,能够有效快速的进行物件碰撞的检测 ,使得用户看到的画面流畅。


图l是本发明物件碰撞检测系统较佳实施例的硬件架构图。 图2是本发明物件碰撞检测系统较佳实施例的计算机的功能模块图。 图3是本发明物件碰撞检测方法较佳实施例的作业流程图。
具体实施例方式
如图1所示,是本发明物件碰撞检测系统较佳实施例的硬件架构图。该系统包括计算机 1,与该计算机1相连的数据库2。所述计算机l用于检测物件之间的碰撞,所述数据库2用于 存储需要检测的物件模型,本实施例中,是以生产线仿真软件中的物件模型为例进行说明物 件之间的碰撞检测,该数据库2中存储有该仿真软件中的物件,如机台、操作机台的操作 人员及叉车等。该数据库2中还有多个链表,用于存储待测物件的信息,于本实施例中,所 述待测物件是指机台的一部分或者机台本身,操作人员的身体一部分或者操作人员的本身, 叉车的一部分或者叉车本身等。所述计算机1还连接有键盘3、鼠标4及显示器5,作为检测物 件碰撞的输入设备和输出设备。
如图2所示,是本发明物件碰撞检测系统较佳实施例的计算机l的功能模块图。在物件碰 撞检测之前,首先要对用户需要检测的物件在直角坐标系上进行投影,然后用户对该直角坐 标系上的投影进行框选。本实施例中,以对物件的俯视面投影到直角坐标系上,并对该投影 框选来说明该发明。所述计算机1包括生成模块10、获取模块12、存储模块14、计算模块16 及判断模块18。
生成模块10用于在XY直角坐标系上生成用户所框选物件俯视面的矩形框,并在三维局部 坐标系中,根据该物件在Z轴的高度将该矩形框沿着Z轴进行延伸,生成框住该待测物件的长 方体。
获取模块12用于获取最大范围点和最小范围点的坐标值,该坐标值不一定位于该长方体 上。设坐标值表示为(X, Y, Z),其中,最大范围点的(X, Y, Z)值分别为该长方体上所 有点坐标值中最大的X皿x、 Yraax、 Z皿x值。同理,最小范围点的(X, Y, Z)值分别为该长方体 上所有点坐标值上最小的Xmin、 Yrain、 Z^n值。
所述生成模块10还用于生成一个球体,该球在三维局部坐标系上的球心坐标值为最大范
围点坐标值与最小范围点坐标值和的一半,该球的半径值为最大范围点与最小范围点之间的 距离的一半。
存储模块14用于将所述球体在三维局部坐标系上的球心坐标值及半径值保存至数据库2 的链表中。每个链表用于存储一个整体物件中所有组成该整体物件的部分物件所生成球体的球心坐标值与半径值,例如操作机台和操作人员分别被分成很多待检测的物件,该数据库 2中有一个链表用于存储所有组成该操作机台的物件生成的球体球心坐标值和半径值,另有
一个链表用于存储所有组成操作人员的物件生成的球体球心坐标值和半径值。
所述获取模块12所述获取模块12还用于在链表中获取待检测物件所生成球体的球心坐标 值和半径值,并根据球体在三维局部坐标系上的球心坐标值获取该球体在世界坐标系上的球 心坐标值,并获取该三维局部坐标系的原点在世界坐标系中的坐标值(XI, Yl, Zl)。三维 局部坐标系中的坐标值(X, Y, Z)转换为世界坐标系(X2, Y2, Z2)的坐标值的公式为 X2=X1+X, Y2=Y1+Y, Z2=Z1+Z。
计算模块l 6用于计算待检测的两个物件所生成球体在世界坐标系中的球心距。 判断模块18用于判断球心距是否大于待测两个物件所生成球体半径值的和。若所述球心 距不大于待测物件所生成球体半径值的和,则该两个物件发生碰撞;若所述球心距大于待测 物件所生成球体半径值的和,则该两个物件没有发生碰撞。该判断模块18还用于判断所述链 表中是否还存在待检测的物件,若存在待检测的物件,则继续检测链表中剩下的物件是否发 生碰撞。
如图3所示,是本发明物件碰撞检测方法较佳实施例的作业流程图。在物件碰撞检测之 前,首先要对用户需要检测的物件在直角坐标系上进行投影,然后用户对该直角坐标系上的 投影进行框选。本实施例中,以对物件的俯视面投影到直角坐标系上,并对该投影框选来说 明该发明。
步骤S30,生成模块10在XY直角坐标系上生成用户所框选物件俯视面的矩形框,并在三 维局部坐标系中,根据该物件在Z轴的高度将该矩形框沿着Z轴进行延伸,生成框住该待检测 物件的长方体。
步骤S32,获取模块12获取最大范围点和最小范围点的坐标值,该坐标值不一定位于该 长方体上。设坐标值表示为(X, Y, Z),其中,最大范围点的(X, Y, Z)值分别为该长方 体上所有点坐标值中最大的X皿x、 Yraax、 Z皿x值。同理,最小范围点的(X, Y, Z)值分别为该 长方体上所有点坐标值上最小的Xmin、 Yrain、 Z^n值。
步骤S34,所述生成模块10生成一个球体,该球在三维局部坐标系上的球心坐标值为最 大范围点坐标值与最小范围点坐标值和的一半,该球体的半径值为最大范围点与最小范围点 之间的距离的一半。
步骤S36,存储模块14将所述球体在三维局部坐标系上的球心坐标值及半径值保存至数 据库2的链表中。每个链表用于存储一个整体物件中所有组成该整体物件的部分物件所生成球体的球心坐标值与半径值,例如操作机台和操作人员分别被分成很多待检测的物件,该 数据库2中有一个链表用于存储所有组成该操作机台的物件生成的球体球心坐标值和半径值 ,另有一个链表用于存储所有组成操作人员的物件生成的球体球心坐标值和半径值。
步骤S38,所述获取模块12根据球体在三维局部坐标系上的球心坐标值获取该球体在世 界坐标系上的球心坐标值,并获取该三维局部坐标系的原点在世界坐标系中的坐标值(XI, Yl, Zl)。三维局部坐标系中的坐标值(X, Y, Z)转换为世界坐标系(X2, Y2, Z2)的坐 标值的公式为X2=X1+X, Y2=Y1+Y, Z2=Z1+Z。
步骤S40 ,计算模块16计算待检测的两个物件所生成球体在世界坐标系中的球心距。 步骤S42,判断模块18判断球心距是否大于待测两个物件所生成球体半径值的和。 步骤S44,若所述球心距不大于待测物件所生成球体半径值的和,则该两个物件发生碰撞。
步骤S46,于上述步骤S42中,若所述球心距大于待测物件所生成球体半径值的和,则该 两个物件没有发生碰撞。判断模块18判断链表中是否还有待测的物件。若所述链表中还存在 待检测的物件,则转至步骤S38;若所述链表中已经不存在待检测的物件,则结束流程。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳 实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方 案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。
权利要求
权利要求1一种物件碰撞检测系统,包括计算机及与该计算机相连的数据库,该数据库中存储有待测物件,其特征在于,所述计算机包括生成模块,用于在三维局部坐标系中生成框住待测物件的长方体,还用于根据该长方体生成一个固定在三维局部坐标系上的球体;获取模块,用于根据球体在三维局部坐标系上的球心坐标值获取该球体在世界坐标系上的球心坐标值;计算模块,用于计算待检测的两个物件所生成球体在世界坐标系中的球心距;及判断模块,用于判断球心距是否大于待检测的两个物件所生成球体半径值的和,若所述球心距不大于待测物件所生成球体半径值的和,则该两个物件发生碰撞;若所述球心距大于待测物件所生成球体半径值的和,则该两个物件没有发生碰撞。
2 如权利要求l所述的物件碰撞检测系统,其特征在于,所述获取模 块,还用于在三维局部坐标系上获取最大范围点坐标值和最小范围点坐标值,最大范围点的 (X, Y, Z)值分别为该长方体上所有点坐标值中最大的Xmax、 Ymax、 Zmax值,最小范围点的 (X, Y, Z)值分别为该长方体上所有点坐标值上最小的Xmin、 Ymin、 Zmin值。
3 如权利要求2所述的物件碰撞检测系统,其特征在于,所述球体在 三维局部坐标系上的球心坐标值为最大范围点坐标值与最小范围点坐标值和的一半,该球体 的半径值为最大范围点与最小范围点之间的距离的一半。
4 如权利要求l所述的物件碰撞检测系统,其特征在于,所述计算机 还包括存储模块,用于将球体在三维局部坐标系上的球心坐标值及半径值保存至数据库
5 一种物件碰撞检测方法,其特征在于,该方法包括如下步骤 在三维局部坐标系中生成框住待测物件的长方体; 根据该长方体生成一个固定在三维局部坐标系上的球体;根据该球体在所述三维局部坐标系上的球心坐标值获取该球体在世界坐标系上的球心 坐标值;计算待检测的两个物件所生成球体在世界坐标系中的球心距; 判断球心距是否大于待测两个物件所生成球体半径值的和;若所述球心距不大于待测物件所生成球体半径值的和,则该两个物件发生碰撞;及 若所述球心距大于待测物件所生成球体半径值的和,则该两个物件没有发生碰撞。
6.如权利要求5所述的物件碰撞检测方法,其特征在于,在步骤在三 维局部坐标系中生成框住待测物件的长方体之后还包括在三维局部坐标系上获取最大范围 点坐标值和最小范围点坐标值,最大范围点的(X, Y, Z)值分别为该长方体上所有点坐标 值中最大的Xmax、 Ymax、 Zmax值,最小范围点的(X, Y, Z)值分别为该长方体上所有点坐标 值上最小的Xmin、 Ymin、 Zmin值。
7.如权利要求6所述的物件碰撞检测方法,其特征在于,所述球体在 三维局部坐标系上的球心坐标值为最大范围点坐标值与最小范围点坐标值和的一半,该球体 的半径值为最大范围点与最小范围点之间的距离的一半。
8.如权利要求5所述的物件碰撞检测方法,其特征在于,在步骤根据 该长方体生成一个固定在三维局部坐标系上的球体之后还包括将该球体在三维局部坐标系 上的球心坐标值及半径值保存至数据库的链表中,每个链表用于存储一个整体物件中所有组 成该整体物件的部分物件所生成球体的球心坐标值与半径值。
全文摘要
一种物件碰撞检测方法,包括在三维局部坐标系中生成框住待测物件的长方体;根据该长方体生成一个固定在三维局部坐标系上的球体;根据该球体在所述三维局部坐标系上的球心坐标值获取该球体在世界坐标系上的球心坐标值;计算待检测的两个物件所生成球体在世界坐标系中的球心距;判断球心距是否大于待测两个物件所生成球体半径值的和;若所述球心距不大于待测物件所生成球体半径值的和,则该两个物件发生碰撞;及若所述球心距大于待测物件所生成球体半径值的和,则该两个物件没有发生碰撞。另外,本发明还提供一种物件碰撞检测系统。
文档编号G06T17/40GK101546435SQ20081030068
公开日2009年9月30日 申请日期2008年3月24日 优先权日2008年3月24日
发明者尹宗仁, 杨高科, 稂业羽, 袁海林, 谢文君, 高丽平 申请人:鸿富锦精密工业(深圳)有限公司;鸿海精密工业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1