实时虚拟场景中圆柱碰撞体与凸体碰撞探测的方法和系统的制作方法_5

文档序号:9751049阅读:来源:国知局
短距离,因 缩短了移动距离,故提高了移动效率,也提高了操作的流畅度,将圆柱碰撞体转化为预设多 边形棱柱,可得到圆柱碰撞体的面的法向和边方向,便于选取测试轴,通过测试轴的合理选 择,以及圆柱碰撞体和凸体在测试轴上的投影相交情况判断圆柱碰撞体和凸体之间的碰撞 情况,提高了判断的准确性。
[0142] 在一个实施例中,该预设多边形为内接圆柱碰撞体底面的正多边形。该正多边形 为偶数条边的正多边形,则获取该预设多边形的边方向时,从预设多边形棱柱的上下底面 的两个预设多边形中的一个预设多边形选取基于中心不对称的边方向,该获取棱柱的棱的 边方向时选一条棱的边方向。
[0143] 例如,以预设多边形棱柱为正十六边形棱柱为例,正十六边形棱柱的棱均平行,则 只要选一条棱边,获取该棱的边方向。正十六边形棱柱的上底面和下底面平行,则只要选择 一个底面中的边方向。对于每个底面来说,十六边形也是中心对称的,只要取八条边即可。
[0144] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以 通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取 存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介 质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等。
[0145] 以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并 不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员 来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保 护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【主权项】
1. 一种实时虚拟场景中圆柱碰撞体与凸体之间碰撞探测的方法,包括以下步骤: 将虚拟场景中虚拟对象所对应的圆柱碰撞体转化为与圆柱碰撞体同中心点的预设多 边形棱柱; 将所述预设多边形棱柱变换到凸体的局部坐标系,得到预设多边形棱柱在凸体的局部 坐标系下的位置; 根据所述预设多边形棱柱在凸体的局部坐标系下的位置获取预设多边形棱柱各个面 的法向、预设多边形的边方向和棱柱的棱的边方向; 获取所述凸体的各个面的法向和各个边方向; 将所述凸体的各个边方向与所述预设多边形的边方向和棱柱的棱的边方向分别做向 量积; 将所述预设多边形棱柱各个面的法向、凸体的各个面的法向及所述向量积中一种或多 种作为测试轴; 根据各测试轴及预设多边形棱柱在凸体的局部坐标系下的位置得到圆柱碰撞体在测 试轴上的投影长度及投影位置,并获取凸体在各测试轴上的投影; 若所述圆柱碰撞体和凸体在各测试轴上投影均相交,则判定圆柱碰撞体与凸体之间有 碰撞。2. 根据权利要求1所述的方法,其特征在于,将所述预设多边形棱柱变换到凸体的局部 坐标系,得到预设多边形棱柱在凸体的局部坐标系下的位置的步骤包括: 将预设多边形棱柱的X轴、Y轴、Z轴及中心点变换到凸体的局部坐标系,得到预设多边 形棱柱的X轴、Y轴、Z轴的单位向量在凸体的局部坐标系下对应的向量,并用Z轴在凸体的局 部坐标系下向量乘以圆柱碰撞体的正负半高值,得到预设多边形棱柱的上下两个底面的中 点坐标; 获取圆柱碰撞体的半径,根据圆柱碰撞体的半径、X轴、Y轴在凸体的局部坐标系下对应 的向量得到预设多边形棱柱的各顶点相对所在底面的中点的偏移量,将偏移量与中点坐标 求和得到对应顶点的坐标; 根据各个顶点的坐标在凸体的局部坐标系下重建预设多边形棱柱。3. 根据权利要求2所述的方法,其特征在于,所述方法还包括: 当圆柱碰撞体转换的预设多边形棱柱变换到凸体的局部坐标系后不为圆柱碰撞体,则 对预设多边形棱柱在凸体的局部坐标系下的各个顶点进行投影,取极值做差得到圆柱碰撞 体的投影长度。4. 根据权利要求2所述的方法,其特征在于,所述方法还包括: 当圆柱碰撞体转换的预设多边形棱柱变换到凸体的局部坐标系后仍为圆柱碰撞体,则 获取圆柱碰撞体的半径、半高、圆柱碰撞体的XYZ三个轴的基向量变换到凸体的局部坐标系 下对应的坐标基向量以及测试轴在圆柱碰撞体的局部坐标系下的测试轴方向计算圆柱碰 撞体的投影长度。5. 根据权利要求1至4中任一项所述的方法,其特征在于,所述方法还包括: 当测试轴平行于圆柱碰撞体的竖直轴,则获取圆柱碰撞体的XYZ三个轴的基向量变换 到凸体的局部坐标系下对应的坐标基向量的Z轴基向量的长度与半高的乘积作为圆柱碰撞 体的投影长度; 当测试轴垂直于圆柱碰撞体的竖直轴,则获取圆柱碰撞体的XYZ三个轴的基向量变换 到凸体的局部坐标系下对应的坐标基向量的Χ、Υ轴基向量的长度中较大的一个,再与圆柱 碰撞体半径的乘积作为圆柱碰撞体的投影长度。6. 根据权利要求1至4中任一项所述的方法,其特征在于,所述预设多边形为内接圆柱 碰撞体底面的正多边形。7. 根据权利要求6所述的方法,其特征在于,所述正多边形为偶数条边的正多边形,则 获取所述预设多边形的边方向时,从预设多边形棱柱的上下底面的两个预设多边形中的一 个预设多边形选取基于中心不对称的边方向,所述获取棱柱的棱的边方向时选一条棱的边 方向。8. -种实时虚拟场景中圆柱碰撞体与凸体之间碰撞探测的装置,其特征在于,包括: 转化模块,用于将虚拟场景中虚拟对象所对应的圆柱碰撞体转化为与圆柱碰撞体同中 心点的预设多边形棱柱; 变换模块,用于将所述预设多边形棱柱变换到凸体的局部坐标系,得到预设多边形棱 柱在凸体的局部坐标系下的位置; 第一获取模块,用于根据所述预设多边形棱柱在凸体的局部坐标系下的位置获取预设 多边形棱柱各个面的法向、预设多边形的边方向和棱柱的棱的边方向; 第二获取模块,用于获取所述凸体的各个面的法向和各个边方向; 向量积获取模块,用于将所述凸体的各个边方向与所述预设多边形的边方向和棱柱的 棱的边方向分别做向量积; 测试轴获取模块,用于将所述预设多边形棱柱各个面的法向、凸体的各个面的法向及 所述向量积一种或多种作为测试轴; 投影模块,用于根据各测试轴及预设多边形棱柱在凸体的局部坐标系下的位置得到圆 柱碰撞体在测试轴上的投影长度及投影位置,并获取凸体在各测试轴上的投影; 判定模块,用于若所述圆柱碰撞体和凸体在各测试轴上投影均相交,则判定圆柱碰撞 体与凸体之间有碰撞。9. 根据权利要求8所述的装置,其特征在于,所述变换模块还用于将预设多边形棱柱的 X轴、Υ轴、Ζ轴及中心点变换到凸体的局部坐标系,得到预设多边形棱柱的X轴、Υ轴、Ζ轴的单 位向量在凸体的局部坐标系下对应的向量,并用Ζ轴在凸体的局部坐标系下向量乘以圆柱 碰撞体的正负半高值,得到预设多边形棱柱的上下两个底面的中点坐标;获取圆柱碰撞体 的半径,根据圆柱碰撞体的半径、X轴、Υ轴在凸体的局部坐标系下对应的向量得到预设多边 形棱柱的各顶点相对所在底面的中点的偏移量,将偏移量与中点坐标求和得到对应顶点的 坐标;根据各个顶点的坐标在凸体的局部坐标系下重建预设多边形棱柱。10. 根据权利要求9所述的装置,其特征在于,所述投影模块还用于当圆柱碰撞体转换 的预设多边形棱柱变换到凸体的局部坐标系后不为圆柱碰撞体,则对预设多边形棱柱在凸 体的局部坐标系下的各个顶点进行投影,取极值做差得到圆柱碰撞体的投影长度。11. 根据权利要求9所述的装置,其特征在于,所述投影模块还用于当圆柱碰撞体转换 的预设多边形棱柱变换到凸体的局部坐标系后仍为圆柱碰撞体,则获取圆柱碰撞体的半 径、半高、圆柱碰撞体的ΧΥΖ三个轴的基向量变换到凸体的局部坐标系下对应的坐标基向量 以及测试轴在圆柱碰撞体的局部坐标系下的测试轴方向计算圆柱碰撞体的投影长度。12. 根据权利要求8至11中任一项所述的装置,其特征在于,当测试轴平行于圆柱碰撞 体的竖直轴,则获取圆柱碰撞体的XYZ三个轴的基向量变换到凸体的局部坐标系下对应的 坐标基向量的Z轴基向量的长度与半高的乘积作为圆柱碰撞体的投影长度; 当测试轴垂直于圆柱碰撞体的竖直轴,则获取圆柱碰撞体的XYZ三个轴的基向量变换 到凸体的局部坐标系下对应的坐标基向量的X、Y轴基向量的长度中较大的一个,再与圆柱 碰撞体半径的乘积作为圆柱碰撞体的投影长度。13. 根据权利要求8至11中任一项所述的装置,其特征在于,所述预设多边形为内接圆 柱碰撞体底面的正多边形。14. 根据权利要求13所述的装置,其特征在于,所述正多边形为偶数条边的正多边形, 则获取所述预设多边形的边方向时,从预设多边形棱柱的上下底面的两个预设多边形中的 一个预设多边形选取基于中心不对称的边方向,所述获取棱柱的棱的边方向时选一条棱的 边方向。
【专利摘要】本发明涉及一种实时虚拟场景中圆柱碰撞体与凸体之间碰撞探测的方法和装置。所述方法包括以下步骤:将虚拟场景中虚拟对象所对应的圆柱碰撞体转化为与圆柱碰撞体同中心点的预设多边形棱柱;将预设多边形棱柱变换到凸体的局部坐标系,得到预设多边形棱柱在凸体的局部坐标系下的位置;获取测试轴;根据各测试轴及预设多边形棱柱在凸体的局部坐标系下的位置得到圆柱碰撞体在测试轴上的投影长度及投影位置,并获取凸体在各测试轴上的投影;若圆柱碰撞体和凸体在各测试轴上投影均相交,则判定圆柱碰撞体与凸体之间有碰撞。上述实时虚拟场景中圆柱碰撞体与凸体之间碰撞探测的方法和装置,缩短了移动距离,提高了移动效率、操作的流畅度以及判断的准确性。
【IPC分类】G06F17/50
【公开号】CN105512377
【申请号】CN201510864339
【发明人】匡西尼
【申请人】腾讯科技(深圳)有限公司
【公开日】2016年4月20日
【申请日】2015年11月30日
当前第5页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1