[发明专利]一种三维碰撞检测方法无效
申请号: | 201210049318.X | 申请日: | 2012-02-29 |
公开(公告)号: | CN102663825A | 公开(公告)日: | 2012-09-12 |
发明(设计)人: | 曾金龙;林谋广;李俊 | 申请(专利权)人: | 中山大学 |
主分类号: | G06T19/00 | 分类号: | G06T19/00;G06F9/38 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 510006 广东省广州市番禺*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 三维 碰撞 检测 方法 | ||
1.一种三维碰撞检测方法,需要先建立场景的一个数据表示结构,即场景树;场景树是由平衡包围树来实现,对游戏场景中的所有物体进行自上而下的构建AABB平衡包围树;包围树中每一个结点是一个包围盒;其特征在于,a.首先建立模型的包围盒,作为包围盒树的根结点;b.其次按照一定的规则将模型分成两个或者多个部分,建立每个部分的包围盒和相应的结点,将这些新结点作为根结点的子结点;然后按照步骤b的方法分裂与每个子结点对应的模型,递归地建立包围盒树。
2.如权利要求1所述的方法,其特征在于,采用分治策略自上而下的方法构建游戏场景的包围盒树,进行碰撞检测,引进流水线技术对检测进行加速。
3.如权利要求1或2所述的方法,其特征在于,在流水线技术中,问题被分成一系列必须是一个接一个完成的任务,每个任务由独立的进程或处理器执行,采用下列3种计算类型,用流水线方法进行加速:
(1)执行整个问题的多个实例;
(2)必须处理一系列的数据项,而每个数据项需要多次操作;
(3)进程在完成自己的所有内部操作之前能够把下一个进程启动所需的信息向前传送;
将上述三种情况分别定义为类型1、类型2、类型3。
4.如权利要求1所述的方法,其特征在于,AABB平衡包围树的构建过程如下:
(1)对每个物体建立其整体的包围盒,将其作为该物体平衡包围盒树的根结点,此结点包含了组成此物体的所有多边形;
(2)由于使用的是AABB包围盒,采用基于分裂平面的方法将根结点的包围盒划分成左右两个子结点;
分裂平面的选择是使包围盒树平衡的关键,首先确定分裂轴,使用最长轴方法,即选择的方向轴是包围盒在此方向上最长的;而后确定分裂点,选择根结点集合中所有基本几何元素的中心点在分裂轴上的投影,以最小点和最大点为两个中心点,按距离将所有投影点分为两组;将距两中心点等距的点归入含投影点少的一组。
5.如权利要求1所述的方法,其特征在于,具体的三维碰撞检测方法的流程如下:Step1:输入物体A和B,分别建立A,B的平衡包围盒树,转Step2;
Step2:将(a0,b0)加入到任务树节点存储队列LiveSet中,转Step3;
Step3:判断LiveSet是否为空,若不为空则转Step4,否则转Step11;
Step4:从LiveSet中弹出(a0,b0),转Step5;
Step5:判断(a0,b0)是否相交,若不相交则转Step3,否则转Step6;
Step6:判断a0,b0的结点状态,a0,b0均为叶子结点,则转Step7;a0,b0均不是叶子结点转Step8;a0是叶子结点,b0不是则转Step9;a0不是叶子结点b0是则转Step10;
Step7:用基本几何元素对a0,b0进行碰撞检测,若碰撞则返回True,否则返回False;
Step8:将(a1,b1),(a1,b2),(a2,b1),(a2,b2)加入到LiveSet中,转Step3;
Step9:将(a0,b1),(a0,b2)加入到LiveSet中,转Step3;
Step10:将(a1,b0),(a2,b0)加入到LiveSet中,转Step3;
Step11:返回False,结束。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中山大学,未经中山大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210049318.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种蓝盖快定试剂瓶
- 下一篇:非水电解质电池及电池包