一种虚拟现实场景的操作碰撞检测方法与流程

文档序号:22190778发布日期:2020-09-11 22:02阅读:443来源:国知局
一种虚拟现实场景的操作碰撞检测方法与流程

本发明涉及一种虚拟现实场景的操作碰撞检测方法。



背景技术:

就碰撞检测算法中检测较为精确的算法而言,目前研究较成熟的方法为层次包围盒和空间分解法。

层次包围盒方法的基本思想是利用体积略大而几何特性简单的包围盒来近似地描述复杂的几何对象,进而通过构造树状层次结构逼近对象的几何模型,在对模型进行碰撞检测时对包围盒求交。该算法由于方向的任意性,可以根据被包围对象的形状特点尽可能紧密地包围对象,但同时也使得它的相交测试变得复杂。包围盒数量取值越大时,包围盒与所包围模型的贴近程度越好,因此在碰撞检测的简单性和包裹模型的紧密型需要平衡。变形体对象在运动中发生形变时,包围盒法需要重新构建或者更新围体树,重新构建整个数据结构的时间耗费巨大。

空间分割法是将整个虚拟空间划分成等体积的规则单元格,以此将场景中的模型分割成更小的群组,并只对占据了同一单元格或相邻单元格的几何对象进行相交测试。空间分割法适合于模型分布较为均匀的场景,当场景中的模型密集,分布不均时,单元格需要进一步分割,单元格之间的交叉检测和存储都需要较大空间,计算效率急剧下降。由于存储量的敏感,使它的应用领域受到很大限制。



技术实现要素:

本发明所要解决的技术问题是提供一种虚拟现实场景的操作碰撞检测方法,减少碰撞检测所需时间、提高碰撞检测准确性。

本发明所采用的技术方案是:一种虚拟现实场景的操作碰撞检测方法,其包括如下步骤:

模型预检测,采用沿坐标的aabb包围盒构建两物体可能相交区域包围盒,确定aabb包围盒相交范围,对可能相交区域进行区域划分,对每一个规划好的区域进行相交测试;通过比较两个aabb包围盒在三个坐标轴上的投影区间是否都重叠对模型碰撞进行预检测;

模型相交检测,将需要移动的物体定义为移动物体,不需要移动的物体定义为静止物体;移动物体表面定义为由若干个点构成,在数学模型中将移动的点为点向量,记为q;静止物体看做由无数个三角面包围而成;记录移动物体移动前和移动后的位置,将移动点的向量q向三角面的法向量投影,判断投影两点是否分布在三角面两侧;若分布在三角面两侧,则进一步判断移动前和移动后两点所形成的空间线段是否穿过三角面,若穿过三角面则判定为碰撞,否则没有碰撞。

进一步的,在构建两物体的aabb包围盒时,通过遍历两物体中的所有顶点,找出顶点的x坐标、y坐标和z坐标的最大值和最小值,这6个值构成包围盒的8个顶点。

进一步的,在确定静止物体的三角面位置时采用三角期望方法,将三角形的3个顶点作为3个离散变量,利用离散变量获取期望值,作为三角面可能出现的位置。

进一步的,还包括模型更新,采用平移更新或旋转更新形式。

本发明的积极效果为:本发明提出了一个结合aabb和空间划分的碰撞检测方法。通过结合传统的包围盒碰撞检测算法和空间划分法,并将检测从包围盒还原成三角面和点的碰撞检测,在减少了碰撞检测所需时间的同时也提高了碰撞检测的准确性。本发明可以满足虚拟装配技术中对碰撞检测算法准确性的需求,同时在计算时间上也满足使用者的交互习惯。

附图说明

图1为本发明原理框图。

具体实施方式

如附图1所示,本发明包括如下步骤:

1、模型预检测阶段。预检测构建两物体可能相交区域包围盒,采用沿坐标的aabb包围盒,确定两物体aabb包围盒相交范围,对可能相交区域进行区域划分,对每一个规划好的区域进行相交测试。一个给定对象的aabb包围盒被定义为包含该对象且各边平行于坐标轴的最小的六面体。给定对象的aabb包围盒通过遍历对象中的所有顶点,找出顶点的x坐标、y坐标和z坐标的最大值和最小值来得到,这6个值构成包围盒的8个顶点,相交测试是通过比较两个aabb包围盒在3个坐标轴上的投影区间是否都重叠来进行。对象的aabb包围盒在x、y、z方向上的最大最小值分别确定了它在3个坐标轴上的投影区间。

由于aabb包围盒在确定碰撞和确定包围盒相交区域上具有较高的效率,所以选用aabb包围盒来确定两包围盒的相交区域,即可能产生碰撞的区域。在利用包围盒确定可能相交区域后,对可能相交区域进行区域划分,对每一个规划好的区域进行相交测试。利用碰撞检测的时空相关性,对时空相关的部分进行相交测试可以大大减少遍历任务树的时间消耗,在保证碰撞检测精确度的同时提升碰撞检测效率。

模型预检测是根据模型的较大方形包围盒进行预先的检测,如果检测到相交,后续将对模型相交进行更加精密的计算。预检测可以大幅度的降低系的计算压力。

2、模型相交检测阶段。在不规则物体的碰撞检测中,不规则物体表面可以被认为是多个极小的点构成,在数学模型中可以将移动的极小的点定义为点向量,记为q。在虚拟操作中,将当前不需要操作的不规则物体(即认为是静止物体)看作由无数个三角面包围而成。在碰撞检测中,通过代表运动中的不规则物体(即移动物体)的点集以及代表当前无需操作不规则物体(即静止物体)的三角面来判定两物体是否有碰撞关系。

为了减少计算次数,提高计算效率,引入三角期望的概念,即是把三角形3个顶点看做3个离散变量,利用离散变量获取期望值,看做是三角面可能出现的位置。

3、判断结果。在碰撞检测中,检测碰撞的发生就是要看点集是否穿过三角面,穿过三角面就会被判定为发生碰撞。判断是否产生碰撞需要两个位置,一个是不规则物体移动之前的位置,另一个是移动之后的位置。判断点是否穿过三角面首先要判断点移动前后位置是否分布在三角面所在平面的两侧(即穿过三角面),为之后的碰撞判断做铺垫。在判断点的移动有可能穿过三角面后,通过判断移动前和移动后两点所形成的空间线段和三角面交点来确定是否发生了碰撞。

记录移动物体移动前和移动后的位置,将移动点的向量q向三角面的法向量投影,判断投影两端点是否分布在三角面两侧;若分布在三角面两侧,则进一步判断移动前和移动后两点所形成的空间线段是否穿过三角面,若穿过三角面则判定为碰撞,否则没有碰撞。

4、模型更新。在虚拟环境中,由于模型是动态运动的,所以要对虚拟环境中动态的模型进行实时地更新。虚拟环境中的模型可以看做一个点集,这个点集分布在模型的表面,在虚拟空间中对动态模型的状态和位置不断地更新也就是对点集状态和位置不断地更新。对于点集的更新有两种形式,一种是平移更新,另一种是旋转更新,其中旋转更新分为绕坐标轴的旋转和绕任意轴的旋转。在虚拟环境中,3维空间坐标变换可以采用齐次坐标技术来描述空间的各点坐标及其变换。在旋转的过程中可以默认变换的顺序分别为绕x轴旋转、绕y轴旋转和绕z轴旋转,则可以将绕x轴旋转、绕y轴旋转和绕z轴旋转的变换矩阵进行整合。

本发明提出一个结合aabb和空间划分的碰撞检测方法,通过结合传统的包围盒碰撞检测算法和空间划分法,并将检测从包围盒还原成三角面和点的碰撞检测,在减少了碰撞检测所需时间的同时也提高了碰撞检测的准确性。

本发明可以满足虚拟装配技术中对碰撞检测算法准确性的需求,同时在计算时间上也满足使用者的交互习惯。

以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1