一种基于三维模型体素化的内部球改进构造方法

文档序号:6593809阅读:197来源:国知局
专利名称:一种基于三维模型体素化的内部球改进构造方法
技术领域
本发明涉及到一种智能仿真技术,具体是指一种基于三维模型体素化的内部球改进构造方法。
背景技术
碰撞检测技术是视景仿真中的重要研究内容,也是虚拟环境产生沉浸感的重要手段,在计算机视觉、虚拟现实、机器人等领域有着广泛应用。通过碰撞检测可以确定两个或者多个物体彼此之间有没有发生接触或穿透。三维模型近似逼近为碰撞检测提供了可行性,能够快速而精确地检测出物体间是否发生碰撞并进行相应处理,因而在碰撞检测中发挥着重要应用,越来越多地受到人们的关注。三维模型逼近中,有多种几何图元用于构建模型的“包围盒层次结构”(BVH)作预处理。按包围盒的不同又分为包围球法(Sphere)、轴向包围盒法(AABB)、方向包围盒法(OBB)、离散方向多面体法(k-DOP)、固定方向凸包(FDH)等。目前普遍采用的碰撞检测是空间二叉划分BSP (Binary Space Partitioning)树和AABB包围盒方式。相比计算量和方便性来讲还是模型的立方体和球体逼近更方便些。其中,球体之间的碰撞检测可以说是最简单的数学模型,由于只有一个自由度,我们只要知道球体的球心和半径就能进行检测,但也存在精度不高等问题。为了提高模型包围球逼近时碰撞检测的速度和效率,人们又构造了球体树方法。现行球体逼近方法有很多,核心问题是对模型球体个数和逼近误差的优化。文献[8]提出了基于中轴的内部球层次树结构,用于碰撞检测,球体数目相对较少但模型逼近误差相对较大。文献[9]使用椭球体代替球体,用于物体间碰撞检测,取得了较好效果,但椭球绘制时需要确定长短轴方向,增加了模型绘制负担。文献[10]提出了基于体素化的内部球层次树数据结构,用于碰撞检测和穿透量计算,但存在球体数目较多和内部球聚类效果不理想等问题。我们知道,聚类是一种研究数据之间可能存在相互关系的技术,其聚类分析的结果不仅能表明数据之间的内在联系和本质区别,还能为进一步数据处理与知识发现提供保证。球体树结构是提高碰撞检测时效性的一种很好解决方法,而球体聚类不仅为构造这种层次树结构提供方法,在模型分割中也能得到有意义的分割效果。本文在文献[10]基础上改进了内部球构造方式和层次结构聚类方法,主要贡献有:基于改进内部球半径计算减少内部球数目;通过局部细分提高球体连续性;并使用测地距离作为聚类参数,得到较好的聚类效果。

