CN113379814B - 一种三维空间关系判定方法及装置 - Google Patents
一种三维空间关系判定方法及装置 Download PDFInfo
- Publication number
- CN113379814B CN113379814B CN202110643783.5A CN202110643783A CN113379814B CN 113379814 B CN113379814 B CN 113379814B CN 202110643783 A CN202110643783 A CN 202110643783A CN 113379814 B CN113379814 B CN 113379814B
- Authority
- CN
- China
- Prior art keywords
- value
- depth
- depth value
- rendering
- spatial relationship
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 238000009877 rendering Methods 0.000 claims abstract description 110
- 239000012634 fragment Substances 0.000 claims abstract description 32
- 238000000926 separation method Methods 0.000 claims abstract description 16
- 238000010276 construction Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 abstract description 16
- 239000008186 active pharmaceutical agent Substances 0.000 description 6
- 239000011159 matrix material Substances 0.000 description 6
- 230000009466 transformation Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000002184 metal Substances 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000012732 spatial analysis Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/50—Depth or shape recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/29—Geographical information databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/90—Determination of colour characteristics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10024—Color image
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10028—Range image; Depth image; 3D point clouds
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Remote Sensing (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
Abstract
本发明公开了一种三维空间关系判定方法及装置,该方法包括:获取查询几何体的可选空间关系,可选空间关系为相交、相离和包含中的任意一种;依据可选空间关系,构建与可选空间关系匹配的深度纹理,将查询几何体的深度值输出到对应的纹理,其中,深度值包括:第一深度值和第二深度值;获取与查询几何体关联的被查询模型的ID值;渲染被查询模型,获取渲染后的被查询模型中当前片元的当前深度值;基于当前深度值、深度纹理中深度值和ID值,判断查询几何体与被查询模型的空间关系。上述过程中,基于纹理中的深度值、当前深度值和ID值确定空间关系,不需要利用空间型数据库及三维几何体进行几何运算判定空间关系,提高了处理速度,保证了实时性。
Description
技术领域
本发明设计三维空间分析技术领域,尤其涉及一种三维空间关系判定方法及装置。
背景技术
在三维GIS场景中,经常需要对场景中的三维对象进行空间查询与空间关系判定。例如,查询一个三维体内包含哪些三维对象,或者与哪些三维对象相交,并返回查询到的三维对象的ID。
三维空间查询通常分为基于空间关系特征(相交、相离、包含等)的查询和基于属性特征的查询。基于属性特征的三维空间查询通常是采用结构化查询语言(StructureQuery Language,SQL)实现。基于空间关系特征的三维空间查询是基于三维对象的空间关系来查询满足条件的三维对象,因此往往需要先判定三维对象间的空间关系。
传统的三维空间查询方法往往是基于空间型数据库进行的,因此这种查询方式需要使用空间数据库进行查询,并且还要另外计算三维对象的空间关系。随着GIS应用的发展,一方面,客户端产品越来越轻量化、Web化,但轻量级前端的计算能力往往有限,并且对后台的查询服务还会受网络条件和响应速度的制约,导致无法实现实时获取查询结果。
发明内容
鉴于上述问题,本发明提供了一种三维空间关系判定方法及装置,用于解决现有技术中三维空间查询方法往往是基于空间型数据库进行的,因此这种查询方式需要使用空间数据库进行查询,并且还要另外计算三维对象的空间关系。随着GIS应用的发展,一方面,客户端产品越来越轻量化、Web化,但轻量级前端的计算能力往往有限,并且对后台的查询服务还会受网络条件和响应速度的制约,导致无法实现实时获取查询结果的问题,具体方案如下:
一种三维空间关系判定方法,包括:
获取查询几何体的可选空间关系,其中,所述可选空间关系为相交、相离和包含中的任意一种;
依据所述可选空间关系,构建与所述可选空间关系匹配的深度纹理,将所述查询几何体的深度值渲染输出到对应的深度纹理中,其中,所述深度值包括:第一深度值和第二深度值;
获取与所述查询几何体关联的被查询模型的ID值;
渲染所述被查询模型,获取渲染后的被查询模型中当前片元的当前深度值;
基于所述当前深度值、所述深度纹理中所述深度值和所述ID值,判断所述查询几何体与所述被查询模型的空间关系。
上述的方法,可选的,若所述可选空间关系为相交,依据所述可选空间关系,构建与所述可选空间关系匹配的深度纹理,包括:
构建与渲染视口大小相同的深度纹理:frontDepthTex、backDepthTex和idTex,其中,frontDepthTex为32位float格式,backDepthTex为32位float格式,idTex为32位RGBA深度纹理。
上述的方法,可选的,若所述空间关系为相离,依据所述可选空间关系,构建与所述可选空间关系匹配的深度纹理,包括:
构建与渲染视口大小相同的深度纹理:frontDepthTex、backDepthTex、insideIDTex和outsideIDTex,其中,frontDepthTex为32位float格式,backDepthTex为32位float格式,insideIDTex和outsideIDTex为32位RGBA深度纹理。
上述的方法,可选的,若所述空间关系为包含,依据所述可选空间关系,构建与所述可选空间关系匹配的深度纹理,包括:
构建与渲染视口大小相同的深度纹理:frontDepthTex、backDepthTex、insideIDTex和outsideIDTex,其中,frontDepthTex为32位float格式,backDepthTex为32位float格式,insideIDTex和outsideIDTex为32位RGBA深度纹理。
上述的方法,可选的,将所述查询几何体的深度值渲染输出到对应的深度纹理中,包括:
采用单面渲染的方式渲染所述查询几何体的正面,渲染完成后,获取第一深度值,将所述第一深度值输出到frontDepthTex;
采用单面渲染的方式渲染所述查询几何体的反面,渲染完成后,获取第二深度值,将所述第二深度值输出到backDepthTex。
上述的方法,可选的,基于所述当前深度值、所述深度纹理中所述深度值和所述ID值,判断所述查询几何体与所述被查询模型的空间关系,包括:
若不满足所述当前深度值<所述第一深度值或所述当前深度值>所述第二深度值,将所述ID值输出到idTex;
读取所述idTex中的像素值,若所述像素值不是(0,0,0,0),确定所述像素值对应的目标ID值;
基于所述目标ID值确定与所述查询几何体存在相交关系的目标被查询模型。
上述的方法,可选的,基于所述当前深度值、所述深度纹理中所述深度值和所述ID值,判断所述查询几何体与所述被查询模型的空间关系,包括:
若不满足所述当前深度值>所述第一深度值或者所述当前深度值<所述第二深度值,将所述ID值输出到outsideIDTex;
读取所述insideIDTex中读取全部像素值,将所述全部像素值中不为(0,0,0,0)转化为ID值并记录在第一集合中,同样将outsideIDTex中像素值不为(0,0,0,0)的转化为ID值记录在第二集合中;
遍历所述第二集合中的ID值,如果存在目标ID在所述第一集合中未出现,基于所述目标ID值确定与所述查询几何体存在相离关系的目标被查询模型。
上述的方法,可选的,基于所述当前深度值、所述深度纹理中所述深度值和所述ID值,判断所述查询几何体与所述被查询模型的空间关系,包括:
若不满足所述当前深度值>所述第一深度值或者所述当前深度值<所述第二深度值,将所述ID值输出到outsideIDTex;
遍历所述outsideIDTex的所有像素值,若存在不为(0,0,0,0)的目标像素值,将所述目标像素值转化为目标ID值;
基于所述目标ID值确定与所述查询几何体存在包含关系的目标被查询模型。
一种三维空间关系判定装置,包括:
第一获取模块,用于获取查询几何体的可选空间关系,其中,所述可选空间关系为相交、相离和包含中的任意一种;
构建模块,用于依据所述可选空间关系,构建与所述可选空间关系匹配的深度纹理,将所述查询几何体的深度值渲染输出到对应的深度纹理中,其中,所述深度值包括:第一深度值和第二深度值;
第二获取模块,用于获取与所述查询几何体关联的被查询模型的ID值;
渲染和获取模块,用于渲染所述被查询模型,获取渲染后的被查询模型中当前片元的当前深度值;
判断模块,用于基于所述当前深度值、所述深度纹理中所述深度值和所述ID值,判断所述查询几何体与所述被查询模型的空间关系。
上述的装置,可选的,所述构建模块包括:
第一渲染和输出单元,用于采用单面渲染的方式渲染所述查询几何体的正面,渲染完成后,获取第一深度值,将所述第一深度值输出到frontDepthTex;
第二渲染和输出单元,用于采用单面渲染的方式渲染所述查询几何体的反面,渲染完成后,获取第二深度值,将所述第二深度值输出到backDepthTex。与现有技术相比,本发明包括以下优点:
本发明公开了一种三维空间关系判定方法及装置,该方法包括:获取查询几何体的可选空间关系,其中,可选空间关系为相交、相离和包含中的任意一种;依据可选空间关系,构建与可选空间关系匹配的深度纹理,将查询几何体的深度值输出到对应的纹理,其中,深度值包括:第一深度值和第二深度值;获取与查询几何体关联的被查询模型的ID值;渲染被查询模型,获取渲染后的被查询模型中当前片元的当前深度值;基于当前深度值、深度纹理中深度值和ID值,判断查询几何体与被查询模型的空间关系。上述过程中,基于纹理中的深度值、当前深度值和ID值确定空间关系,不需要利用空间型数据库及三维几何体进行几何运算判定空间关系,提高了处理速度,保证了实时性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例公开的一种三维空间关系判定方法流程图;
图2为本发明提供的一种三维空间关系判定装置结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明共公开了一种三维空间关系判定方法及装置,用于三维地理信息系统GIS(Geographic Information System)场景中,用于解决现有三维场景中空间查询过程中出现的计算量大、实时性不强、依赖空间数据库支撑的问题,基于本发明,可实现任意凸多面体与三维场景中三维几何体的相交、相离和包含等三维空间关系判定,还可以实现基于凸多面体进行实时的三维空间查询,并返回查询对象的ID。该方案实时性强,可即时获得查询结果。同时,该方案计算量小,可支持任意复杂的凸多面体几何查询结构,算法复杂性与查询体的复杂度无关。此外该方法不依赖空间数据库、网络传输的支撑,所有查询过程在前端完成,因此对轻量级客户端和B/S环境友好。
本发明基于图形渲染技术。通常渲染可通过不同操作系统上的渲染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的实现思路和调用接口基本相同,区别只在接口名称和参数不同,使用的着色器语言不同。
除了渲染API之外,本发明实施例需要运行的硬件支持相应版本的渲染API。通常还需要更新硬件提供商所提供的显示驱动程序。硬件对渲染API的支持能力请查询硬件提供商的说明文档。由于本方案的使用场景多在轻量级Web端,因此描述中出现的渲染相关的概念和代码采用WebGL 1.0标准来举例。
所述判定方法的执行流程如图1所示,包括步骤:
S101、获取查询几何体的可选空间关系,其中,所述可选空间关系为相交、相离和包含中的任意一种;
本发明实施例中,优选的,所述查询几何体必须是凸多面体,由多个三角面构成,采用三角形列表(triangle list)的图元方式绘制。查询几何体的每个三角面的顶点都采用逆时针方式排列,所述查询几何体与三维空间中的其它被查询几何体的可选空间关系可以为相交、相离和包含等,基于预设的规则设定可选空间关系的判定原则,所述预设的规则可以基于经验或者具体情况进行设定,本发明实施例中不进行限定,设定完成后,获取所述查询几何体的可选空间关系。
S102、依据所述可选空间关系,构建与所述可选空间关系匹配的深度纹理,将所述查询几何体的深度值渲染输出到对应的深度纹理中,其中,所述深度值包括:第一深度值和第二深度值;
本发明实施例中,依据所述可选空间关系,构建与所述可选空间关系匹配的深度纹理,若所述可选空间关系为相交,创建三张与渲染视口大小相同的深度纹理,分别命名为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位。获取所述查询几何体的深度值,其中,所述深度值包括第一深度值和第二深度值,所述第一深度值为采用单面渲染的方式渲染所述查询几何体的正面得到的,所述第二深度值为采用单面渲染的方式渲染所述查询几何体的反面得到的。
S103、获取与所述查询几何体关联的被查询模型的ID值;
本发明实施例中,将所述深度值输出到对应的深度纹理中并获取与所述查询几何体关联的被查询模型的ID值,其中,所述ID值是预先设定的,本发明实施例中,对具体的设定原则不进行限定,获取ID时可以在制定位置获取或者是基于预设获取规则获取,本发明实施例中,对具体的获取规则不进行限定。
S103、渲染所述被查询模型,获取渲染后的被查询模型中当前片元的当前深度值;
本发明实施例中,渲染所述被查询模型,其中,所述被查询模型的渲染方式与所述可选空间关系的选取有关,可直接从内置变量中获取渲染后被查询模型当前片元的深度值currentDepth=gl_FragCoord.z。
S104、基于所述当前深度值、所述深度纹理中所述深度值和所述ID值,判断所述查询几何体与所述被查询模型的空间关系。
本发明实施例中,基于所述当前深度值、所述深度纹理中所述深度值和所述ID值,依据所述可选空间选取,选取对应的判断规则,基于对应的判断规则判断所述查询几何体与所述被查询模型的空间关系。
本发明公开了一种三维空间关系判定方法,包括:获取查询几何体的可选空间关系,其中,可选空间关系为相交、相离和包含中的任意一种;依据可选空间关系,构建与可选空间关系匹配的深度纹理,将查询几何体的深度值输出到对应的纹理,其中,深度值包括:第一深度值和第二深度值;获取与查询几何体关联的被查询模型的ID值;渲染被查询模型,获取渲染后的被查询模型中当前片元的当前深度值;基于当前深度值、深度纹理中深度值和ID值,判断查询几何体与被查询模型的空间关系。上述过程中,基于纹理中的深度值、当前深度值和ID值确定空间关系,不需要利用空间型数据库及三维几何体进行几何运算判定空间关系,提高了处理速度,保证了实时性。
本发明实施例中,若所述空间关系为相交,则具体的处理过程如下:
1)首先创建三张与渲染视口大小相同的深度纹理,分别命名为frontDepthTex、backDepthTex、idTex。其中,frontDepthTex为32位float格式,backDepthTex为32位float格式,idTex为32位RGBA深度纹理,R、G、B、A每个通道各占8位。所述查询几何体必须是凸多面体,由多个三角面构成,采用三角形列表(triangle list)的图元方式绘制。查询几何体的每个三角面的顶点都采用逆时针方式排列。
2)采用单面渲染的方式渲染查询几何体的正面,将深度值输出到frontDepthTex上。
将深度值输出到深度纹理上的过程,通常首先需要构建一个帧缓冲区,将深度纹理作为颜色输出附件绑定到帧缓冲区。将帧缓冲区作为当前渲染的输出目标。设置渲染状态参数为在渲染过程中剔除反面部分。然后调用draw等接口渲染物体。
在渲染过程中可通过着色器语言对输出的颜色值进行定制。深度值在片元着色器里可以通过内置变量gl_FragCoord.z获得。此外由于深度是float值,而输出目标是R、G、B、A四通道各8位的值。因此在着色器里需要有个编码过程。工业界一般采用方法如下:
至此,经过此渲染过程,物体的深度值已经保存在frontDepthTex的深度纹理的深度纹理值中了。
3)采用单面渲染的方式渲染查询几何体的反面,将深度值输出到backDepthTex上。
本发明实施例中,该过程与上一步相同,只不过将渲染状态参数设置为剔除所述查询几何体的正面。
4)将被查询模型的ID值转化为一个颜色值记录在顶点属性上。
本发明实施例中,采用一个uint32类型的值来作为一个被查询模型的ID值。可存储0到4294967295范围的不同ID值。在构建被查询模型要被渲染的顶点数据时,申请一长度和模型顶点数量一样的uint32数组。将模型的ID值存储到这个数组中,并传给显卡用来渲染。这样在渲染模型的顶点着色器中,就可以通过顶点属性参数获得这个ID值了。(获取这个ID值又可以把它作为颜色输出到渲染目标深度纹理上。)
渲染被查询模型,在片元着色器中,计算出当前片元在frontDepthTex和backDepthTex上的深度纹理坐标,接着从两张深度纹理上分别获取深度值frontDepth和backDepth,然后计算出当前片元的当前深度值currentDepth。
计算出当前片元在frontDepthTex和backDepthTex上的深度纹理坐标的方法为:
首先在顶点着色器中计算进行常规的模型视图投影变换
projPos(投影坐标)=modelMatrix(模型矩阵)*viewMatrix(视图矩阵)*projectionMatrix(投影矩阵)*vertex(模型坐标)
记录投影坐标projPos,传递到片元着色器中。在片元着色器中进行如下变换,即可得到frontDepthTex和backDepthTex上的深度纹理坐标:
vec4 xyPos=projPos(顶点的投影坐标)/projPos.w(顶点的投影坐标的w位),该步骤的目的在于将物体的顶点的投影坐标的x,y,z值归一化到0到1之间。
vec2 textureCoord=xyPos.xy*0.5+0.5,该步骤的目的在于根据归一化的投影坐标计算出对应的深度纹理坐标,因为深度纹理坐标是在0到1之间,所以要*0.5+0.5。
当前片元的深度值可直接从内置变量中获取当前深度值currentDepth=gl_FragCoord.z。
6)在片元着色器中,进行条件判断,如果满足当前深度值currentDepth<第一深度值frontDepth或当前深度值currentDepth>第二深度值backDepth的条件,进行片元丢弃,若不满足此条件,则将顶点属性中的ID颜色输出到idTex上。
7)从idTex中读取像素值,如果像素值不是(0,0,0,0),就将该像素值转换回原始模型ID并记录下来,转换方法为:
ID(原始的ID值)=R(像素的红色分量的值)*256*256*256+G(像素的绿色分量的值)*256*256+B(像素的蓝色分量的值)*256+A(像素的透明度分量的值)
然后将对应的模型进行隐藏,记录所有像素中的有效ID后,清除idTex中的所有像素值,并赋为初始值(0,0,0,0),然后重新执行步骤5至步骤7,直至读取出的所有像素值都为(0,0,0,0),则将之前执行中记录的所有模型的ID输出,作为相交查询结果。如果一开始从idTex中读取的像素值都是(0,0,0,0),则说明没有相交对象。
本发明实施例中,若所述空间关系为相离,则具体的处理过程如下:
1)创建四张与渲染视口大小相同的纹理,分别命名为frontDepthTex、backDepthTex、insideIDTex、outsideIDTex。其中,frontDepthTex为32位float格式,backDepthTex为32位float格式,insideIDTex和outsideIDTex为32位RGBA深度纹理,R、G、B、A每个通道各占8位。
步骤2到步骤4与相交查询相同,不再赘述。
5)以insideIDTex为渲染目标渲染被查询模型,在片元着色器中,计算出当前片元在frontDepthTex和backDepthTex上的深度纹理坐标,接着从两张深度深度纹理上分别获取深度值frontDepth和backDepth,然后计算出当前片元的当前深度值currentDepth。
计算出当前片元在frontDepthTex和backDepthTex上的深度纹理坐标的方法为:
首先在顶点着色器中计算进行常规的模型视图投影变换
projPos(投影坐标)=modelMatrix(模型矩阵)*viewMatrix(视图矩阵)*projectionMatrix(投影矩阵)*vertex(模型坐标)
记录投影坐标projPos,传递到片元着色器中。在片元着色器中进行如下变换,即可得到frontDepthTex和backDepthTex上的深度纹理坐标:
vec4 xyPos=projPos(顶点的投影坐标)/projPos.w(顶点的投影坐标的w位),该步骤的目的在于将物体的顶点的投影坐标的x,y,z值归一化到0到1之间。
vec2 textureCoord=xyPos.xy*0.5+0.5,该步骤的目的在于根据归一化的投影坐标计算出对应的深度纹理坐标,因为深度纹理坐标是在0到1之间,所以要*0.5+0.5。
当前片元的深度值可直接从内置变量中获取当前深度值currentDepth=gl_FragCoord.z。
6)在步骤5渲染模型的片元着色器中,进行条件判断,如果满足当前深度值currentDepth<第一深度值frontDepth或当前深度值currentDepth>第二深度值backDepth的条件,进行片元丢弃,若不满足此条件,则将顶点属性中的ID颜色输出到insideIDTex上。
7)以outsideIDTex为渲染目标渲染被查询模型,在片元着色器中,计算出当前片元在frontDepthTex和backDepthTex上的深度纹理坐标,从两张深度纹理上分别获取第一深度值frontDepth和第二backDepth,计算出当前片元的当前深度值currentDepth。
8)在步骤7渲染模型的片元着色器中,进行条件判断,如果满足当前深度值currentDepth>第一深度值frontDepth或当前深度值currentDepth<第二深度值backDepth的条件,进行片元丢弃,若不满足此条件,则将顶点属性中的ID颜色输出到outsideIDTex上。
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),则说明没有相离对象。
本发明实施例中,若所述空间关系为包含,则具体的处理过程如下:
步骤1到步骤8与相离查询相同,不再赘述。
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),则说明没有包含对象。
本发明技术方案能够实现三维空间中物体的相交、相离、包含查询,可支持任意复杂的凸多面体几何查询结构,算法复杂性与查询体的复杂度无关。基于本方案可实现其它空间分析能力,如缓冲区分析等。由于具有高实时性,因此还可用于在GIS、BIM、CAD等软件中实现物体的交互编辑功能,例如可用来实现用户对任意二维平面场景或三维立体空间范围中多个物体的框选。同时由于计算量小、不依赖于网络和数据库的支撑,本方案易于部署到Web端、移动端等轻量级GIS客户端。
基于上述的一种空间关系的判定方法,本发明实施例中,提供了一种空间关系的判定装置,所述判定装置的结构框图如图2所示,包括:
第一获取模块201、构建模块202、第二获取模块203、渲染和获取模块204和判断模块205。
其中,
所述第一获取模块201,用于获取查询几何体的可选空间关系,其中,所述可选空间关系为相交、相离和包含中的任意一种;
所述构建模块202,用于依据所述可选空间关系,构建与所述可选空间关系匹配的深度纹理,将所述查询几何体的深度值渲染输出到对应的深度纹理中,其中,所述深度值包括:第一深度值和第二深度值;
所述第二获取模块203,用于获取与所述查询几何体关联的被查询模型的ID值;
所述渲染和获取模块204,用于渲染所述被查询模型,获取渲染后的被查询模型中当前片元的当前深度值;
所述判断模块205,用于基于所述当前深度值、所述深度纹理中所述深度值和所述ID值,判断所述查询几何体与所述被查询模型的空间关系。
本发明公开了一种三维空间关系判定装置,包括:获取查询几何体的可选空间关系,其中,可选空间关系为相交、相离和包含中的任意一种;依据可选空间关系,构建与可选空间关系匹配的深度纹理,将查询几何体的深度值输出到对应的纹理,其中,深度值包括:第一深度值和第二深度值;获取与查询几何体关联的被查询模型的ID值;渲染被查询模型,获取渲染后的被查询模型中当前片元的当前深度值;基于当前深度值、深度纹理中深度值和ID值,判断查询几何体与被查询模型的空间关系。上述过程中,基于纹理中的深度值、当前深度值和ID值确定空间关系,不需要利用空间型数据库及三维几何体进行几何运算判定空间关系,提高了处理速度,保证了实时性。
本发明实施例中,所述构建模块202包括:
第一渲染和输出单元206和第二渲染和输出单元207。
其中,
所述第一渲染和输出单元206,用于采用单面渲染的方式渲染所述查询几何体的正面,渲染完成后,获取第一深度值,将所述第一深度值输出到frontDepthTex;
所述第二渲染和输出单元207,用于采用单面渲染的方式渲染所述查询几何体的反面,渲染完成后,获取第二深度值,将所述第二深度值输出到backDepthTex。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种三维空间关系判定方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种三维空间关系判定方法,其特征在于,包括:
获取查询几何体的可选空间关系,其中,所述可选空间关系为相交、相离和包含中的任意一种;
依据所述可选空间关系,构建与所述可选空间关系匹配的深度纹理,将所述查询几何体的深度值渲染输出到对应的深度纹理中,其中,所述深度值包括:第一深度值和第二深度值;
获取与所述查询几何体关联的被查询模型的ID值;
渲染所述被查询模型,获取渲染后的被查询模型中当前片元的当前深度值;
基于所述当前深度值、所述深度纹理中所述深度值和所述ID值,判断所述查询几何体与所述被查询模型的空间关系。
2.根据权利要求1所述的方法,其特征在于,若所述可选空间关系为相交,依据所述可选空间关系,构建与所述可选空间关系匹配的深度纹理,包括:
构建与渲染视口大小相同的深度纹理:frontDepthTex、backDepthTex和idTex,其中,frontDepthTex为32位float格式,backDepthTex为32位float格式,idTex为32位RGBA深度纹理。
3.根据权利要求1所述的方法,其特征在于,若所述空间关系为相离,依据所述可选空间关系,构建与所述可选空间关系匹配的深度纹理,包括:
构建与渲染视口大小相同的深度纹理:frontDepthTex、backDepthTex、insideIDTex和outsideIDTex,其中,frontDepthTex为32位float格式,backDepthTex为32位float格式,insideIDTex和outsideIDTex为32位RGBA深度纹理。
4.根据权利要求1所述的方法,其特征在于,若所述空间关系为包含,依据所述可选空间关系,构建与所述可选空间关系匹配的深度纹理,包括:
构建与渲染视口大小相同的深度纹理:frontDepthTex、backDepthTex、insideIDTex和outsideIDTex,其中,frontDepthTex为32位float格式,backDepthTex为32位float格式,insideIDTex和outsideIDTex为32位RGBA深度纹理。
5.根据权利要求1所述的方法,其特征在于,将所述查询几何体的深度值渲染输出到对应的深度纹理中,包括:
采用单面渲染的方式渲染所述查询几何体的正面,渲染完成后,获取第一深度值,将所述第一深度值输出到frontDepthTex;
采用单面渲染的方式渲染所述查询几何体的反面,渲染完成后,获取第二深度值,将所述第二深度值输出到backDepthTex。
6.根据权利要求2所述的方法,其特征在于,基于所述当前深度值、所述深度纹理中所述深度值和所述ID值,判断所述查询几何体与所述被查询模型的空间关系,包括:
若不满足所述当前深度值<所述第一深度值或所述当前深度值>所述第二深度值,将所述ID值输出到idTex;
读取所述idTex中的像素值,若所述像素值不是(0,0,0,0),确定所述像素值对应的目标ID值;
基于所述目标ID值确定与所述查询几何体存在相交关系的目标被查询模型。
7.根据权利要求3所述的方法,其特征在于,基于所述当前深度值、所述深度纹理中所述深度值和所述ID值,判断所述查询几何体与所述被查询模型的空间关系,包括:
若不满足所述当前深度值>所述第一深度值或者所述当前深度值<所述第二深度值,将所述ID值输出到outsideIDTex;
读取所述insideIDTex中读取全部像素值,将所述全部像素值中不为(0,0,0,0)转化为ID值并记录在第一集合中,同样将outsideIDTex中像素值不为(0,0,0,0)的转化为ID值记录在第二集合中;
遍历所述第二集合中的ID值,如果存在目标ID值在所述第一集合中未出现,基于所述目标ID值确定与所述查询几何体存在相离关系的目标被查询模型。
8.根据权利要求4所述的方法,其特征在于,基于所述当前深度值、所述深度纹理中所述深度值和所述ID值,判断所述查询几何体与所述被查询模型的空间关系,包括:
若不满足所述当前深度值>所述第一深度值或者所述当前深度值<所述第二深度值,将所述ID值输出到outsideIDTex;
遍历所述outsideIDTex的所有像素值,若存在不为(0,0,0,0)的目标像素值,将所述目标像素值转化为目标ID值;
基于所述目标ID值确定与所述查询几何体存在包含关系的目标被查询模型。
9.一种三维空间关系判定装置,其特征在于,包括:
第一获取模块,用于获取查询几何体的可选空间关系,其中,所述可选空间关系为相交、相离和包含中的任意一种;
构建模块,用于依据所述可选空间关系,构建与所述可选空间关系匹配的深度纹理,将所述查询几何体的深度值渲染输出到对应的深度纹理中,其中,所述深度值包括:第一深度值和第二深度值;
第二获取模块,用于获取与所述查询几何体关联的被查询模型的ID值;
渲染和获取模块,用于渲染所述被查询模型,获取渲染后的被查询模型中当前片元的当前深度值;
判断模块,用于基于所述当前深度值、所述深度纹理中所述深度值和所述ID值,判断所述查询几何体与所述被查询模型的空间关系。
10.根据权利要求9所述的装置,其特征在于,所述构建模块包括:
第一渲染和输出单元,用于采用单面渲染的方式渲染所述查询几何体的正面,渲染完成后,获取第一深度值,将所述第一深度值输出到frontDepthTex;
第二渲染和输出单元,用于采用单面渲染的方式渲染所述查询几何体的反面,渲染完成后,获取第二深度值,将所述第二深度值输出到backDepthTex。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110643783.5A CN113379814B (zh) | 2021-06-09 | 2021-06-09 | 一种三维空间关系判定方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110643783.5A CN113379814B (zh) | 2021-06-09 | 2021-06-09 | 一种三维空间关系判定方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113379814A CN113379814A (zh) | 2021-09-10 |
CN113379814B true CN113379814B (zh) | 2024-04-09 |
Family
ID=77573294
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110643783.5A Active CN113379814B (zh) | 2021-06-09 | 2021-06-09 | 一种三维空间关系判定方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113379814B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113935097B (zh) * | 2021-10-26 | 2022-12-06 | 山东同圆数字科技有限公司 | 一种基于bim引擎数据的建筑空间分析方法及系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101271585A (zh) * | 2008-03-31 | 2008-09-24 | 北京大学 | 一种在图形处理器上拾取三维几何图元的方法 |
WO2012132237A1 (ja) * | 2011-03-31 | 2012-10-04 | パナソニック株式会社 | 立体視画像の描画を行う画像描画装置、画像描画方法、画像描画プログラム |
CN109754454A (zh) * | 2019-01-30 | 2019-05-14 | 腾讯科技(深圳)有限公司 | 物体模型的渲染方法、装置、存储介质及设备 |
CN110111408A (zh) * | 2019-05-16 | 2019-08-09 | 洛阳众智软件科技股份有限公司 | 基于图形学的大场景快速求交方法 |
CN110648368A (zh) * | 2019-08-30 | 2020-01-03 | 广东奥普特科技股份有限公司 | 一种基于边缘特征的标定板角点判别方法 |
CN110889890A (zh) * | 2019-11-29 | 2020-03-17 | 深圳市商汤科技有限公司 | 图像处理方法及装置、处理器、电子设备及存储介质 |
CN111508052A (zh) * | 2020-04-23 | 2020-08-07 | 网易(杭州)网络有限公司 | 三维网格体的渲染方法和装置 |
CN112115216A (zh) * | 2020-07-24 | 2020-12-22 | 广东广量测绘信息技术有限公司 | 一种用于电子地图模型空间绑定属性数据的方法 |
CN112270756A (zh) * | 2020-11-24 | 2021-01-26 | 山东汇颐信息技术有限公司 | 一种应用于bim模型文件的数据渲染方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10592242B2 (en) * | 2018-07-20 | 2020-03-17 | Cesium GS, Inc. | Systems and methods for rendering vector data on static and dynamic-surfaces using screen space decals and a depth texture |
-
2021
- 2021-06-09 CN CN202110643783.5A patent/CN113379814B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101271585A (zh) * | 2008-03-31 | 2008-09-24 | 北京大学 | 一种在图形处理器上拾取三维几何图元的方法 |
WO2012132237A1 (ja) * | 2011-03-31 | 2012-10-04 | パナソニック株式会社 | 立体視画像の描画を行う画像描画装置、画像描画方法、画像描画プログラム |
CN109754454A (zh) * | 2019-01-30 | 2019-05-14 | 腾讯科技(深圳)有限公司 | 物体模型的渲染方法、装置、存储介质及设备 |
CN110111408A (zh) * | 2019-05-16 | 2019-08-09 | 洛阳众智软件科技股份有限公司 | 基于图形学的大场景快速求交方法 |
CN110648368A (zh) * | 2019-08-30 | 2020-01-03 | 广东奥普特科技股份有限公司 | 一种基于边缘特征的标定板角点判别方法 |
CN110889890A (zh) * | 2019-11-29 | 2020-03-17 | 深圳市商汤科技有限公司 | 图像处理方法及装置、处理器、电子设备及存储介质 |
CN111508052A (zh) * | 2020-04-23 | 2020-08-07 | 网易(杭州)网络有限公司 | 三维网格体的渲染方法和装置 |
CN112115216A (zh) * | 2020-07-24 | 2020-12-22 | 广东广量测绘信息技术有限公司 | 一种用于电子地图模型空间绑定属性数据的方法 |
CN112270756A (zh) * | 2020-11-24 | 2021-01-26 | 山东汇颐信息技术有限公司 | 一种应用于bim模型文件的数据渲染方法 |
Non-Patent Citations (1)
Title |
---|
"面向全景特征提取的评估数据集构建及算法评估";韩婧;《中国优秀硕士学位论文全文数据库(电子期刊)信息科技辑》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113379814A (zh) | 2021-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112270756B (zh) | 一种应用于bim模型文件的数据渲染方法 | |
CN108648269B (zh) | 三维建筑物模型的单体化方法和系统 | |
CA2790842C (en) | Integrated gis system with interactive 3d interface | |
JP5336067B2 (ja) | グラフィックスを処理する方法および装置 | |
CN110990516B (zh) | 地图数据的处理方法、装置和服务器 | |
US9519999B1 (en) | Methods and systems for providing a preloader animation for image viewers | |
CN106548498B (zh) | 用于处理压缩纹理的方法和设备 | |
CN108701139A (zh) | 拆分瓦片地图渲染 | |
Greß et al. | GPU‐based collision detection for deformable parameterized surfaces | |
US9495767B2 (en) | Indexed uniform styles for stroke rendering | |
JPH02287776A (ja) | 大域レンダリングに階層ディスプレイリストを採用する方法 | |
Boubekeur et al. | A flexible kernel for adaptive mesh refinement on GPU | |
JP2008181514A (ja) | 視体積の外側を分散クリッピングするための方法 | |
CN105894551B (zh) | 图像绘制方法及装置 | |
CN113379814B (zh) | 一种三维空间关系判定方法及装置 | |
CN115439609A (zh) | 基于地图服务的三维模型渲染方法、系统、设备及介质 | |
CN106485654B (zh) | 一种矢量数据的处理方法及装置 | |
CN116758206A (zh) | 矢量数据的融合渲染方法、装置、计算机设备、存储介质 | |
CN111028349A (zh) | 一种适用于海量三维实景数据快速可视化的层级构建方法 | |
EP1197922A2 (en) | Apparatus, system, and method for simplifying annotations on a geometric surface | |
CN115269756A (zh) | 一种在cesium中引入热力图的方法及系统 | |
She et al. | Rendering 2d lines on 3d terrain model with optimization in visual quality and running performance | |
CN117557711B (zh) | 可视域的确定方法、装置、计算机设备、存储介质 | |
CN117744187B (zh) | Cad绘图方法、装置、计算机设备和存储介质 | |
CN115049804B (zh) | 虚拟场景的编辑方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |