一种三维空间关系判定方法及装置与流程

文档序号:26587745发布日期:2021-09-10 19:51阅读:197来源:国知局
一种三维空间关系判定方法及装置与流程

1.本发明设计三维空间分析技术领域,尤其涉及一种三维空间关系判定方法及装置。


背景技术:

2.在三维gis场景中,经常需要对场景中的三维对象进行空间查询与空间关系判定。例如,查询一个三维体内包含哪些三维对象,或者与哪些三维对象相交,并返回查询到的三维对象的id。
3.三维空间查询通常分为基于空间关系特征(相交、相离、包含等)的查询和基于属性特征的查询。基于属性特征的三维空间查询通常是采用结构化查询语言(structure query language,sql)实现。基于空间关系特征的三维空间查询是基于三维对象的空间关系来查询满足条件的三维对象,因此往往需要先判定三维对象间的空间关系。
4.传统的三维空间查询方法往往是基于空间型数据库进行的,因此这种查询方式需要使用空间数据库进行查询,并且还要另外计算三维对象的空间关系。随着gis应用的发展,一方面,客户端产品越来越轻量化、web化,但轻量级前端的计算能力往往有限,并且对后台的查询服务还会受网络条件和响应速度的制约,导致无法实现实时获取查询结果。


技术实现要素:

5.鉴于上述问题,本发明提供了一种三维空间关系判定方法及装置,用于解决现有技术中三维空间查询方法往往是基于空间型数据库进行的,因此这种查询方式需要使用空间数据库进行查询,并且还要另外计算三维对象的空间关系。随着gis应用的发展,一方面,客户端产品越来越轻量化、web化,但轻量级前端的计算能力往往有限,并且对后台的查询服务还会受网络条件和响应速度的制约,导致无法实现实时获取查询结果的问题,具体方案如下:
6.一种三维空间关系判定方法,包括:
7.获取查询几何体的可选空间关系,其中,所述可选空间关系为相交、相离和包含中的任意一种;
8.依据所述可选空间关系,构建与所述可选空间关系匹配的深度纹理,将所述查询几何体的深度值渲染输出到对应的深度纹理中,其中,所述深度值包括:第一深度值和第二深度值;
9.获取与所述查询几何体关联的被查询模型的id值;
10.渲染所述被查询模型,获取渲染后的被查询模型中当前片元的当前深度值;
11.基于所述当前深度值、所述深度纹理中所述深度值和所述id值,判断所述查询几何体与所述被查询模型的空间关系。
12.上述的方法,可选的,若所述可选空间关系为相交,依据所述可选空间关系,构建与所述可选空间关系匹配的深度纹理,包括:
13.构建与渲染视口大小相同的深度纹理:frontdepthtex、backdepthtex和idtex,其中,frontdepthtex为32位float格式,backdepthtex为32位float格式,idtex为32位rgba深度纹理。
14.上述的方法,可选的,若所述空间关系为相离,依据所述可选空间关系,构建与所述可选空间关系匹配的深度纹理,包括:
15.构建与渲染视口大小相同的深度纹理:frontdepthtex、backdepthtex、insideidtex和outsideidtex,其中,frontdepthtex为32位float格式,backdepthtex为32位float格式,insideidtex和outsideidtex为32位rgba深度纹理。
16.上述的方法,可选的,若所述空间关系为包含,依据所述可选空间关系,构建与所述可选空间关系匹配的深度纹理,包括:
17.构建与渲染视口大小相同的深度纹理:frontdepthtex、backdepthtex、insideidtex和outsideidtex,其中,frontdepthtex为32位float格式,backdepthtex为32位float格式,insideidtex和outsideidtex为32位rgba深度纹理。
18.上述的方法,可选的,将所述查询几何体的深度值渲染输出到对应的深度纹理中,包括:
19.采用单面渲染的方式渲染所述查询几何体的正面,渲染完成后,获取第一深度值,将所述第一深度值输出到frontdepthtex;
20.采用单面渲染的方式渲染所述查询几何体的反面,渲染完成后,获取第二深度值,将所述第二深度值输出到backdepthtex。
21.上述的方法,可选的,基于所述当前深度值、所述深度纹理中所述深度值和所述id值,判断所述查询几何体与所述被查询模型的空间关系,包括:
22.若不满足所述当前深度值<所述第一深度值或所述当前深度值>所述第二深度值,将所述id值输出到idtex;
23.读取所述idtex中的像素值,若所述像素值不是(0,0,0,0),确定所述像素值对应的目标id值;
24.基于所述目标id值确定与所述查询几何体存在相交关系的目标被查询模型。
25.上述的方法,可选的,基于所述当前深度值、所述深度纹理中所述深度值和所述id值,判断所述查询几何体与所述被查询模型的空间关系,包括:
26.若不满足所述当前深度值>所述第一深度值或者所述当前深度值<所述第二深度值,将所述id值输出到outsideidtex;
27.读取所述insideidtex中读取全部像素值,将所述全部像素值中不为(0,0,0,0)转化为id值并记录在第一集合中,同样将outsideidtex中像素值不为(0,0,0,0)的转化为id值记录在第二集合中;
28.遍历所述第二集合中的id值,如果存在目标id在所述第一集合中未出现,基于所述目标id值确定与所述查询几何体存在相离关系的目标被查询模型。
29.上述的方法,可选的,基于所述当前深度值、所述深度纹理中所述深度值和所述id值,判断所述查询几何体与所述被查询模型的空间关系,包括:
30.若不满足所述当前深度值>所述第一深度值或者所述当前深度值<所述第二深度值,将所述id值输出到outsideidtex;
31.遍历所述outsideidtex的所有像素值,若存在不为(0,0,0,0)的目标像素值,将所述目标像素值转化为目标id值;
32.基于所述目标id值确定与所述查询几何体存在包含关系的目标被查询模型。
33.一种三维空间关系判定装置,包括:
34.第一获取模块,用于获取查询几何体的可选空间关系,其中,所述可选空间关系为相交、相离和包含中的任意一种;
35.构建模块,用于依据所述可选空间关系,构建与所述可选空间关系匹配的深度纹理,将所述查询几何体的深度值渲染输出到对应的深度纹理中,其中,所述深度值包括:第一深度值和第二深度值;
36.第二获取模块,用于获取与所述查询几何体关联的被查询模型的id值;
37.渲染和获取模块,用于渲染所述被查询模型,获取渲染后的被查询模型中当前片元的当前深度值;
38.判断模块,用于基于所述当前深度值、所述深度纹理中所述深度值和所述id值,判断所述查询几何体与所述被查询模型的空间关系。
39.上述的装置,可选的,所述构建模块包括:
40.第一渲染和输出单元,用于采用单面渲染的方式渲染所述查询几何体的正面,渲染完成后,获取第一深度值,将所述第一深度值输出到frontdepthtex;
41.第二渲染和输出单元,用于采用单面渲染的方式渲染所述查询几何体的反面,渲染完成后,获取第二深度值,将所述第二深度值输出到backdepthtex。与现有技术相比,本发明包括以下优点:
42.本发明公开了一种三维空间关系判定方法及装置,该方法包括:获取查询几何体的可选空间关系,其中,可选空间关系为相交、相离和包含中的任意一种;依据可选空间关系,构建与可选空间关系匹配的深度纹理,将查询几何体的深度值输出到对应的纹理,其中,深度值包括:第一深度值和第二深度值;获取与查询几何体关联的被查询模型的id值;渲染被查询模型,获取渲染后的被查询模型中当前片元的当前深度值;基于当前深度值、深度纹理中深度值和id值,判断查询几何体与被查询模型的空间关系。上述过程中,基于纹理中的深度值、当前深度值和id值确定空间关系,不需要利用空间型数据库及三维几何体进行几何运算判定空间关系,提高了处理速度,保证了实时性。
附图说明
43.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
44.图1为本发明实施例公开的一种三维空间关系判定方法流程图;
45.图2为本发明提供的一种三维空间关系判定装置结构框图。
具体实施方式
46.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完
整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
47.本发明共公开了一种三维空间关系判定方法及装置,用于三维地理信息系统gis(geographic information system)场景中,用于解决现有三维场景中空间查询过程中出现的计算量大、实时性不强、依赖空间数据库支撑的问题,基于本发明,可实现任意凸多面体与三维场景中三维几何体的相交、相离和包含等三维空间关系判定,还可以实现基于凸多面体进行实时的三维空间查询,并返回查询对象的id。该方案实时性强,可即时获得查询结果。同时,该方案计算量小,可支持任意复杂的凸多面体几何查询结构,算法复杂性与查询体的复杂度无关。此外该方法不依赖空间数据库、网络传输的支撑,所有查询过程在前端完成,因此对轻量级客户端和b/s环境友好。
48.本发明基于图形渲染技术。通常渲染可通过不同操作系统上的渲染api接口的调用来实现。常用渲染api包括opengl(windows/linux)、opengl es(android/ios)、webgl(chrome、firefox、ie等主流浏览器)、vulkan(windows/linux)、dirextx(windows)、metal(ios)。本发明实施例所采用的方法可使用opengl2.0及以上版本,opengl es 2.0及以上版本,dirextx9及以上版本,以及webgl、vulkan、metal的所有版本均可实现。不同渲染api的实现思路和调用接口基本相同,区别只在接口名称和参数不同,使用的着色器语言不同。
49.除了渲染api之外,本发明实施例需要运行的硬件支持相应版本的渲染api。通常还需要更新硬件提供商所提供的显示驱动程序。硬件对渲染api的支持能力请查询硬件提供商的说明文档。由于本方案的使用场景多在轻量级web端,因此描述中出现的渲染相关的概念和代码采用webgl 1.0标准来举例。
50.所述判定方法的执行流程如图1所示,包括步骤:
51.s101、获取查询几何体的可选空间关系,其中,所述可选空间关系为相交、相离和包含中的任意一种;
52.本发明实施例中,优选的,所述查询几何体必须是凸多面体,由多个三角面构成,采用三角形列表(triangle list)的图元方式绘制。查询几何体的每个三角面的顶点都采用逆时针方式排列,所述查询几何体与三维空间中的其它被查询几何体的可选空间关系可以为相交、相离和包含等,基于预设的规则设定可选空间关系的判定原则,所述预设的规则可以基于经验或者具体情况进行设定,本发明实施例中不进行限定,设定完成后,获取所述查询几何体的可选空间关系。
53.s102、依据所述可选空间关系,构建与所述可选空间关系匹配的深度纹理,将所述查询几何体的深度值渲染输出到对应的深度纹理中,其中,所述深度值包括:第一深度值和第二深度值;
54.本发明实施例中,依据所述可选空间关系,构建与所述可选空间关系匹配的深度纹理,若所述可选空间关系为相交,创建三张与渲染视口大小相同的深度纹理,分别命名为frontdepthtex、backdepthtex、idtex。其中,frontdepthtex为32位float格式,backdepthtex为32位float格式,idtex为32位rgba深度纹理,r、g、b、a每个通道各占8位;若所述可选空间关系为相离,创建四张与渲染视口大小相同的深度纹理,分别命名为frontdepthtex、backdepthtex、insideidtex、outsideidtex。其中,frontdepthtex为32位
float格式,backdepthtex为32位float格式,insideidtex和outsideidtex为32位rgba深度纹理,r、g、b、a每个通道各占8位;若所述可选空间关系为包含,创建四张与渲染视口大小相同的深度纹理,分别命名为frontdepthtex、backdepthtex、insideidtex、outsideidtex。其中,frontdepthtex为32位float格式,backdepthtex为32位float格式,insideidtex和outsideidtex为32位rgba深度纹理,r、g、b、a每个通道各占8位。获取所述查询几何体的深度值,其中,所述深度值包括第一深度值和第二深度值,所述第一深度值为采用单面渲染的方式渲染所述查询几何体的正面得到的,所述第二深度值为采用单面渲染的方式渲染所述查询几何体的反面得到的。
55.s103、获取与所述查询几何体关联的被查询模型的id值;
56.本发明实施例中,将所述深度值输出到对应的深度纹理中并获取与所述查询几何体关联的被查询模型的id值,其中,所述id值是预先设定的,本发明实施例中,对具体的设定原则不进行限定,获取id时可以在制定位置获取或者是基于预设获取规则获取,本发明实施例中,对具体的获取规则不进行限定。
57.s103、渲染所述被查询模型,获取渲染后的被查询模型中当前片元的当前深度值;
58.本发明实施例中,渲染所述被查询模型,其中,所述被查询模型的渲染方式与所述可选空间关系的选取有关,可直接从内置变量中获取渲染后被查询模型当前片元的深度值currentdepth=gl_fragcoord.z。
59.s104、基于所述当前深度值、所述深度纹理中所述深度值和所述id值,判断所述查询几何体与所述被查询模型的空间关系。
60.本发明实施例中,基于所述当前深度值、所述深度纹理中所述深度值和所述id值,依据所述可选空间选取,选取对应的判断规则,基于对应的判断规则判断所述查询几何体与所述被查询模型的空间关系。
61.本发明公开了一种三维空间关系判定方法,包括:获取查询几何体的可选空间关系,其中,可选空间关系为相交、相离和包含中的任意一种;依据可选空间关系,构建与可选空间关系匹配的深度纹理,将查询几何体的深度值输出到对应的纹理,其中,深度值包括:第一深度值和第二深度值;获取与查询几何体关联的被查询模型的id值;渲染被查询模型,获取渲染后的被查询模型中当前片元的当前深度值;基于当前深度值、深度纹理中深度值和id值,判断查询几何体与被查询模型的空间关系。上述过程中,基于纹理中的深度值、当前深度值和id值确定空间关系,不需要利用空间型数据库及三维几何体进行几何运算判定空间关系,提高了处理速度,保证了实时性。
62.本发明实施例中,若所述空间关系为相交,则具体的处理过程如下:
63.1)首先创建三张与渲染视口大小相同的深度纹理,分别命名为frontdepthtex、backdepthtex、idtex。其中,frontdepthtex为32位float格式,backdepthtex为32位float格式,idtex为32位rgba深度纹理,r、g、b、a每个通道各占8位。所述查询几何体必须是凸多面体,由多个三角面构成,采用三角形列表(triangle list)的图元方式绘制。查询几何体的每个三角面的顶点都采用逆时针方式排列。
64.2)采用单面渲染的方式渲染查询几何体的正面,将深度值输出到frontdepthtex上。
65.将深度值输出到深度纹理上的过程,通常首先需要构建一个帧缓冲区,将深度纹
理作为颜色输出附件绑定到帧缓冲区。将帧缓冲区作为当前渲染的输出目标。设置渲染状态参数为在渲染过程中剔除反面部分。然后调用draw等接口渲染物体。
66.在渲染过程中可通过着色器语言对输出的颜色值进行定制。深度值在片元着色器里可以通过内置变量gl_fragcoord.z获得。此外由于深度是float值,而输出目标是r、g、b、a四通道各8位的值。因此在着色器里需要有个编码过程。工业界一般采用方法如下:
[0067][0068]
至此,经过此渲染过程,物体的深度值已经保存在frontdepthtex的深度纹理的深度纹理值中了。
[0069]
3)采用单面渲染的方式渲染查询几何体的反面,将深度值输出到backdepthtex上。
[0070]
本发明实施例中,该过程与上一步相同,只不过将渲染状态参数设置为剔除所述查询几何体的正面。
[0071]
4)将被查询模型的id值转化为一个颜色值记录在顶点属性上。
[0072]
本发明实施例中,采用一个uint32类型的值来作为一个被查询模型的id值。可存储0到4294967295范围的不同id值。在构建被查询模型要被渲染的顶点数据时,申请一长度和模型顶点数量一样的uint32数组。将模型的id值存储到这个数组中,并传给显卡用来渲染。这样在渲染模型的顶点着色器中,就可以通过顶点属性参数获得这个id值了。(获取这个id值又可以把它作为颜色输出到渲染目标深度纹理上。)
[0073]
渲染被查询模型,在片元着色器中,计算出当前片元在frontdepthtex和backdepthtex上的深度纹理坐标,接着从两张深度纹理上分别获取深度值frontdepth和backdepth,然后计算出当前片元的当前深度值currentdepth。
[0074]
计算出当前片元在frontdepthtex和backdepthtex上的深度纹理坐标的方法为:
[0075]
首先在顶点着色器中计算进行常规的模型视图投影变换
[0076]
projpos(投影坐标)=modelmatrix(模型矩阵)*viewmatrix(视图矩阵)*projectionmatrix(投影矩阵)*vertex(模型坐标)
[0077]
记录投影坐标projpos,传递到片元着色器中。在片元着色器中进行如下变换,即可得到frontdepthtex和backdepthtex上的深度纹理坐标:
[0078]
vec4 xypos=projpos(顶点的投影坐标)/projpos.w(顶点的投影坐标的w位),该步骤的目的在于将物体的顶点的投影坐标的x,y,z值归一化到0到1之间。
[0079]
vec2 texturecoord=xypos.xy*0.5+0.5,该步骤的目的在于根据归一化的投影
坐标计算出对应的深度纹理坐标,因为深度纹理坐标是在0到1之间,所以要*0.5+0.5。
[0080]
当前片元的深度值可直接从内置变量中获取当前深度值currentdepth=gl_fragcoord.z。
[0081]
6)在片元着色器中,进行条件判断,如果满足当前深度值currentdepth<第一深度值frontdepth或当前深度值currentdepth>第二深度值backdepth的条件,进行片元丢弃,若不满足此条件,则将顶点属性中的id颜色输出到idtex上。
[0082]
7)从idtex中读取像素值,如果像素值不是(0,0,0,0),就将该像素值转换回原始模型id并记录下来,转换方法为:
[0083]
id(原始的id值)=r(像素的红色分量的值)*256*256*256+g(像素的绿色分量的值)*256*256+b(像素的蓝色分量的值)*256+a(像素的透明度分量的值)
[0084]
然后将对应的模型进行隐藏,记录所有像素中的有效id后,清除idtex中的所有像素值,并赋为初始值(0,0,0,0),然后重新执行步骤5至步骤7,直至读取出的所有像素值都为(0,0,0,0),则将之前执行中记录的所有模型的id输出,作为相交查询结果。如果一开始从idtex中读取的像素值都是(0,0,0,0),则说明没有相交对象。
[0085]
本发明实施例中,若所述空间关系为相离,则具体的处理过程如下:
[0086]
1)创建四张与渲染视口大小相同的纹理,分别命名为frontdepthtex、backdepthtex、insideidtex、outsideidtex。其中,frontdepthtex为32位float格式,backdepthtex为32位float格式,insideidtex和outsideidtex为32位rgba深度纹理,r、g、b、a每个通道各占8位。
[0087]
步骤2到步骤4与相交查询相同,不再赘述。
[0088]
5)以insideidtex为渲染目标渲染被查询模型,在片元着色器中,计算出当前片元在frontdepthtex和backdepthtex上的深度纹理坐标,接着从两张深度深度纹理上分别获取深度值frontdepth和backdepth,然后计算出当前片元的当前深度值currentdepth。
[0089]
计算出当前片元在frontdepthtex和backdepthtex上的深度纹理坐标的方法为:
[0090]
首先在顶点着色器中计算进行常规的模型视图投影变换
[0091]
projpos(投影坐标)=modelmatrix(模型矩阵)*viewmatrix(视图矩阵)*projectionmatrix(投影矩阵)*vertex(模型坐标)
[0092]
记录投影坐标projpos,传递到片元着色器中。在片元着色器中进行如下变换,即可得到frontdepthtex和backdepthtex上的深度纹理坐标:
[0093]
vec4 xypos=projpos(顶点的投影坐标)/projpos.w(顶点的投影坐标的w位),该步骤的目的在于将物体的顶点的投影坐标的x,y,z值归一化到0到1之间。
[0094]
vec2 texturecoord=xypos.xy*0.5+0.5,该步骤的目的在于根据归一化的投影坐标计算出对应的深度纹理坐标,因为深度纹理坐标是在0到1之间,所以要*0.5+0.5。
[0095]
当前片元的深度值可直接从内置变量中获取当前深度值currentdepth=gl_fragcoord.z。
[0096]
6)在步骤5渲染模型的片元着色器中,进行条件判断,如果满足当前深度值currentdepth<第一深度值frontdepth或当前深度值currentdepth>第二深度值backdepth的条件,进行片元丢弃,若不满足此条件,则将顶点属性中的id颜色输出到insideidtex上。
[0097]
7)以outsideidtex为渲染目标渲染被查询模型,在片元着色器中,计算出当前片
元在frontdepthtex和backdepthtex上的深度纹理坐标,从两张深度纹理上分别获取第一深度值frontdepth和第二backdepth,计算出当前片元的当前深度值currentdepth。
[0098]
8)在步骤7渲染模型的片元着色器中,进行条件判断,如果满足当前深度值currentdepth>第一深度值frontdepth或当前深度值currentdepth<第二深度值backdepth的条件,进行片元丢弃,若不满足此条件,则将顶点属性中的id颜色输出到outsideidtex上。
[0099]
9)从insideidtex中读取所有像素值,遍历所有像素值,如果像素值不为(0,0,0,0),则将值转化为模型id,并记录在一个集合insideidset中。同样读取outsideidtex中不为(0,0,0,0)的像素值,并将对应id记录在集合outsideidset中。遍历outsideidset中的id值,如果该id在insideidset中未出现,则记录在最终输出的结果数组中。如果本次执行步骤9过程中,outsideidtex读取出的像素值有不为(0,0,0,0)的,则将insideidtex和outsideidtex的像素清除,然后赋为初始值(0,0,0,0),并重新执行步骤5到步骤9,直至outsideidtex读取出的像素值全部为(0,0,0,0),就将执行过程中记录的模型id输出为查询结果对象id。如果一开始从outsideidtex中读取的像素值都是(0,0,0,0),则说明没有相离对象。
[0100]
本发明实施例中,若所述空间关系为包含,则具体的处理过程如下:
[0101]
步骤1到步骤8与相离查询相同,不再赘述。
[0102]
9)从insideidtex中读取所有像素值,遍历所有像素值,如果不为(0,0,0,0),则将值转化为模型id,并记录在一个集合insideidset中。同样读取outsideidtex中不为(0,0,0,0)的像素值,并将对应id记录在集合outsideidset中。遍历insideidset中的id值,如果该id在outsideidset中未出现,则记录在最终输出结果数组中。如果本次执行步骤9过程中,insideidtex读取出的像素值有不为(0,0,0,0)的,则将insideidtex和outsideidtex的像素清除,然后赋为初始值(0,0,0,0),并重新执行步骤5到步骤9,直至insideidtex读取出的像素值全部为(0,0,0,0),就将执行过程中记录的结果数组输出为查询结果对象id。如果一开始从insideidtex中读取的像素值都是(0,0,0,0),则说明没有包含对象。
[0103]
本发明技术方案能够实现三维空间中物体的相交、相离、包含查询,可支持任意复杂的凸多面体几何查询结构,算法复杂性与查询体的复杂度无关。基于本方案可实现其它空间分析能力,如缓冲区分析等。由于具有高实时性,因此还可用于在gis、bim、cad等软件中实现物体的交互编辑功能,例如可用来实现用户对任意二维平面场景或三维立体空间范围中多个物体的框选。同时由于计算量小、不依赖于网络和数据库的支撑,本方案易于部署到web端、移动端等轻量级gis客户端。
[0104]
基于上述的一种空间关系的判定方法,本发明实施例中,提供了一种空间关系的判定装置,所述判定装置的结构框图如图2所示,包括:
[0105]
第一获取模块201、构建模块202、第二获取模块203、渲染和获取模块204和判断模块205。
[0106]
其中,
[0107]
所述第一获取模块201,用于获取查询几何体的可选空间关系,其中,所述可选空间关系为相交、相离和包含中的任意一种;
[0108]
所述构建模块202,用于依据所述可选空间关系,构建与所述可选空间关系匹配的
深度纹理,将所述查询几何体的深度值渲染输出到对应的深度纹理中,其中,所述深度值包括:第一深度值和第二深度值;
[0109]
所述第二获取模块203,用于获取与所述查询几何体关联的被查询模型的id值;
[0110]
所述渲染和获取模块204,用于渲染所述被查询模型,获取渲染后的被查询模型中当前片元的当前深度值;
[0111]
所述判断模块205,用于基于所述当前深度值、所述深度纹理中所述深度值和所述id值,判断所述查询几何体与所述被查询模型的空间关系。
[0112]
本发明公开了一种三维空间关系判定装置,包括:获取查询几何体的可选空间关系,其中,可选空间关系为相交、相离和包含中的任意一种;依据可选空间关系,构建与可选空间关系匹配的深度纹理,将查询几何体的深度值输出到对应的纹理,其中,深度值包括:第一深度值和第二深度值;获取与查询几何体关联的被查询模型的id值;渲染被查询模型,获取渲染后的被查询模型中当前片元的当前深度值;基于当前深度值、深度纹理中深度值和id值,判断查询几何体与被查询模型的空间关系。上述过程中,基于纹理中的深度值、当前深度值和id值确定空间关系,不需要利用空间型数据库及三维几何体进行几何运算判定空间关系,提高了处理速度,保证了实时性。
[0113]
本发明实施例中,所述构建模块202包括:
[0114]
第一渲染和输出单元206和第二渲染和输出单元207。
[0115]
其中,
[0116]
所述第一渲染和输出单元206,用于采用单面渲染的方式渲染所述查询几何体的正面,渲染完成后,获取第一深度值,将所述第一深度值输出到frontdepthtex;
[0117]
所述第二渲染和输出单元207,用于采用单面渲染的方式渲染所述查询几何体的反面,渲染完成后,获取第二深度值,将所述第二深度值输出到backdepthtex。
[0118]
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0119]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0120]
以上对本发明所提供的一种三维空间关系判定方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1