一种三维几何体的消隐方法及显示方法与流程

文档序号:18236416发布日期:2019-07-24 08:44阅读:488来源:国知局
一种三维几何体的消隐方法及显示方法与流程

本发明涉及计算机图形学领域,特别涉及一种基于表面单元分割技术的三维几何体的消隐方法及显示方法。



背景技术:

消隐是消除隐藏线和隐藏面的简称,在现代计算机图形学中占据重要地位。由于人眼的视物原理,感知空间中的三维物体的形状、位置甚至颜色、质地等实际上是通过三维物体的二维投影来实现的,而由于投影变换的本质在于消除一个维度,使得原本的三维物体失去深度信息,往往会导致图形的二义性,要消除二义性,就必须消除被遮挡的不可见的线或面,即消隐,这个过程可以借助图1来理解,经过消隐的投影图成为物体的真实图形。

图形的消隐在大量的软件中均有重要应用,尤其是以三维建模、渲染等为核心的工艺系列软件,对于可视化及相关分析具有重要意义,自上世纪60年代以来,已经有大量的消隐方法被提出,但均需要借助复杂的数学与几何关系,通过对算力要求极高的硬件来实现,实现难度较大,且选择空间较为狭窄,在以工业机器人开发软件为主的一系列软件二次开发中应用的难度较大,例如经典的Z缓冲区消隐方法(也叫深度缓冲期算法),通过在象素级上以近物取代远物,这种取代方法实现起来远比总体排序灵活简单,有利于硬件实现,然而在这个算法里,不仅需要有帧缓存来存放每个象素的颜色值,还需要一个深度缓存来存放每个象素的深度值,占用空间大,没有利用图形的相关性与连续性。

本专利提出一种之前未被提出过的新式消隐方法,实现难度远远小于现有的复杂消隐方法,而精度的高低可以根据现有硬件的算力进行调整,从而可以实现十分灵活的选择空间,可以实现在以工业机器人开发软件为主的一系列软件二次开发中得到应用。



技术实现要素:

有鉴于此,本发明的主要目的在于提供一种三维几何体的消隐方法,其实现难度远远小于现有的复杂消隐方法,而精度的高低可以根据现有硬件的算力进行调整,从而可以实现十分灵活的选择空间,可以实现在以工业机器人开发软件为主的一系列软件二次开发中得到应用。

本发明提供的技术方案为,一种三维几何体的消隐方法,包括以下步骤:

A、按照分割算法将三维几何体的表面分割成若干空间几何平面,构建该若干空间几何平面的数学表达;

B、以显示平面为垂直面发出若干条射线,构建该若干条射线的数学表达;

C、根据所述若干空间几何平面的数学表达和若干条射线的数学表达分别计算每条射线与空间几何平面的交点;

D、以所述显示平面为起点,将每条射线与空间几何平面的第一个交点作为显示点,将其余交点作为隐藏点;

E、将所述三维几何体表面的全部显示点和隐藏点构成的离散几何,借助二维投影关系投影在显示平面上,以实现三维几何体的消隐。

由上,本发明通过将三维几何体的全部表面分成若干个平面几何图形,并以计算机的显示平面垂直发射出若干条射线,该若干条射线至少穿过一个分割的平面几何图形,通过空间数学表达计算该若干条射线与平面几何图形的交点,将第一个交点作为显示点进行显示,将其余交点作为隐藏点进行隐藏,并将大量显示点和隐藏点构成的离散几何进行二维投影,从而实现计算机图形处理中,三维几何体的消隐方法。本发明的实现难度较小,且可根据计算机的算力进行灵活调整,从而实现三维几何体的二维投影。

其中,所述步骤A包括:

以计算机的显示平面为基准面建立笛卡尔坐标系,其中待消隐的三维几何体处于该笛卡尔坐标系内;

按照分割算法将所述三维几何体的表面分割成若干空间几何平面;

构建该若干空间几何平面在笛卡尔坐标系内的数学表达。

其中,所述步骤B包括:

以显示平面为垂直面,并以一精度单位为间距平行发射出若干条射线;

以所述三维几何体在笛卡尔坐标系内的边界作为射线的边界;

构建该若干条射线在笛卡尔坐标系内的数学表达。

其中,所述步骤C还包括:

当无法计算所述射线与空间几何平面的交点时,判定该射线未穿过所述空间几何平面,该射线与所有空间几何平面没有交点。