发明内容
本发明针对现有技术中的不足,提出一种在三维模型体素化基础上,构建模型的内部球逼近,并对内部球聚类得到球体内部球层次结构的方法。本发明是通过下述技术方案得以实现的:一种基于三维模型体素化的内部球改进构造方法,其特征在于包括下述步骤:(1)模型表面体素化
首先计算出模型的AABB包围盒,然后根据体素单位对包围盒进行划分,得到每个大小为LXLXL空间体素列表,分辨率为X/LXY/LXZ/L,接着使用立方体和三角面求交算法确定这些基本体元作为边界体素,并将这些体素标记为非空,从而完成3D模型表面的体素化操作;其中,L是体素单位长度,X、Y、Z分别表示三维方向的长度;其中,AABB包围盒是指一个其表面法向与坐标轴方向相一致的长方体,用两个顶点坐标 amax 和 amin来表示一个模型的 AABB,其中,amax= (Xfflax, Yfflax, Zfflax),amin= (Xfflin, Yfflin, Zfflin),以这两点为对角顶点构成的包围盒即为模型AABB包围盒;其中,立方体和三角面求交:以立方体的中心为原点建立坐标系,基于分离轴定理,对13条轴线进行测试,步骤如下:(A)计算出检测的13条轴线,分别为立方体法向3条轴线,三角形面法向I条轴线,立方体三个法向和三角形三条边叉积构成的9条轴线;如果上述立方体和三角形面均能被13条轴线分离,则立方体和三角面不相交;反之,只要其中有一条轴线不能将两者分离,则立方体和三角面相交;(B)当轴线为立方体法向时,进行三角形面和立方体最小包围盒的重叠检测;(C)当轴线为三角形面法向时,先确定立方体对角线和三角面法线的方向最接近的对角线两个顶点;若对角线顶点中小的那一个顶点在三角形面的正面一侧或对角线顶点中大的那一个顶点在三角形面的反面一侧,则立方体和三角面不相交;反之,两者相交;(D)当轴线为 立方体法向和三角形三条边的叉积时,先将三角形面和立方体的顶点都投影到轴线上,以立方体的投影点的中心为原点,然后在三角形面的投影点中找出最大值M和最小值m ;在立方体的投影点中计算投影覆盖的区间半径R,若有|M|>R、且|m|>R,则立方体和三角面不相交;反之,两者相交;若在(B)、(C)、(D)步骤过程中均没有检测到相交时,返回立方体和三角面不相交;(2)模型内部体素化在确定了封闭模型表面体素之后,对空体素的六个方向进行扫描,在六个方向均找到边界体素,即将此体素标记为内部体素,然后对内部区域填充,填充过程如下:初始化时所有体素的标志位设为0,经过表面的体素化后,使表面边界体素的标志位为I,则外部和内部体素标记为O ;具体算法步骤有:(A)选择X、Y、或Z三个方向中的一个方向进行扫描;(B)扫描到第一个标记为I且后一体素标记为O的体素,记下体素标号T1 ;其中的T表示X、Y、或Z三个方向中的一个;(C)继续扫描,找到第一个标记为I且前一体素标记为O的体素,记下体素标号
T2;(D)该体素行中,标号在T1和T2之间的即为内部体素;(E)验证标号在!^和!^之间的体素,对其进行六个方向扫描;若均有边界体素,则可确定T1和T2之间的体素是内部体素,并将其标记为-1 ;(3)内部球基本构造
(A)对边界体素中,中心在模型内部的体素进行二次细分预处理,得到新的体素集合;(B)初始化得到所有体素中心作为球心,并计算相应的半径;(C)在步骤(B)的集合中找到半径值最大的球体,作为一个确定构造的球体;(D)找到一个确定构造的球体之后,在剩余的球体中,将球心落在这个确定构造的球体内的球体作为取消的球体;(E)在剩余的球体中,重复步骤(C)和(D),在本步骤中剩余的球体是指除去步骤
(D)中确定构造的球体和球心在这个球体内的取消的球体;(F)直到所有球体都确定构造或取消构造;(4)内部球聚类构造层次球结构使用聚类方法对模型的内部球进行球体分类,用于球体层次树结构构造和网格模型分割;聚类方法的操作如下:设聚类个数为n,给定内部球个数为m,中心为Pp对应半径为其中j=0, I,…,m-Ι ;初始聚类中心为Wi,其中i=0, I,…,n-l ;迭代聚类参数ku的计算为:
权利要求
1.一种基于三维模型体素化的内部球改进构造方法,其特征在于包括下述步骤: (1)模型表面体素化 首先计算出模型的AABB包围盒,然后根据体素单位对包围盒进行划分,得到每个大小为LXLXL空间体素列表,分辨率为X/LXY/LXZ/L,接着使用立方体和三角面求交算法确定这些基本体元作为边界体素,并将这些体素标记为非空,从而完成3D模型表面的体素化操作;其中,L是体素单位长度,X、Y、Z分别表示三维方向的长度; 其中,AABB包围盒是指一个其表面法向与坐标轴方向相一致的长方体,用两个顶点坐标 amax 和 amin来表示一个模型的 AABB,其中,amax= (Xfflax, Yfflax, Zfflax),amin= (Xfflin, Yfflin, Zfflin),以这两点为对角顶点构成的包围盒即为模型AABB包围盒; 其中,立方体和三角面求交:以立方体的中心为原点建立坐标系,基于分离轴定理,对13条轴线进行测试,步骤如下: (A)计算出检测的13条轴线,分别为立方体法向3条轴线,三角形面法向I条轴线,立方体三个法向和三角形三条边叉积构成的9条轴线; 如果上述立方体和三角形面均能被13条轴线分离,则立方体和三角面不相交;反之,只要其中有一条轴线不能将两者分离,则立方体和三角面相交; (B)当轴线为立方体法向时,进行三角形面和立方体最小包围盒的重叠检测; (C)当轴线为三角形面法向 时,先确定立方体对角线和三角面法线的方向最接近的对角线两个顶点; 若对角线顶点中小的那一个顶点在三角形面的正面一侧或对角线顶点中大的那一个顶点在三角形面的反面一侧,则立方体和三角面不相交;反之,两者相交; (D)当轴线为立方体法向和三角形三条边的叉积时,先将三角形面和立方体的顶点都投影到轴线上,以立方体的投影点的中心为原点,然后在三角形面的投影点中找出最大值M和最小值m ; 在立方体的投影点中计算投影覆盖的区间半径R,若有|M|>R、且|m|>R,则立方体和三角面不相交;反之,两者相交; 若在(B)、(C)、(D)步骤过程中均没有检测到相交时,返回立方体和三角面不相交; (2)模型内部体素化 在确定了封闭模型表面体素之后,对空体素的六个方向进行扫描,在六个方向均找到边界体素,即将此体素标记为内部体素,然后对内部区域填充,填充过程如下: 初始化时所有体素的标志位设为O,经过表面的体素化后,使表面边界体素的标志位为1,则外部和内部体素标记为O ;具体算法步骤有: (A)选择X、Y、或Z三个方向中的一个方向进行扫描; (B)扫描到第一个标记为I且后一体素标记为O的体素,记下体素标号T1;其中的T表示X、Y、或Z三个方向中的一个; (C)继续扫描,找到第一个标记为I且前一体素标记为O的体素,记下体素标号T2; (D)该体素行中,标号在T1和T2之间的即为内部体素; (E)验证标号在T1和T2之间的体素,对其进行六个方向扫描;若均有边界体素,则可确定T1和T2之间的体素是内部体素,并将其标记为-1 ; (3)内部球基本构造(A)对边界体素中,中心在模型内部的体素进行二次细分预处理,得到新的体素集合; (B)初始化得到所有体素中心作为球心,并计算相应的半径; (C)在步骤(B)的集合中找到半径值最大的球体,作为一个确定构造的球体; (D)找到一个确定构造的球体之后,在剩余的球体中,将球心落在这个确定构造的球体内的球体作为取消的球体; (E)在剩余的球体中,重复步骤(C)和(D),在本步骤中剩余的球体是指除去步骤(D)中确定构造的球体和球心在这个球体内的取消的球体; (F)直到所有球体都确定构造或取消构造; (4)内部球聚类构造层次球结构 使用聚类方法对模型的内部球进行球体分类,用于球体层次树结构构造和网格模型分割;聚类方法的操作如下: 设聚类个数为n,给定内部球个数为m,中心为ρ」,对应半径为r」,其中j=0,l,…m-l ;初始聚类中心为Wi,其中i=0, I,…,n-l ;迭代聚类参数ku的计算为:
2.根据权利要求1所述的一种基于三维模型体素化的内部球改进构造方法,其特征在于,将内部球中心和聚类中心按同向投影到模型表面,按聚类中心到模型表面距离最短的方向为投影方向,所有球心按这个方向投影构成同向投影,对于有凸起、凹陷、有弯曲的三维模型表面,取最短的交点为投影点,对网格表面模型上的两个中心:内部球中心在模型表面的投影点和聚类中心在模型表面的投影点,计算模型表面两点间测地距离。
全文摘要
本发明公开了一种智能仿真技术,具体是指一种基于三维模型体素化的内部球改进构造方法。本发明是通过模型表面体素化、模型内部体素化、内部球基本构造、内部球聚类构造层次球结构等步骤改进了内部球构造方式和层次结构聚类方法。本发明的优点是内部球半径在初始化时就确定,无需作后续处理,操作简单,并能减少内部球数目,最后得到有意义的聚类效果。本发明应用于模型与模型之间的碰撞检测具有广阔的前景。
文档编号G06T17/00GK103236079SQ20131013828
公开日2013年8月7日 申请日期2013年4月19日 优先权日2013年4月19日
发明者李重, 王君良, 许鸿尧 申请人:浙江理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1