CN117557711B - 可视域的确定方法、装置、计算机设备、存储介质 - Google Patents

可视域的确定方法、装置、计算机设备、存储介质 Download PDF

Info

Publication number
CN117557711B
CN117557711B CN202410045928.5A CN202410045928A CN117557711B CN 117557711 B CN117557711 B CN 117557711B CN 202410045928 A CN202410045928 A CN 202410045928A CN 117557711 B CN117557711 B CN 117557711B
Authority
CN
China
Prior art keywords
visual
texture
scene
viewpoint
depth
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
Application number
CN202410045928.5A
Other languages
English (en)
Other versions
CN117557711A (zh
Inventor
贾庆雷
马柳青
周淮浦
李凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhongketuxin Suzhou Technology Co ltd
Original Assignee
Zhongketuxin Suzhou Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhongketuxin Suzhou Technology Co ltd filed Critical Zhongketuxin Suzhou Technology Co ltd
Priority to CN202410045928.5A priority Critical patent/CN117557711B/zh
Publication of CN117557711A publication Critical patent/CN117557711A/zh
Application granted granted Critical
Publication of CN117557711B publication Critical patent/CN117557711B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/50Image enhancement or restoration using two or more images, e.g. averaging or subtraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10028Range image; Depth image; 3D point clouds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20212Image combination
    • G06T2207/20221Image fusion; Image merging

Abstract

本申请涉及一种可视域的确定方法、装置、计算机设备、存储介质。所述方法包括:获取三维场景的场景深度纹理、在前i个视点下的可视累加纹理以及在第i+1个视点下的视点深度纹理,基于场景深度纹理和视点深度纹理中存储的与每个片元对应的场景深度值和视点深度值,生成在第i+1个视点下的可视结果,根据可视结果和可视累加纹理中的可视累加结果,得到在前i+1个视点下的可视累加纹理,基于片元与屏幕像素之间的对应关系,将在前i+1个视点下的可视累加纹理贴附在三维场景上进行渲染,得到三维场景的可视域。采用本方法能够采用渲染后处理技术,基于与屏幕像素对应的片元的纹理值,从不同纹理中读取所需的数据进行单视点可视分析以及多视点可视融合。

Description

可视域的确定方法、装置、计算机设备、存储介质
技术领域
本申请涉及三维场景下的可视域分析技术领域,特别是涉及一种可视域的确定方法、装置、计算机设备、存储介质。
背景技术
三维场景下的可视域分析技术是地理信息系统(Geographic InformationSystem或 Geo-Information system,简称GIS)应用中的一种重要的分析技术。可视域分析技术的目的是确定三维场景中的某一个点或某一个区域相对于视点而言是否是可见的。
传统技术中,可以在三维场景渲染时,通过图形处理器(Graphics ProcessingUnit,简写为GPU)根据视点的姿态参数反推三维场景中渲染的每个片元在此视点下的深度值。根据预先记录的与此视点的位置对应的三维场景深度信息,以及当前反推的每个片元的深度值,可以确定当前渲染的每个片元相对于此视点的可视分析结果,从而得到三维场景相对于此视点的可视域。
但是,当视点的数量为多个时,采用上述传统技术中的可视域分析手段,由于其分析的是每个片元相对于同一视点是否可视,无法统计出三维模型中的各个像素点在多个视点处的可视累加情况。
发明内容
基于此,有必要针对上述技术问题,提供一种适用于多视点联合分析的可视域的确定方法、装置、计算机设备、计算机可读存储介质。
第一方面,本申请提供了一种可视域的确定方法,包括:
获取三维场景的场景深度纹理、所述三维场景在前i个视点下的可视累加纹理以及所述三维场景在第i+1个视点下的视点深度纹理;
基于预设的顶点坐标与纹理坐标之间的映射关系,绘制与当前屏幕对应的二维视口矩形,并确定与所述二维视口矩形中的每个片元对应的纹理坐标,其中,每个所述片元与当前屏幕中的每个屏幕像素一一对应;
根据所述场景深度纹理中存储的在所述纹理坐标处的场景深度值,以及所述视点深度纹理中存储的与所述纹理坐标对应的视点深度值,生成与每个所述片元对应的在所述第i+1个视点下的可视结果;
根据所述在所述第i+1个视点下的可视结果,以及所述可视累加纹理中存储的在前i个视点下的可视累加结果,将所述二维视口矩形渲染至纹理中,得到所述三维场景在前i+1个视点下的可视累加纹理;
基于所述片元与所述屏幕像素之间的对应关系,将所述前i+1个视点下的可视累加纹理贴附在所述三维场景上进行渲染,得到所述三维场景的可视域。
在其中一个实施例中,所述根据所述在所述第i+1个视点下的可视结果,以及所述可视累加纹理中存储的在前i个视点下的可视累加结果,将所述二维视口矩形渲染至纹理中,得到所述三维场景在前i+1个视点下的可视累加纹理,包括:
利用与每个所述片元对应的纹理坐标,从所述可视累加纹理中读取得到与每个所述片元对应的在前i个视点下的可视累加结果;
当与所述片元对应的在所述第i+1个视点下的可视结果为视点可见时,将与所述片元对应的在所述前i个视点下的可视累加结果与预设阈值相加,得到与所述片元对应的在前i+1个视点下的可视累加结果;
当与所述片元对应的在所述第i+1个视点下的可视结果为视点不可见时,将与所述片元对应的在所述前i个视点下的可视累加结果作为与所述片元对应的在前i+1个视点下的可视累加结果;
利用与每个所述片元对应的在前i+1个视点下的可视累加结果,将所述二维视口矩形渲染至纹理中,得到所述三维场景在前i+1个视点下的可视累加纹理。
在其中一个实施例中,所述基于所述片元与所述屏幕像素之间的对应关系,将所述前i+1个视点下的可视累加纹理贴附在所述三维场景上进行渲染,得到所述三维场景的可视域,包括:
基于每个所述片元对应的纹理坐标,从所述三维场景中读取得到对应的场景颜色纹理值;
基于可视累加结果与颜色值之间的映射关系,利用在所述前i+1个视点下的可视累加纹理中存储的可视累加结果,生成与每个所述片元对应的可视颜色纹理值;
融合所述场景颜色纹理值和所述可视颜色纹理值,得到与每个所述片元对应的渲染颜色纹理值;
基于所述片元与所述屏幕像素之间的对应关系,采用所述渲染颜色纹理值对所述三维场景在所述屏幕像素处的数据进行渲染,得到所述可视域。
在其中一个实施例中,所述融合所述场景颜色纹理值和所述可视颜色纹理值,得到与每个所述片元对应的渲染颜色纹理值,包括:
采用预设的透明通道系数对所述场景颜色纹理值和所述可视颜色纹理值进行运算处理,并将处理后的所述场景颜色纹理值和所述可视颜色纹理值相加得到与每个所述片元对应的渲染颜色纹理值。
在其中一个实施例中,所述根据所述场景深度纹理中存储的在所述纹理坐标处的场景深度值,以及所述视点深度纹理中存储的与所述纹理坐标对应的视点深度值,生成与每个所述片元对应的在所述第i+1个视点下的可视结果,包括:
利用每个所述片元对应的纹理坐标,以及所述场景深度纹理中存储的在所述纹理坐标处的场景深度值,构建与每个所述片元对应的投影空间坐标;
利用所述三维场景对应的视图投影矩阵和所述第i+1个视点对应的视图投影矩阵,确定所述三维场景与所述第i+1个视点之间的视图变换矩阵;
利用所述视图变换矩阵将每个所述片元对应的投影空间坐标转换为在所述第i+1个视点下的三维投影坐标;
利用所述三维投影坐标从所述视点深度纹理中读取对应的视点深度值,并根据所述三维投影坐标中的空间深度信息与所述视点深度值的比较结果,生成与每个所述片元对应的在所述第i+1个视点下的可视结果。
在其中一个实施例中,所述利用每个所述片元对应的纹理坐标,以及所述场景深度纹理中存储的在所述纹理坐标处的场景深度值,构建与每个所述片元对应的投影空间坐标,包括:
基于所述预设的顶点坐标与纹理坐标之间的映射关系,对所述纹理坐标以及所述场景深度值进行运算处理,得到与每个所述片元对应的投影空间坐标。
在其中一个实施例中,所述获取三维场景的场景深度纹理、所述三维场景在前i个视点下的可视累加纹理以及所述三维场景在第i+1个视点下的视点深度纹理,包括:
获取所述三维场景的场景深度信息,以及所述三维场景对应的视图投影矩阵,基于所述三维场景对应的视图投影矩阵将所述场景深度信息渲染至纹理,得到所述三维场景的场景深度纹理;
获取所述三维场景在i个视点下的视点深度信息,以及与每个所述视点对应的视图投影矩阵,基于与每个所述视点对应的视图投影矩阵将所述视点深度信息渲染至纹理,得到在每个所述视点下的视点深度纹理;
从所述i个视点中任意选取一个未处理的视点作为首次处理的视点0,利用所述场景深度纹理和在所述视点0下的视点深度纹理生成所述三维场景在所述视点0下的可视结果,并根据在所述视点0下的可视结果和预设的初始化纹理,得到所述三维场景在前1个视点下的可视累加纹理;
从所述i个视点中任意选取一个未处理的视点作为本次处理的视点1,利用所述场景深度纹理和在所述视点1下的视点深度纹理生成所述三维场景在所述视点1下的可视结果,并根据在所述视点1下的可视结果和所述三维场景在前1个视点下的可视累加纹理,得到所述三维场景在前2个视点下的可视累加纹理;
重复执行上述生成可视累加纹理的操作,直至遍历完毕每个所述视点,得到所述三维场景在前i个视点下的可视累加纹理。
第二方面,本申请还提供了一种可视域的确定装置,所述装置包括:
纹理获取模块,用于获取三维场景的场景深度纹理、所述三维场景在前i个视点下的可视累加纹理以及所述三维场景在第i+1个视点下的视点深度纹理;
片元绘制模块,用于基于预设的顶点坐标与纹理坐标之间的映射关系,绘制与当前屏幕对应的二维视口矩形,并确定与所述二维视口矩形中的每个片元对应的纹理坐标,其中,每个所述片元与当前屏幕中的每个屏幕像素一一对应;
可视分析模块,用于根据所述场景深度纹理中存储的在所述纹理坐标处的场景深度值,以及所述视点深度纹理中存储的与所述纹理坐标对应的视点深度值,生成与每个所述片元对应的在所述第i+1个视点下的可视结果;
可视累加模块,用于根据所述在所述第i+1个视点下的可视结果,以及所述可视累加纹理中存储的在前i个视点下的可视累加结果,将所述二维视口矩形渲染至纹理中,得到所述三维场景在前i+1个视点下的可视累加纹理;
可视域渲染模块,用于基于所述片元与所述屏幕像素之间的对应关系,将所述前i+1个视点下的可视累加纹理贴附在所述三维场景上进行渲染,得到所述三维场景的可视域。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面任一项实施例所述的可视域的确定方法。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面任一项实施例所述的可视域的确定方法。
上述可视域的确定方法、装置、计算机设备、存储介质,通过获取三维场景的场景深度纹理、三维场景在前i个视点下的可视累加纹理以及三维场景在第i+1个视点下的视点深度纹理;基于预设的顶点坐标与纹理坐标之间的映射关系,绘制与当前屏幕对应的二维视口矩形,并确定与二维视口矩形中的每个片元对应的纹理坐标,其中,每个片元与当前屏幕中的每个屏幕像素一一对应;根据场景深度纹理中存储的在纹理坐标处的场景深度值,以及视点深度纹理中存储的与纹理坐标对应的视点深度值,生成与每个片元对应的在第i+1个视点下的可视结果,能够采用渲染后处理的方式,基于与屏幕像素一一对应的片元的纹理坐标以及场景深度纹理和视点深度纹理中与纹理坐标对应的深度值进行可视域分析,从而提高单视点可视域分析的效率。通过根据在第i+1个视点下的可视结果,以及可视累加纹理中存储的在前i个视点下的可视累加结果,将二维视口矩形渲染至纹理中,得到三维场景在前i+1个视点下的可视累加纹理;基于片元与屏幕像素之间的对应关系,将前i+1个视点下的可视累加纹理贴附在三维场景上进行渲染,得到三维场景的可视域,能够融合三维场景在不同视点下的可视情况,满足多视点联合分析需求。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一个实施例中可视域的确定方法的应用环境图;
图2为一个实施例中可视域的确定方法的流程示意图;
图3为一个实施例中可视累加纹理生成步骤的流程示意图;
图4为一个实施例中可视域渲染步骤的流程示意图;
图5为一个实施例中可视结果生成步骤的流程示意图;
图6为一个实施例中纹理获取步骤的流程示意图;
图7为另一个实施例中可视域的确定方法的流程示意图;
图8为一个实施例中可视域的确定装置800的结构框图;
图9为一个实施例中计算机设备的内部结构图。
具体实施方式
目前常用的可视域分析技术一般通过以下两种方式实现:
一、采用中央处理器(Central Processing Unit,简称CPU)分别针对三维场景中数据结构不同的各类数据进行不同的几何运算处理,从而确定三维场景中的可视域。但是,采用该方式时,由于其处理过程中采用的算法较为复杂,且工作量较大,存在可视域确定效率较低的问题。
二、采用图形处理器(Graphics Processing Unit,简称GPU)在渲染三维场景之前,绘制一张纹理来记录从视点位置采集到的三维场景的相对深度信息,同时保存此视点的姿态参数。然后在图形处理器正常绘制三维场景时,利用此视点的姿态参数对反算每个片元在此视点下的深度值,将反算得到的深度值与纹理中的相对深度信息进行比较,从而得到与每个片元对应的可视结果,确定三维场景中的可视域。但是,采用该方式时,由于是在三维场景绘制过程中直接对片元进行渲染,而此时的片元数量远超于最终三维场景在屏幕中展示时所需渲染的屏幕像素的数量,从而也存在可视域确定效率较低的问题。此外,由于渲染的片元与最终在屏幕上显示的屏幕像素不是一一对应关系,在多视点联合分析的场景下采用该方式时,还容易存在同一视点的可视结果重复计算的问题,从而导致无法统计出多视点联合分析下的准确可视域。
为了解决上述现有技术中存在的技术问题,本申请中提供了一种能够满足多视点联合分析需求的可视域的确定方法、装置、计算机设备、存储介质。为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要符合相关规定。
本申请实施例提供的可视域的确定方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。具体地,终端102可以从服务器104中获取三维场景的场景深度纹理、三维场景在前i个视点下的可视累加纹理以及三维场景在第i+1个视点下的视点深度纹理。终端102可以基于预设的顶点坐标与纹理坐标之间的映射关系,绘制与当前屏幕对应的二维视口矩形,并确定与二维视口矩形中的每个片元对应的纹理坐标,其中,每个片元与当前屏幕中的每个屏幕像素一一对应。终端102可以根据场景深度纹理中存储的在纹理坐标处的场景深度值,以及视点深度纹理中存储的与纹理坐标对应的视点深度值,生成与每个片元对应的在第i+1个视点下的可视结果。终端102可以根据在第i+1个视点下的可视结果,以及可视累加纹理中存储的在前i个视点下的可视累加结果,将二维视口矩形渲染至纹理中,得到三维场景在前i+1个视点下的可视累加纹理。终端102可以基于片元与屏幕像素之间的对应关系,将前i+1个视点下的可视累加纹理贴附在三维场景上进行渲染,得到三维场景的可视域。最终将三维场景的可视域在当前屏幕上进行展示。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能电视、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个示例性的实施例中,如图2所示,提供了一种可视域的确定方法,以该方法应用于图1中的终端102为例进行说明,包括以下步骤S202至步骤S210。其中:
步骤S202,获取三维场景的场景深度纹理、三维场景在前i个视点下的可视累加纹理以及三维场景在第i+1个视点下的视点深度纹理。
其中,三维场景的场景深度纹理,可以是在着色器从世界坐标系下正常绘制三维场景时,采用渲染到纹理技术(Render To Texture,简称RTT技术)将三维场景中的场景深度信息渲染至纹理中得到的。
三维场景在第i+1个视点下的视点深度纹理,可以是在着色器从该第i+1个视点的观察坐标系下绘制三维场景时,采用渲染到纹理技术(Render To Texture,简称RTT技术)将三维场景在该第i+1个视点下的视点深度信息渲染至纹理中得到的。
三维场景在前i个视点下的可视累加纹理,可以是着色器从世界坐标系下,采用渲染到纹理技术(Render To Texture,简称RTT技术)将三维场景在前i个视点下的可见视点数量渲染至纹理中得到的。
示例性地,终端可以从本地数据库或数据通信网络中直接获取得到三维场景的场景深度纹理、三维场景在前i个视点下的可视累加纹理以及三维场景在第i+1个视点下的视点深度纹理。
或者,终端也可以响应于可视域的确定请求,实时获取三维场景在世界坐标系下的场景深度信息、三维场景在多个视点的观察坐标系下的视点深度信息以及三维场景在前i个视点下的可见视点数量。通过图形处理器的着色器采用渲染到纹理的技术(Render ToTexture,简称RTT技术),分别将场景深度信息渲染至纹理得到三维场景的场景深度纹理,将视点深度信息渲染至纹理得到在第i+1个视点下的视点深度纹理,将可见视点数量渲染至纹理得到在前i个视点下的可视累加纹理。
步骤S204,基于预设的顶点坐标与纹理坐标之间的映射关系,绘制与当前屏幕对应的二维视口矩形,并确定与二维视口矩形中的每个片元对应的纹理坐标。其中,每个片元与当前屏幕中的每个屏幕像素一一对应。
其中,片元可以表示根据当前屏幕的屏幕分辨率栅格化后得到的独立单位。
示例性地,终端可以通过着色器基于预设的顶点坐标与纹理坐标之间的映射关系,将屏幕坐标系下与当前屏幕对应的顶点坐标[(-1.0,-1.0),(1.0, -1.0),(1.0, 1.0),(-1.0, 1.0)]转换为视口坐标系下与当前屏幕对应的顶点坐标[(0.0,0.0),(1.0, 0.0),(1.0, 1.0),(0.0, 1.0)],从而在视口坐标系下绘制得到与当前屏幕对应的二维视口矩形。通过着色器根据二维视口矩形在视口坐标系下的顶点坐标进行线性插值,以将二维视口矩形栅格化为多个片元。其中,每个片元与当前屏幕中的每个屏幕像素一一对应,且每个片元对应的纹理坐标即为其对应的线性插值结果。
步骤S206,根据场景深度纹理中存储的在纹理坐标处的场景深度值,以及视点深度纹理中存储的与纹理坐标对应的视点深度值,生成与每个片元对应的在第i+1个视点下的可视结果。
示例性地,终端可以利用步骤S204中确定的与每个片元对应的纹理坐标,从步骤S202中获取的三维场景的场景深度纹理中读取得到,在每个所述片元对应的纹理坐标处存储的场景深度值。
由于场景深度纹理和视点深度纹理是基于不同坐标系下的深度信息生成的,无法利用同一纹理坐标读取得到在三维场景中同一位置处的深度信息。因此需要基于坐标系之间的变换关系,反算出场景深度纹理中的纹理坐标在视点深度纹理中的投影坐标。进而,利用投影坐标从视点深度纹理中读取得到与每个片元的纹理坐标对应的视点深度值。通过比较同一片元对应的场景深度值和视点深度值,可以生成与每个片元对应的在第i+1个视点下的可视结果。
步骤S208,根据在第i+1个视点下的可视结果,以及可视累加纹理中存储的在前i个视点下的可视累加结果,将二维视口矩形渲染至纹理中,得到三维场景在前i+1个视点下的可视累加纹理。
示例性地,终端可以利用步骤S204中确定的与每个片元对应的纹理坐标,从步骤S202中获取的三维场景在前i个视点下的可视累加纹理中,读取得到与每个片元对应的在前i个视点下的可视累加结果。对同一片元对应的在第i+1个视点下的可视结果,以及在前i个视点下的可视累加结果进行融合,得到与每个片元对应的在前i+1个视点下的可视累加结果。利用与每个片元对应的在前i+1个视点下的可视累加结果,将二维视口矩形渲染至纹理中,得到三维场景在前i+1个视点下的可视累加纹理。
可选地,在一些实施方式中,i的取值可以为0,1,2,3,...,n。当i为0时,终端可以采用步骤S206中的可视结果生成方法,获取得到与每个片元对应的在第1个视点下的可视结果。但是,由于三维场景没有在第0个视点之前的可视累加结果,因此,可以采用每个纹理像素处存储的纹理值为0的初始化纹理作为当前三维场景在前0个视点下的可视累加纹理。此时,将与每个片元对应的在第1个视点下的可视结果写入本次输出结果的纹理中,即可形成三维场景在前1个视点下的可视累加结果。
可选地,在另一些实施方式中,当终端获取到三维场景在多个视点下的视点深度纹理时,可以从多个视点中任意选取一个未处理的视点作为首次处理的视点1(也即,此时i=0),参照上述实施例中提供的三维场景的可视累加结果的生成方法,利用在前0个视点下的可视累加纹理(也即,上文中的初始化纹理)和三维场景在视点1下的可视结果,生成首次处理的可视累加纹理。
再重复执行上述从多个视点中任意选择一个未处理的视点作为当前处理的视点2(也即,此时i=1),参照上述实施例中提供的三维场景的可视累加结果的生成方法,利用三维场景在前1个视点下的可视累加纹理(也即首次处理得到的可视累加纹理)和三维场景在本次处理的视点2下的可视结果,生成本次处理的在前2个视点下的可视累加纹理。
再重复执行上述操作,直至遍历完毕所有视点,并将最后一次生成的可视累加纹理作为三维场景在多个视点下的可视累加纹理。
步骤S210,基于片元与屏幕像素之间的对应关系,将前i+1个视点下的可视累加纹理贴附在三维场景上进行渲染,得到三维场景的可视域。
示例性地,终端可以基于片元与屏幕像素之间的对应关系,采用步骤S208生成的在前i+1个视点下的可视累加纹理中,与每个片元对应的在前i+1个视点下的可视累加结果,贴附在当前屏幕上与三维场景对应的每个屏幕像素上进行渲染,得到三维场景的可视域,并在当前屏幕中展示三维场景的可视域。
此外,在实际应用场景下,例如摄像头布置的盲区判断场景、房地产中的视线遮挡判断场景、安保布点的设置场景、旅游路径的可见风景评价场景、通信基站的路径分布规划场景等,采用本申请中提供的可视域的确定方法,能够满足多视点联合分析的需求,提高可视域的确定准确性。
上述可视域的确定方法中,通过获取三维场景的场景深度纹理、三维场景在前i个视点下的可视累加纹理以及三维场景在第i+1个视点下的视点深度纹理;基于预设的顶点坐标与纹理坐标之间的映射关系,绘制与当前屏幕对应的二维视口矩形,并确定与二维视口矩形中的每个片元对应的纹理坐标,其中,每个片元与当前屏幕中的每个屏幕像素一一对应;根据场景深度纹理中存储的在纹理坐标处的场景深度值,以及视点深度纹理中存储的与纹理坐标对应的视点深度值,生成与每个片元对应的在第i+1个视点下的可视结果,能够采用渲染后处理的方式,基于与屏幕像素一一对应的片元的纹理坐标以及场景深度纹理和视点深度纹理中与纹理坐标对应的深度值进行可视域分析,从而提高单视点可视域分析的效率。通过根据在第i+1个视点下的可视结果,以及可视累加纹理中存储的在前i个视点下的可视累加结果,将二维视口矩形渲染至纹理中,得到三维场景在前i+1个视点下的可视累加纹理;基于片元与屏幕像素之间的对应关系,将前i+1个视点下的可视累加纹理贴附在三维场景上进行渲染,得到三维场景的可视域,能够融合三维场景在不同视点下的可视情况,满足多视点联合分析需求。此外,由于在纹理生成过程中所需处理的数据量较少,同时生成的纹理占用的存储空间也较小,还能够进一步提高可视域的确定效率。
在一个示例性的实施例中,如图3所示,上述步骤S208还可以包括以下步骤S302至步骤S308。其中:
步骤S302,利用与每个片元对应的纹理坐标,从可视累加纹理中读取得到与每个片元对应的在前i个视点下的可视累加结果。
可选地,在一些实施方式中,终端可以利用可视累加结果来标识在前i个视点中可见三维场景的视点的数量。但可视累加纹理中存储的纹理值一般为浮点类型,因此可以采用浮点类型与整数类型之间的转换方式,将直接从可视累加纹理读取得到的浮点类型下的纹理值转换为整数类型下的可视累加结果。根据与片元对应的在第i+1个视点下的可视结果,执行以下步骤S304或步骤S306。
步骤S304,当与片元对应的在第i+1个视点下的可视结果为视点可见时,将与片元对应的在前i个视点下的可视累加结果与预设阈值相加,得到与片元对应的在前i+1个视点下的可视累加结果。
步骤S306,当与片元对应的在第i+1个视点下的可视结果为视点不可见时,将与片元对应的在前i个视点下的可视累加结果作为与片元对应的在前i+1个视点下的可视累加结果。
可选地,在一些实施方式中,当与片元对应的在第i+1个视点下的可视结果为视点可见时,终端可以在步骤S302中获取的在整数类型下的可视累加结果上再加一(也即,此时的预设阈值为一),以得到与片元对应的在前i+1个视点下的可视累加结果。当可视结果为视点不可见时,直接将在前i个视点下的可视累加结果作为与片元对应的在前i+1个视点下的可视累加结果。
步骤S308,利用与每个片元对应的在前i+1个视点下的可视累加结果,将二维视口矩形渲染至纹理中,得到三维场景在前i+1个视点下的可视累加纹理。
可选地,在一些实施方式中,终端可以将步骤S304或步骤S306中得到的整数类型下的可视累加结果转换为浮点类型的纹理值。利用二维视口矩形中的片元与纹理坐标之间的对应关系,将与可视累加结果对应的纹理值存储至纹理中对应的坐标位置处,形成三维场景在前i+1个视点下的可视累加纹理。
可选地,在另一些实施方式中,终端可以采用两张不同的纹理来交替存储三维场景在前i个视点下的可视累加纹理,以及三维场景在前i+1个视点下的可视累加纹理。例如,当终端在步骤S302中读取的三维场景在前i个视点下的可视累加纹理存储在第一结果纹理(也即,此时第一结果纹理为输入数据)时,可以采用第二结果纹理作为步骤S308中的用于渲染二维视口矩形的纹理(也即,此时第二结果纹理为输出数据)。当终端后续处理三维场景相对于下一个视点的视点深度信息时,可以从第二结果纹理中(此时,第二结果纹理作为输入数据)读取所需的三维场景在前i个视点下的可视累加纹理,采用第一结果纹理作为输出结果用于渲染二维视口矩形的纹理(此时,第一结果纹理作为输出数据)。
本实施例中,通过在三维场景在第i+1个视点下可见的情况下,将在前i个视点下的可视累加结果加一后的结果作为三维场景在前i个视点下的可视累加结果,在三维场景在前i个视点下不可见的情况下,直接将在前i个视点下的可视累加结果视为在前i+1个视点下的可视累加结果,从而生成三维场景在前i+1个视点下的可视累加纹理,能够基于较为简单的数据处理逻辑,实现多视点可视情况的融合,降低可视累加纹理生成过程中所需的处理器运算成本。
在一个示例性的实施例中,如图4所示,上述步骤S210还可以包括以下步骤S402至步骤S408。其中:
步骤S402,基于每个片元对应的纹理坐标,从三维场景中读取得到对应的场景颜色纹理值。
示例性地,终端在着色器从世界坐标系下正常绘制三维场景时,可以采用渲染到纹理技术(Render To Texture,简称RTT技术)将三维场景中的场景颜色信息渲染至纹理中,得到场景颜色纹理。基于每个片元对应的纹理坐标,可以从三维场景的场景颜色纹理中,读取得到与每个片元对应的场景颜色纹理值。
步骤S404,基于可视累加结果与颜色值之间的映射关系,利用在前i+1个视点下的可视累加纹理中存储的可视累加结果,生成与每个片元对应的可视颜色纹理值。
示例性地,终端中可以预先存储有可视累加结果与颜色值之间的映射关系。例如,当i+1的最大值小于255时,可以存储有以下映射关系:可视累加结果的数值=任一分量(如红色分量、绿色分量或蓝色分量等)下的颜色值。基于可视累加结果与颜色值之间的映射关系,可以将与每个片元对应的在前i+1个视点下的可视累加结果转换为与每个片元对应的可视颜色值。由于纹理中存储的数据一般在浮点类型下,终端可以基于整数类型与浮点类型之间的映射关系,将整数类型下的可视颜色值转换为在浮点类型下的可视颜色纹理值。
步骤S406,融合场景颜色纹理值和可视颜色纹理值,得到与每个片元对应的渲染颜色纹理值。
示例性地,终端可以将同一片元对应的场景颜色纹理值和可视颜色纹理相加,并采用相加后得到的纹理值作为渲染颜色纹理值。或者,也可以通过比较场景深度纹理值和可视颜色纹理值的数值大小,并采用其中较大的一个作为渲染颜色纹理值。或者,终端中还可以设置分别与场景颜色纹理值以及可视颜色纹理值对应的权重。利用对应的权重对场景颜色纹理值以及可视颜色纹理值进行加权处理之后,再采用加权处理之后得到的纹理值之和作为渲染颜色纹理值。
步骤S408,基于片元与屏幕像素之间的对应关系,采用渲染颜色纹理值对三维场景在屏幕像素处的数据进行渲染,得到可视域。
示例性地,终端可以基于片元与屏幕像素之间的对应关系,采用与每个片元对应的渲染颜色纹理值,对三维场景在与片元对应的屏幕像素处的数据进行渲染,得到三维场景的可视域。
本实施例中,通过将可视累加结果转换为对应的可视颜色纹理值,再利用片元对应的纹理坐标,读取得到对应的场景颜色纹理值,融合可视颜色纹理值和场景颜色纹理值得到最终用于在三维场景上贴附渲染的渲染颜色纹理值,从而绘制出三维场景的可视域,能够使得可视域更加突出明了。
可选地,在一些实施方式中,上述步骤S406还可以通过以下方式实现:采用预设的透明通道系数对场景颜色纹理值和可视颜色纹理值进行运算处理,并将处理后的场景颜色纹理值和可视颜色纹理值相加得到与每个片元对应的渲染颜色纹理值。
其中,透明通道,也即Alpha通道,可以用于存储以及呈现数字图像中像素点的透明信息。
示例性地,终端可以通过着色器读取三维场景在前i+1个视点下的可视累加纹理对应的透明通道系数,以及三维场景的场景颜色纹理对应的透明通道系数。分别采用与可视累加纹理对应的预设的透明通道系数与场景颜色纹理值相乘,采用与场景颜色纹理对应的透明通道系数与场景颜色纹理值相乘,并将相乘后的纹理值相加,得到最终用于渲染可视域的渲染颜色纹理值。将与可视累加纹理对应的预设的透明通道系数和与场景颜色纹理对应的透明通道系数相加,得到最终用于渲染可视域的透明通道系数。通过着色器利用最终用于渲染可视域的渲染颜色纹理值和透明通道系数,渲染得到三维场景的可视域。
本实施例中,通过采用上述alpha混合的方法对场景颜色纹理值和可视颜色纹理值进行融合,利用融合后得到的渲染颜色纹理值和透明通道系数渲染可视域,能够使得可视域的渲染效果更自然。
在一个示例性的实施例中,如图5所示,上述步骤S206还可以包括以下步骤S502至步骤S508。其中:
步骤S502,利用每个片元对应的纹理坐标,以及场景深度纹理中存储的在纹理坐标处的场景深度值,构建与每个片元对应的投影空间坐标。
示例性地,由于纹理坐标是在二维的视口坐标系下的坐标值,因此,终端可以利用每个片元对应的纹理坐标作为每个片元在与当前屏幕对应的投影坐标系下的横轴坐标和纵轴坐标,将场景深度纹理中存储的每个片元在投影坐标系下的竖轴坐标,从而构建得到在投影坐标系下与每个片元对应的投影空间坐标。
步骤S504,利用三维场景对应的视图投影矩阵和第i+1个视点对应的视图投影矩阵,确定三维场景与第i+1个视点之间的视图变换矩阵。
其中,三维场景对应的视图投影矩阵,可以用于将三维场景在世界坐标系下的场景深度信息投影至投影坐标系,以便于后续着色器将投影坐标系下的横纵坐标作为在视口坐标系下的纹理坐标,将投影坐标系下的竖轴坐标作为在视口坐标系下的纹理值,以在视口坐标系下绘制场景深度纹理。
同理地,第i+1个视点对应的视图投影矩阵,可以用于将三维场景在第i+1个视点的观察坐标系下的视点深度信息投影至投影坐标系,以便于后续着色器将投影坐标系下的横纵坐标作为在视口坐标系下的纹理坐标,将投影坐标系下的竖轴坐标作为在视口坐标系下的纹理值,以在视口坐标系下绘制三维场景在第i+1个视点下的视点深度纹理。
示例性地,终端可以基于三维场景对应的视图投影矩阵,确定与三维场景对应的视图投影矩阵的逆矩阵。利用三维场景对应的视图投影矩阵的逆矩阵,与第i+1个视点对应的视图投影矩阵相乘,得到三维场景与第i+1个视点之间的视图变换矩阵。
步骤S506,利用视图变换矩阵将每个片元对应的投影空间坐标转换为在第i+1个视点下的三维投影坐标。
示例性地,终端可以利用视图变换矩阵与每个片元在投影坐标系下的投影空间坐标相乘,以实现以下的坐标系转换过程:将每个片元在投影坐标系下的投影空间坐标,转换为每个片元对应的在世界坐标系下的位置坐标(基于视图变换矩阵中的与三维场景对应的视图投影矩阵的逆矩阵实现)。将在世界坐标系下的位置坐标转换为在第i+1个视点的观察坐标系下的位置坐标(基于视点所在的姿态位置来实现世界坐标系与观察坐标系之间的平移)。将在第i+1个视点的观察坐标系下的位置坐标转换为与第i+1个视点对应的在投影坐标系下的三维投影坐标(基于第i+1个视点对应的视图投影矩阵实现)。
步骤S508,利用三维投影坐标从视点深度纹理中读取对应的视点深度值,并根据三维投影坐标中的空间深度信息与视点深度值的比较结果,生成与每个片元对应的在第i+1个视点下的可视结果。
示例性地,终端可以利用三维投影坐标,确定与每个片元对应的在视点深度纹理中的纹理坐标,从而在视点深度纹理中读取得到与每个片元对应的视点深度值。比较同一片元对应的三维投影坐标中的空间深度信息(也即,竖轴坐标值),与对应的视点深度值的大小。
当空间深度信息大于视点深度值时,生成与该片元对应的在第i+1个视点下的可视结果为视点不可见。当空间深度信息小于视点深度值时,生成与该片元对应的在第i+1个视点下的可视结果为视点可见。
本实施例中,通过利用视图投影矩阵确定三维场景和视点之间的视图变换矩阵,利用视图变换矩阵利用片元对应的基于世界坐标系生成的投影空间坐标转换为与第i+1个视点对应的在投影坐标系下的三维投影坐标,利用三维投影坐标从视点深度纹理中读取得到与片元对应的视点深度值,基于三维投影坐标中的空间深度信息与视点深度值的比较结果,生成与每个片元对应的在第i+1个视点下的可视结果,能够将不同坐标系下的深度信息转换至同一坐标系下进行比较,从而提高可视结果的生成准确率。
在一些实施方式中,由于与当前屏幕对应的屏幕坐标系和视口坐标系对应的坐标值范围不一致,还需要将视口坐标系下的位置坐标转换至屏幕坐标系下,以便于后续构建在投影坐标系下的投影空间坐标。
在一个示例性的实施例中,步骤S502还可以采用以下方式实现:基于预设的顶点坐标与纹理坐标之间的映射关系,对纹理坐标以及场景深度值进行运算处理,得到与每个片元对应的投影空间坐标。
可选地,终端可以基于预设的顶点坐标[(-1.0,-1.0),(1.0, -1.0),(1.0, 1.0),(-1.0, 1.0)]与纹理坐标[(0.0,0.0),(1.0, 0.0),(1.0, 1.0),(0.0, 1.0)]之间的映射关系,将视口坐标系下的纹理坐标以及场景深度值,转换为在屏幕坐标系下相对应的数值。利用在屏幕坐标系下与纹理坐标相对应的坐标数值作为片元在投影坐标系下的横纵坐标值,利用在屏幕坐标系下与场景深度值相对应的深度数值作为片元在投影坐标系下的竖轴坐标值。从而得到与每个片元对应的投影空间坐标。
本实施例中,通过基于预设的顶点坐标与纹理坐标之间的映射关系,对纹理坐标以及场景深度值进行运算处理,得到与每个片元对应的投影空间坐标,能够提高投影空间坐标的确定准确性。
在一个示例性的实施例中,如图6所示,上述步骤S202可以包括以下步骤S602至步骤S610。其中:
步骤S602,获取三维场景的场景深度信息,以及三维场景对应的视图投影矩阵,基于三维场景对应的视图投影矩阵将场景深度信息渲染至纹理,得到三维场景的场景深度纹理。
示例性地,终端可以通过着色器利用三维场景对应的视图投影矩阵与三维场景在世界坐标系下的场景深度信息相乘,从而得到三维场景在视口坐标系下的纹理坐标以及场景纹理值。利用纹理坐标以及纹理坐标对应的场景纹理值,将场景深度信息渲染至纹理,得到三维场景的场景深度纹理。
步骤S604,获取三维场景在i个视点下的视点深度信息,以及与每个视点对应的视图投影矩阵,基于与每个视点对应的视图投影矩阵将视点深度信息渲染至纹理,得到在每个视点下的视点深度纹理。
示例性地,终端可以参照上述步骤S602的实现方式,通过着色器绘制得到三维场景在每个视点下的视点深度纹理。
步骤S606,从i个视点中任意选取一个未处理的视点作为首次处理的视点0,利用场景深度纹理和在视点0下的视点深度纹理生成三维场景在视点0下的可视结果,并根据在视点0下的可视结果和预设的初始化纹理,得到三维场景在前1个视点下的可视累加纹理。
示例性地,终端可以参照上述步骤S502至步骤S508中的操作,利用场景深度纹理和在视点0下的视点深度纹理生成三维场景在视点0下的可视结果。参照上述步骤S302至步骤S308中的操作,利用在视点0下的可视结果和预设的初始化纹理,生成三维场景在前1个视点下的可视累加纹理。
步骤S608,从i个视点中任意选取一个未处理的视点作为本次处理的视点1,利用场景深度纹理和在视点1下的视点深度纹理生成三维场景在视点1下的可视结果,并根据在视点1下的可视结果和三维场景在前1个视点下的可视累加纹理,得到三维场景在前2个视点下的可视累加纹理。
示例性地,终端可以参照上述步骤S606的实现方式,利用场景深度纹理、在视点1下的视点深度纹理以及三维场景在前1个视点下的可视累加纹理,生成三维场景在前2个视点下的可视累加纹理。
步骤S610,重复执行上述生成可视累加纹理的操作,直至遍历完毕每个视点,得到三维场景在前i个视点下的可视累加纹理。
示例性地,终端可以参照步骤S608的操作,依次从i个视点中未处理的视点中选取每次处理的视点2、3、4、...、i-1,利用场景深度纹理、在每次处理的视点下的视点深度纹理以及三维场景在每次处理之前生成的可视累加纹理,生成三维场景在本次处理下的可视累加纹理。直至遍历完毕每个视点,得到三维场景在前i个视点下的可视累加纹理。
本实施例中,通过利用着色器采用渲染至纹理的技术,将三维场景的场景深度信息绘制至纹理中得到场景深度纹理,将三维场景在i个视点下的视点深度信息绘制至纹理中得到与每个视点对应的视点深度纹理,利用场景深度纹理和视点深度纹理,依次生成三维场景在每次处理的视点下的可视结果,并将每次处理得到的可视结果与前次处理得到的可视累加纹理融合,得到本次处理得到的可视累加纹理,能够同时执行三维场景在多个视点下的可视域分析任务,从而提高可视累加纹理的生成效率。
在一个示例性的实施例中,如图7所示,还提供了一种可视域的确定方法,包括以下步骤S702至步骤S712。其中:
步骤S702,获取三维场景的场景深度纹理,以及三维场景在多个视点下的视点深度纹理,依次将每个视点下的视点深度纹理和场景深度纹理输入着色器。
示例性地,终端可以直接从本地数据库或数据通信网络中获取三维场景的场景深度纹理,以及三维场景在多个视点下的视点深度纹理。或者,终端也可以参照上述步骤S602至步骤S604的操作,通过着色器采用渲染至纹理的技术,实时绘制得到场景深度纹理以及视点深度纹理。
终端可以基于视点深度纹理的获取顺序,或者基于视点距离远近的属性,确定与每个视点对应的处理顺序。按照处理顺序,依次将每个视点下的视点深度纹理和场景深度纹理输入着色器。或者,终端也可以在每次处理时,从当前未处理的视点中任意选取一个视点作为本次处理的视点,从而将对应的视点深度纹理和场景深度纹理输入着色器。
步骤S704,通过着色器基于预设的顶点坐标与纹理坐标之间的映射关系,绘制与当前屏幕对应的二维视口矩形,并确定与二维视口矩形中的每个片元对应的纹理坐标。
示例性地,终端可以通过着色器接收与当前屏幕对应的顶点坐标[(-1.0,-1.0),(1.0, -1.0),(1.0, 1.0),(-1.0, 1.0)]以及与当前屏幕对应的纹理坐标[(0.0,0.0),(1.0, 0.0),(1.0, 1.0),(0.0, 1.0)]。通过着色器基于预设的顶点坐标与纹理坐标之间的映射关系(例如顶点坐标值=纹理坐标值乘以2再减去1的值的映射关系),绘制与当前屏幕对应的二维视口矩形。采用线性插值的方式对二维视口矩形进行栅格化处理,得到与当前屏幕中的每个屏幕像素一一对应的片元,并确定与二维视口矩形中的每个片元对应的纹理坐标。
步骤S706,通过着色器利用三维场景与本次处理的第i+1个视点之间的视图变换矩阵,将每个片元对应的纹理坐标以及场景深度纹理中存储的在纹理坐标处的场景深度值,转换为在第i+1个视点下的三维投影坐标。
示例性地,终端可以通过着色器利用三维场景的视图投影矩形的逆矩阵,与本次处理的第i+1个视点的视图投影矩阵,相乘得到三维场景与本次处理的第i+1个视点之间的视图变换矩阵。利用每个片元对应的纹理坐标以及场景深度纹理中存储的在纹理坐标处的场景深度值,构建每个片元对应的投影空间坐标。利用视图变换矩阵将投影空间坐标转换为在第i+1个视点下的三维投影坐标。
步骤S708,通过着色器根据三维投影坐标中的空间深度信息,以及视点深度纹理中存储的与三维投影坐标对应的视点深度值,生成在第i+1个视点下的可视结果。
示例性地,终端可以通过着色器利用三维投影坐标从视点深度纹理中读取得到与每个片元对应的视点深度值。当三维投影坐标中的空间深度信息大于视点深度值时,生成三维场景在本次处理的第i+1个视点下的可视结果为视点不可见。否则,生成三维场景在本次处理的第i+1个视点下的可视结果为视点可见。
步骤S710,通过着色器根据在第i+1个视点下的可视结果以及可视累加纹理中存储的在前i个视点下的可视累加结果,生成三维场景在前i+1个视点下的可视累加纹理。
示例性地,终端可以通过着色器利用每个片元对应的纹理坐标,从与本次处理的第i+1个视点对应的,三维场景在前i个视点下的可视累加纹理中,读取得到与每个片元对应的在前i个视点下的纹理值,并采用浮点类型与整数类型之间的转换关系(例如,浮点类型的数值*255=整数类型下的数值)将浮点类型下的纹理值转换为整数类型下的可视累加结果。
当在第i+1个视点下的可视结果为视点可见时,将在前i个视点下的可视累加结果与预设阈值的和作为在前i+1个视点下的可视累加结果。当在第i+1个视点下的可视结果为视点不可见时,将在前i个视点下的可视累加结果作为在前i+1个视点下的可视累加结果。
采用浮点类型与整数类型之间的转换关系,将与每个片元对应的在前i+1个视点下的可视累加结果转换为对应的纹理值。利用每个片元对应的纹理坐标以及对应的纹理值,将二维视口矩形渲染至纹理中,得到三维场景在前i+1个视点下的可视累加纹理。
终端可以重复执行多次步骤S704至步骤S710的操作,直至遍历完毕所有视点,跳转至步骤S712。
步骤S712,当遍历完毕所有视点之后,根据三维场景在所有视点下的可视累加纹理和三维场景的场景颜色纹理对三维场景进行融合渲染,得到三维场景在多个视点下的可视域。
示例性地,终端基于可视累加结果与颜色值之间的映射关系,将三维场景在所有视点下的可视累加纹理中存储的可视累加结果,转换为与每个片元对应的可视颜色值。利用浮点类型与整数类型之间的映射关系,将可视颜色值转换为对应的可视颜色纹理值。
利用每个片元对应的纹理坐标,从三维场景的场景颜色纹理中读取得到对应的场景颜色纹理值。利用alpha混合方式,融合同一片元对应的可视颜色纹理值和场景颜色纹理值,得到与每个片元对应的渲染颜色纹理值。基于片元与屏幕像素之间的对应关系,采用渲染颜色纹理值对三维场景在屏幕像素处的数据进行渲染,得到三维场景的可视域。
本实施例中,通过采用不同的深度纹理来存储场景深度信息和视点深度信息,采用可视累加纹理来存储三维场景在多个视点下的可视累加结果,能够将可视域确定过程中,需要处理的不同数据结构下的数据都转换为统一格式的纹理值来存储和处理,从而简化了可视域确定过程中的数据处理难度,提高了可视域的确定效率。通过将每次处理时输入的在前序处理过程中生成的前i个视点下的可视累加结果,与本次处理时生成的在第i+1个视点下的可视结果融合,得到本次处理时输出的在前i+1个视点下的可视累加纹理,能够实现多视点可视结果的融合。通过当遍历完毕所有视点后,利用三维场景在所有视点下的可视累加纹理和三维场景的场景颜色纹理融合渲染得到三维场景的可视域,能够满足多视点联合分析的需求,在三维场景上直观明了地展示可视域。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的可视域的确定方法的可视域的确定装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个可视域的确定装置实施例中的具体限定可以参见上文中对于可视域的确定方法的限定,在此不再赘述。
在一个示例性的实施例中,如图8所示,提供了一种可视域的确定装置800,包括:纹理获取模块802、片元绘制模块804、可视分析模块806、可视累加模块808和可视域渲染模块810,其中:
纹理获取模块802,用于获取三维场景的场景深度纹理、三维场景在前i个视点下的可视累加纹理以及三维场景在第i+1个视点下的视点深度纹理。
片元绘制模块804,用于基于预设的顶点坐标与纹理坐标之间的映射关系,绘制与当前屏幕对应的二维视口矩形,并确定与二维视口矩形中的每个片元对应的纹理坐标,其中,每个片元与当前屏幕中的每个屏幕像素一一对应。
可视分析模块806,用于根据场景深度纹理中存储的在纹理坐标处的场景深度值,以及视点深度纹理中存储的与纹理坐标对应的视点深度值,生成与每个片元对应的在第i+1个视点下的可视结果。
可视累加模块808,用于根据在第i+1个视点下的可视结果,以及可视累加纹理中存储的在前i个视点下的可视累加结果,将二维视口矩形渲染至纹理中,得到三维场景在前i+1个视点下的可视累加纹理。
可视域渲染模块810,用于基于片元与屏幕像素之间的对应关系,将前i+1个视点下的可视累加纹理贴附在三维场景上进行渲染,得到三维场景的可视域。
在一个示例性的实施例中,可视累加模块808,包括:结果读取单元,用于利用与每个片元对应的纹理坐标,从可视累加纹理中读取得到与每个片元对应的在前i个视点下的可视累加结果;可视融合单元,用于当与片元对应的在第i+1个视点下的可视结果为视点可见时,将与片元对应的在前i个视点下的可视累加结果与预设阈值相加,得到与片元对应的在前i+1个视点下的可视累加结果;当与片元对应的在第i+1个视点下的可视结果为视点不可见时,将与片元对应的在前i个视点下的可视累加结果作为与片元对应的在前i+1个视点下的可视累加结果;纹理生成单元,用于利用与每个片元对应的在前i+1个视点下的可视累加结果,将二维视口矩形渲染至纹理中,得到三维场景在前i+1个视点下的可视累加纹理。
在一个示例性的实施例中,可视域渲染模块810,包括:纹理读取单元,用于基于每个片元对应的纹理坐标,从三维场景中读取得到对应的场景颜色纹理值;颜色转换单元,用于基于可视累加结果与颜色值之间的映射关系,利用在前i+1个视点下的可视累加纹理中存储的可视累加结果,生成与每个片元对应的可视颜色纹理值;颜色融合单元,用于融合场景颜色纹理值和可视颜色纹理值,得到与每个片元对应的渲染颜色纹理值;可视域渲染单元,用于基于片元与屏幕像素之间的对应关系,采用渲染颜色纹理值对三维场景在屏幕像素处的数据进行渲染,得到可视域。
在一个示例性的实施例中,颜色融合单元,还用于采用预设的透明通道系数对场景颜色纹理值和可视颜色纹理值进行运算处理,并将处理后的场景颜色纹理值和可视颜色纹理值相加得到与每个片元对应的渲染颜色纹理值。
在一个示例性的实施例中,可视分析模块806,包括:坐标投影单元,用于利用每个片元对应的纹理坐标,以及场景深度纹理中存储的在纹理坐标处的场景深度值,构建与每个片元对应的投影空间坐标;矩阵变换单元,用于利用三维场景对应的视图投影矩阵和第i+1个视点对应的视图投影矩阵,确定三维场景与第i+1个视点之间的视图变换矩阵;坐标转换单元,用于利用视图变换矩阵将每个片元对应的投影空间坐标转换为在第i+1个视点下的三维投影坐标;深度比较单元,用于利用三维投影坐标从视点深度纹理中读取对应的视点深度值,并根据三维投影坐标中的空间深度信息与视点深度值的比较结果,生成与每个片元对应的在第i+1个视点下的可视结果。
在一个示例性的实施例中,坐标投影单元,还用于基于预设的顶点坐标与纹理坐标之间的映射关系,对纹理坐标以及场景深度值进行运算处理,得到与每个片元对应的投影空间坐标。
在一个示例性的实施例中,纹理获取模块802,包括:场景绘制单元,用于获取三维场景的场景深度信息,以及三维场景对应的视图投影矩阵,基于三维场景对应的视图投影矩阵将场景深度信息渲染至纹理,得到三维场景的场景深度纹理;视点绘制单元,用于获取三维场景在i个视点下的视点深度信息,以及与每个视点对应的视图投影矩阵,基于与每个视点对应的视图投影矩阵将视点深度信息渲染至纹理,得到在每个视点下的视点深度纹理;可视分析单元,用于从i个视点中任意选取一个未处理的视点作为首次处理的视点0,利用场景深度纹理和在视点0下的视点深度纹理生成三维场景在视点0下的可视结果,并根据在视点0下的可视结果和预设的初始化纹理,得到三维场景在前1个视点下的可视累加纹理;从i个视点中任意选取一个未处理的视点作为本次处理的视点1,利用场景深度纹理和在视点1下的视点深度纹理生成三维场景在视点1下的可视结果,并根据在视点1下的可视结果和三维场景在前1个视点下的可视累加纹理,得到三维场景在前2个视点下的可视累加纹理;重复执行上述生成可视累加纹理的操作,直至遍历完毕每个视点,得到三维场景在前i个视点下的可视累加纹理。
上述可视域的确定装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个示例性的实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图9所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种可视域的确定方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置。显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个示例性的实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个示例性的实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个示例性的实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

Claims (10)

1.一种可视域的确定方法,其特征在于,所述方法包括:
获取三维场景的场景深度纹理、所述三维场景在前i个视点下的可视累加纹理以及所述三维场景在第i+1个视点下的视点深度纹理;
基于预设的顶点坐标与纹理坐标之间的映射关系,绘制与当前屏幕对应的二维视口矩形,并确定与所述二维视口矩形中的每个片元对应的纹理坐标,其中,每个所述片元与当前屏幕中的每个屏幕像素一一对应;
根据所述场景深度纹理中存储的在所述纹理坐标处的场景深度值,以及所述视点深度纹理中存储的与所述纹理坐标对应的视点深度值,生成与每个所述片元对应的在所述第i+1个视点下的可视结果;
利用与每个所述片元对应的纹理坐标,从所述可视累加纹理中读取得到与每个所述片元对应的在前i个视点下的可视累加结果;
当与所述片元对应的在所述第i+1个视点下的可视结果为视点可见时,将与所述片元对应的在所述前i个视点下的可视累加结果与预设阈值相加,得到与所述片元对应的在前i+1个视点下的可视累加结果;
当与所述片元对应的在所述第i+1个视点下的可视结果为视点不可见时,将与所述片元对应的在所述前i个视点下的可视累加结果作为与所述片元对应的在前i+1个视点下的可视累加结果;
利用与每个所述片元对应的在前i+1个视点下的可视累加结果,将所述二维视口矩形渲染至纹理中,得到所述三维场景在前i+1个视点下的可视累加纹理;
基于所述片元与所述屏幕像素之间的对应关系,将所述前i+1个视点下的可视累加纹理贴附在所述三维场景上进行渲染,得到所述三维场景的可视域。
2.根据权利要求1所述的方法,其特征在于,所述基于所述片元与所述屏幕像素之间的对应关系,将所述前i+1个视点下的可视累加纹理贴附在所述三维场景上进行渲染,得到所述三维场景的可视域,包括:
基于每个所述片元对应的纹理坐标,从所述三维场景中读取得到对应的场景颜色纹理值;
基于可视累加结果与颜色值之间的映射关系,利用在所述前i+1个视点下的可视累加纹理中存储的可视累加结果,生成与每个所述片元对应的可视颜色纹理值;
融合所述场景颜色纹理值和所述可视颜色纹理值,得到与每个所述片元对应的渲染颜色纹理值;
基于所述片元与所述屏幕像素之间的对应关系,采用所述渲染颜色纹理值对所述三维场景在所述屏幕像素处的数据进行渲染,得到所述可视域。
3.根据权利要求2所述的方法,其特征在于,所述融合所述场景颜色纹理值和所述可视颜色纹理值,得到与每个所述片元对应的渲染颜色纹理值,包括:
采用预设的透明通道系数对所述场景颜色纹理值和所述可视颜色纹理值进行运算处理,并将处理后的所述场景颜色纹理值和所述可视颜色纹理值相加得到与每个所述片元对应的渲染颜色纹理值。
4.根据权利要求1所述的方法,其特征在于,所述根据所述场景深度纹理中存储的在所述纹理坐标处的场景深度值,以及所述视点深度纹理中存储的与所述纹理坐标对应的视点深度值,生成与每个所述片元对应的在所述第i+1个视点下的可视结果,包括:
利用每个所述片元对应的纹理坐标,以及所述场景深度纹理中存储的在所述纹理坐标处的场景深度值,构建与每个所述片元对应的投影空间坐标;
利用所述三维场景对应的视图投影矩阵和所述第i+1个视点对应的视图投影矩阵,确定所述三维场景与所述第i+1个视点之间的视图变换矩阵;
利用所述视图变换矩阵将每个所述片元对应的投影空间坐标转换为在所述第i+1个视点下的三维投影坐标;
利用所述三维投影坐标从所述视点深度纹理中读取对应的视点深度值,并根据所述三维投影坐标中的空间深度信息与所述视点深度值的比较结果,生成与每个所述片元对应的在所述第i+1个视点下的可视结果。
5.根据权利要求4所述的方法,其特征在于,所述利用每个所述片元对应的纹理坐标,以及所述场景深度纹理中存储的在所述纹理坐标处的场景深度值,构建与每个所述片元对应的投影空间坐标,包括:
基于所述预设的顶点坐标与纹理坐标之间的映射关系,对所述纹理坐标以及所述场景深度值进行运算处理,得到与每个所述片元对应的投影空间坐标。
6.根据权利要求4所述的方法,其特征在于,所述获取三维场景的场景深度纹理、所述三维场景在前i个视点下的可视累加纹理以及所述三维场景在第i+1个视点下的视点深度纹理,包括:
获取所述三维场景的场景深度信息,以及所述三维场景对应的视图投影矩阵,基于所述三维场景对应的视图投影矩阵将所述场景深度信息渲染至纹理,得到所述三维场景的场景深度纹理;
获取所述三维场景在i个视点下的视点深度信息,以及与每个所述视点对应的视图投影矩阵,基于与每个所述视点对应的视图投影矩阵将所述视点深度信息渲染至纹理,得到在每个所述视点下的视点深度纹理;
从所述i个视点中任意选取一个未处理的视点作为首次处理的视点0,利用所述场景深度纹理和在所述视点0下的视点深度纹理生成所述三维场景在所述视点0下的可视结果,并根据在所述视点0下的可视结果和预设的初始化纹理,得到所述三维场景在前1个视点下的可视累加纹理;
从所述i个视点中任意选取一个未处理的视点作为本次处理的视点1,利用所述场景深度纹理和在所述视点1下的视点深度纹理生成所述三维场景在所述视点1下的可视结果,并根据在所述视点1下的可视结果和所述三维场景在前1个视点下的可视累加纹理,得到所述三维场景在前2个视点下的可视累加纹理;
重复执行上述生成可视累加纹理的操作,直至遍历完毕每个所述视点,得到所述三维场景在前i个视点下的可视累加纹理。
7.一种可视域的确定装置,其特征在于,所述装置包括:
纹理获取模块,用于获取三维场景的场景深度纹理、所述三维场景在前i个视点下的可视累加纹理以及所述三维场景在第i+1个视点下的视点深度纹理;
片元绘制模块,用于基于预设的顶点坐标与纹理坐标之间的映射关系,绘制与当前屏幕对应的二维视口矩形,并确定与所述二维视口矩形中的每个片元对应的纹理坐标,其中,每个所述片元与当前屏幕中的每个屏幕像素一一对应;
可视分析模块,用于根据所述场景深度纹理中存储的在所述纹理坐标处的场景深度值,以及所述视点深度纹理中存储的与所述纹理坐标对应的视点深度值,生成与每个所述片元对应的在所述第i+1个视点下的可视结果;
可视累加模块,包括:结果读取单元,用于利用与每个所述片元对应的纹理坐标,从所述可视累加纹理中读取得到与每个所述片元对应的在前i个视点下的可视累加结果;可视融合单元,用于当与所述片元对应的在所述第i+1个视点下的可视结果为视点可见时,将与所述片元对应的在所述前i个视点下的可视累加结果与预设阈值相加,得到与所述片元对应的在前i+1个视点下的可视累加结果;当与所述片元对应的在所述第i+1个视点下的可视结果为视点不可见时,将与所述片元对应的在所述前i个视点下的可视累加结果作为与所述片元对应的在前i+1个视点下的可视累加结果;纹理生成单元,用于利用与每个所述片元对应的在前i+1个视点下的可视累加结果,将所述二维视口矩形渲染至纹理中,得到所述三维场景在前i+1个视点下的可视累加纹理;
可视域渲染模块,用于基于所述片元与所述屏幕像素之间的对应关系,将所述前i+1个视点下的可视累加纹理贴附在所述三维场景上进行渲染,得到所述三维场景的可视域。
8.根据权利要求7所述的装置,其特征在于,所述可视域渲染模块,包括:
纹理读取单元,用于基于每个所述片元对应的纹理坐标,从所述三维场景中读取得到对应的场景颜色纹理值;
颜色转换单元,用于基于可视累加结果与颜色值之间的映射关系,利用在所述前i+1个视点下的可视累加纹理中存储的可视累加结果,生成与每个所述片元对应的可视颜色纹理值;
颜色融合单元,用于融合所述场景颜色纹理值和所述可视颜色纹理值,得到与每个所述片元对应的渲染颜色纹理值;
可视域渲染单元,用于基于所述片元与所述屏幕像素之间的对应关系,采用所述渲染颜色纹理值对所述三维场景在所述屏幕像素处的数据进行渲染,得到所述可视域。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
CN202410045928.5A 2024-01-12 2024-01-12 可视域的确定方法、装置、计算机设备、存储介质 Active CN117557711B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410045928.5A CN117557711B (zh) 2024-01-12 2024-01-12 可视域的确定方法、装置、计算机设备、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410045928.5A CN117557711B (zh) 2024-01-12 2024-01-12 可视域的确定方法、装置、计算机设备、存储介质

Publications (2)

Publication Number Publication Date
CN117557711A CN117557711A (zh) 2024-02-13
CN117557711B true CN117557711B (zh) 2024-04-09

Family

ID=89823710

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410045928.5A Active CN117557711B (zh) 2024-01-12 2024-01-12 可视域的确定方法、装置、计算机设备、存储介质

Country Status (1)

Country Link
CN (1) CN117557711B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115761188A (zh) * 2022-11-07 2023-03-07 四川川云智慧智能科技有限公司 一种基于WebGL的多媒体与三维场景融合的方法和系统
CN116310036A (zh) * 2023-03-31 2023-06-23 北京字跳网络技术有限公司 场景渲染方法、装置、设备、计算机可读存储介质及产品
CN116958485A (zh) * 2023-08-28 2023-10-27 北京五一视界数字孪生科技股份有限公司 一种可视域分析方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115761188A (zh) * 2022-11-07 2023-03-07 四川川云智慧智能科技有限公司 一种基于WebGL的多媒体与三维场景融合的方法和系统
CN116310036A (zh) * 2023-03-31 2023-06-23 北京字跳网络技术有限公司 场景渲染方法、装置、设备、计算机可读存储介质及产品
CN116958485A (zh) * 2023-08-28 2023-10-27 北京五一视界数字孪生科技股份有限公司 一种可视域分析方法及装置

Also Published As

Publication number Publication date
CN117557711A (zh) 2024-02-13

Similar Documents

Publication Publication Date Title
US20230053462A1 (en) Image rendering method and apparatus, device, medium, and computer program product
US9384596B2 (en) Visualization of obscured objects in 3D space
CN105894551B (zh) 图像绘制方法及装置
US20120268464A1 (en) Method and device for processing spatial data
Jian et al. Augmented virtual environment: fusion of real-time video and 3D models in the digital earth system
CN116109765A (zh) 标注对象的三维渲染方法、装置、计算机设备、存储介质
Lukasczyk et al. Voidga: A view-approximation oriented image database generation approach
CN116503551A (zh) 一种三维重建方法及装置
Liu et al. Creating simplified 3D models with high quality textures
CN105931284B (zh) 三维纹理tin数据与大场景数据的融合方法及装置
CN114742931A (zh) 渲染图像的方法、装置、电子设备及存储介质
WO2023004559A1 (en) Editable free-viewpoint video using a layered neural representation
Dong et al. Real-time occlusion handling for dynamic augmented reality using geometric sensing and graphical shading
CN116758206A (zh) 矢量数据的融合渲染方法、装置、计算机设备、存储介质
CN117557711B (zh) 可视域的确定方法、装置、计算机设备、存储介质
Somraj et al. Temporal view synthesis of dynamic scenes through 3D object motion estimation with multi-plane images
Hwang et al. Image-based object reconstruction using run-length representation
KR100943451B1 (ko) Tiff 포맷을 이용한 dem―tiff정사영상 제작 시스템 및 그 방법
Masood et al. A novel method for adaptive terrain rendering using memory-efficient tessellation codes for virtual globes
KR100684558B1 (ko) 텍스쳐 밉매핑 장치 및 방법
Chen et al. A quality controllable multi-view object reconstruction method for 3D imaging systems
Dong et al. Occlusion handling method for ubiquitous augmented reality using reality capture technology and GLSL
CN117830587B (zh) 地图标注的绘制方法、装置、计算机设备和存储介质
US11830140B2 (en) Methods and systems for 3D modeling of an object by merging voxelized representations of the object
CN116109799B (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