由上,当建立笛卡尔坐标系时,三维几何体处于笛卡尔坐标系内,由于三维几何体的外表面不在同一平面上,因此当外表面被分割成若干个空间几何平面时,从某个方向射出的射线中的一部分会穿过一个或多个空间几何平面,当每条射线穿过一个空间几何平面时,该射线与该空间几何平面的交点即为显示点进行显示,当穿过多个空间几何平面时,只将射线起点方向的第一个交点作为显示点,其余交点皆为隐藏点,除此之外,还会有一部分射线不穿过任何空间几何平面,此时通过将该部分射线的数学表达与空间三角平面的数学表达进行联立计算,则无法计算出结果,此时计算机可判断该部分射线未穿过任何空间几何平面,则不会有交点,因此也无需再执行后续判断显示点或隐藏点的步骤。

其中,所述空间几何平面包括空间三角平面。

由上,三维几何体的全部表面可用现有的有限元算法划分成大量的空间几何图形,其中三角形的计算最为准确。

其中,根据执行所述消隐方法的设备的算力调整所述精度单位大小。

由上,可根据实际工程需求,对三维几何体的表面分割进行密度的调整,同时调整射线的数量,在设备算力满足的情况下,提高分割消隐精度。

其中,所述分割算法包括有限元表面分割法。

本发明还提供了一种三维几何体的显示方法,包括上述的消隐方法。

附图说明

图1为不同消隐状态下的图形表示示意图;

图2为本发明实施例圆环外表面的不同密度的网格分割示意图;

图3为本发明实施例任一空间三角平面在笛卡尔坐标系中的示意图;

图4为本发明实施例复杂三维物体在笛卡尔坐标系中的示意图;

图5为本发明实施例一条射线穿过两个空间三角平面的示意图。

具体实施方式

本发明的主要目的在于提供一种三维几何体的消隐方法,其实现难度远远小于现有的复杂消隐方法,而精度的高低可以根据现有硬件的算力进行调整,从而可以实现十分灵活的选择空间,可以实现在以工业机器人开发软件为主的一系列软件二次开发中得到应用。

本发明的技术原理及实现步骤如下:

S01:按照分割算法将三维几何体的表面分割成若干空间三角平面;

本步骤首先需要以计算机的显示平面为基准面建立笛卡尔坐标系,其中待消隐的三维几何体处于该笛卡尔坐标系内;

其次通过采用表面分割技术,按照有限元表面分割法将所述三维几何体的表面分割成若干空间几何平面,该技术的核心在于对于待消隐的三维几何体全部表面进行有限元分割,即用现有的有限元算法划分成大量以空间三角平面(或其它几何图形,但三角形计算最为精确)为基础单元构筑的整体,通过调整雅克比点、基本单元尺寸、网格密度等,可以根据实际工程中现有的计算条件调整不同等级的精度;

如图2所示,以空间几何圆环为例,圆环的整个外表面都被分割成大量的空间三角平面,圆环的表面将可以用这些空间三角平面的数学表达式进行表达,而空间三角平面的数量取决于计算人员想要获得的精度及现有硬件的计算能力;

值得注意的是,上述内容是一种近似思想,而事实上在现有的所有主流建模软件中,对于以圆环为代表的该类异形面均是采用近似思想,圆环外表面的边缘圆弧线可使用若干条直线近似表达。

S02:构建空间三角平面的数学表达

如图3所示,在笛卡尔坐标系中,任何的空间三角平面将可以视为由三条空间直线构成的封闭区域,这个区域的边界将可以采用数值进行表达;

可以看出,任何一个空间三角平面将可以化成由图4中0,1,2为代表的三条空间直线构成的封闭区域,这个区域的边界将通过0,1,2中任意两条空间直线的交点的笛卡尔空间坐标定义,在笛卡尔空间中,对于一般的空间直线方程,有一般式、对称式、参数式、截距式四种表达方式,以截距式为例,当在x、y、z轴上的截距分别为a、b、c时,直线方程将可以表达为:

以直线0为例,其两端点分别表示为l01、l02,这两个端点在X、Y、Z轴上的投影坐标分别为x01、x02、y01、y02、z01、z02,则可以得到直线0上端点的取值范围为:

x01≤x0≤x02

y01≤y0≤y02

z01≤z0≤z02

其中,x0、y0、z0代表直线0上任意一个点在X、Y、Z轴上的投影坐标;

以此类推,将可以得到三条直线的数学表达方程及三个点的取值范围,根据上述式1的方程与取值范围联立即可得到该封闭三角区域的数学表达;

x01≤x0≤x02

y01≤y0≤y02

z01≤z0≤z02

上述表达式中,带有下标的a、b、c分别表示构成空间三角平面的三条边所在的空间直线在XYZ轴上的截距,带有下标的x y z则分别表示其取值范围,即边界条件。

S03:以显示平面为垂直面发出若干条射线,构建该若干条射线的数学表达;

如图4所示,处于笛卡尔坐标系中的三维物体,当在计算机中进行二维投影展示时,对于任何体积的三维物体,都将可以找到投影面将其全包裹的立方体,此时投影面即为人在计算机显示屏上所看到的平面,这同样在计算机中很容易得到程序表达,假设从显示平面上,以某个大小为基本单位发出若干条射线,那些穿过三维物体表面的射线的笛卡尔坐标系表达公式可以借助初等数学的基本知识得到表达;

设定一个精度基本单位,记为a,表示各射线之间间隔的最小间距单位,通过对a进行赋值,将可以方便地实现精度的调整;

根据上述建立的坐标系,从显示平面以基本单位为间距平行发射出若干条射线(上图为清楚表示而将显示平面与建立的笛卡尔坐标系oxz平面分离,事实上实际操作过程中这两个平面是重合的),其边界将根据待显示三维几何体的实际尺寸边界进行赋予,例如,某正方体在界面中显示,其边长为6,则发射出的若干条射线的边界条件为x=y=z=6,所有的射线表达式可以表示为(每一行为一条射线):

x=z=0

x=a z=0

x=0 z=a

x=z=a

x=2a z=0

x=2a z=a

x=z=2a

x=a z=2a

x=0 z=2a

x=3a z=0

x=3a z=a

x=3a z=2a

x=z=3a

x=2a z=3a

x=a z=3a

x=0 z=3a

……以此类推;

在上述已经列出的射线组表达式中,当给精度基本单位a赋值为2时,就可以完成示例正方体的全部射线表达,相应的,当对精度基本单位a赋值为1时,只需按上述类推继续列出射线表达式至6a,即可完成全部射线表达,实际运用中,当需要提高精度时,只需将a取的很小,则可以构建大量的射线;

综上,全部的射线表达可以用下面这个式子来统一表述;

其中ij取整数,m和n分别为待显示物体在x方向和z方向的最大边界,取上述表达式的ij的所有组合即可完成全部的射线表达。

S04:根据所述若干空间几何平面的数学表达和若干条射线的数学表达分别计算每条射线与空间几何平面的交点;

将上述式1~式5联立并结合各三角平面的三个端点的取值范围,即可计算得到各射线与各个三角平面的所有交点及各个交点所在的射线的数学表达;

值得说明的是,针对那些未穿过空间三角平面的射线,不进行后续的计算交点及判定该交点是“显示点”或“隐藏点”的步骤。

S05:筛选交点中的“显示点”与“隐藏点”;

由于三维几何体的外表面在笛卡尔坐标系中都被分割为若干个空间三角平面,因此从投影平面即计算机的显示平面射出的射线将会穿过至少一个空间三角平面,每个空间三角平面也会有至少一条射线穿过,当射线只穿过一个空间三角平面时,将其唯一交点作为“显示点”,当射线穿过多个空间三角平面时,此时需要对其穿过空间三角平面的所有交点进行判断,将第一个交点作为“显示点”,将其余交点作为“隐藏点”;

如图5所示,本实施例中选取一条穿过两个空间三角平面的射线为例进行解释,假定这条射线的方程为:

x=2a z=3a

则无论与其相交的两个空间三角平面表达方程组为何,其交点1和交点2的坐标形式必然为:

(2α y1 3α)

(2α y2 3α)

由于建立笛卡尔坐标系时,XYZ轴的正方向已经明确指定,因此这两个交点的y坐标y1及y2在图示情况下必然均为正,则在这种情况下,当y1<y2时,说明射线首先穿过了平面1,即交点1被定义为“显示点”,交点2被定义为“隐藏点”;

对于穿过若干个平面的情况同样采用上述判定方式,在正方向的情况下,y坐标最小的点被定义为“显示点”,其余所有点均被定义为“隐藏点”;

当然,在射线朝向负方向而非正方向的情况下,只需要采用绝对值判定即可,此处不作赘述。

S06:将“显示点”与“隐藏点”进行二维投影,实现消隐方法;

假定工程人员拥有的硬件计算能力很强,理论上将可以有无数条射线,整个三维物体的表面在被分割为大量空间三角平面后,将与无数条射线产生无数个交点,所有的交点都将借助前述的判定过程分别判定为“显示点”与“隐藏点”,事实上,不需要达到真正的无限,当射线数量密集到一定程度时,将超过人眼的视觉极限,此时人眼看到的计算机显示平面上显示的由大量交点构成的离散二维投影将变为连续的;

对于计算机而言,判定为“显示点”的交点即显示,而判定为“隐藏点”的交点即隐藏,从而整个三维物体表面将转化为大量已经被判定为“显示点”或“隐藏点”的交点构成的离散几何,在借助二维投影关系后,消隐方法将得到实现;

当硬件计算能力不足够强大时,工程人员完全可以选择较大的基本单位,从而射线数量较少,消隐精度较低,但仍然能够实现。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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