CN114627219A - 三维场景数据的渲染方法及装置、存储介质、电子装置 - Google Patents
三维场景数据的渲染方法及装置、存储介质、电子装置 Download PDFInfo
- Publication number
- CN114627219A CN114627219A CN202011453443.8A CN202011453443A CN114627219A CN 114627219 A CN114627219 A CN 114627219A CN 202011453443 A CN202011453443 A CN 202011453443A CN 114627219 A CN114627219 A CN 114627219A
- Authority
- CN
- China
- Prior art keywords
- model
- bounding box
- modeling
- dimensional scene
- node
- 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.)
- Pending
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 96
- 238000000034 method Methods 0.000 title claims abstract description 87
- 241000208199 Buxus sempervirens Species 0.000 claims abstract description 94
- 238000000638 solvent extraction Methods 0.000 claims abstract description 45
- 230000011218 segmentation Effects 0.000 claims description 71
- 238000012545 processing Methods 0.000 claims description 39
- 230000000903 blocking effect Effects 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 18
- 239000002699 waste material Substances 0.000 abstract description 4
- 238000005516 engineering process Methods 0.000 abstract description 3
- 230000008569 process Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000002452 interceptive effect Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000007781 pre-processing Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000002474 experimental method Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000012800 visualization Methods 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/005—Tree description, e.g. octree, quadtree
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/20—Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Architecture (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Geometry (AREA)
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
Abstract
本发明提供了一种三维场景数据的渲染方法及装置、存储介质、电子装置,上述方法包括:确定待渲染的三维场景数据所采用的建模模型,其中,不同的建模模型用于指示不同显示方式的三维场景数据;根据建模模型的类型对建模模型进行分块处理,并将分块处理后所得到的模型块按照预设方式保存在建模模型对应的层次包围盒树上,其中,预设方式用于指示层次包围盒树的左节点和右节点的数量差小于预设阈值;根据保存在层次包围盒树上的模型块对待渲染的三维场景数据进行渲染,采用上述技术方案,解决了相关技术中,在通过层次包围盒树对三维场景数据的模型进行处理时,由于三维场景数据分布不均,导致层次包围盒树节点分布不均,进而造成资源的浪费等问题。
Description
技术领域
本发明主要涉及通信领域,具体而言,涉及一种三维场景数据的渲染方法及装置、存储介质、电子装置。
背景技术
随着科技的不断发展,各种技术都在发展,由于三维大规模场景较为复杂,在对大规模场景进行实时渲染时,当前的图形渲染引擎会有一些不足,如无法完全载入资源、渲染量过大、无法实时显示等问题。因此需要对模型数据进行处理,进而克服当前图形渲染引擎的不足。
相关技术中,对大规模场景的数据处理的方式主要是:使用多层次细节(Levelsof Detail,LOD)模型和四叉树层次结构对大规模场景的数据进行处理和使用八叉树结构对大规模场景的数据进行处理。使用LOD模型和四叉树层次结构对大规模场景的数据进行处理的方式,利用LOD模型实现实时的可视化和四叉树层次结构实现地理信息显示、查询和分析,但是该方式需要提前制作不同分辨率的LOD模型,这会导致自适应能力较差,不适用于交互式的场景渲染。使用八叉树结构来组织场景模型,利用了渲染三维数据的空间信息和树形结构,来批量的削减视锥体外的几何节点,快速计算出渲染所需要的节点序列,减少了送入渲染通道的三角面片数量,但是由于场景模型的分布可能存在不均匀的情况,使用均匀分割的八叉树会导致资源的浪费。
针对相关技术中,在通过层次包围盒树对三维场景数据的模型进行处理时,由于三维场景数据分布不均,导致层次包围盒树节点分布不均,进而造成资源的浪费等问题,尚未提出有效的技术方案。
发明内容
本发明实施例提供了一种三维场景数据的渲染方法及装置、存储介质、电子装置,以至少解决相关技术中,在通过层次包围盒树对三维场景数据的模型进行处理时,由于三维场景数据分布不均,导致层次包围盒树节点分布不均,进而造成资源的浪费等问题。
本发明实施例提供了一种三维场景数据的渲染方法,包括:确定待渲染的三维场景数据所采用的建模模型,其中,不同的建模模型用于指示不同显示方式的三维场景数据;根据所述建模模型的类型对所述建模模型进行分块处理,并将分块处理后所得到的模型块按照预设方式保存在所述建模模型对应的层次包围盒树上,其中,所述预设方式用于指示所述层次包围盒树的左节点和右节点的数量差小于预设阈值;根据保存在所述层次包围盒树上的模型块对所述待渲染的三维场景数据进行渲染。
可选地,根据所述建模模型的类型对所述建模模型进行分块处理,并将分块处理后所得到的模型块按照预设方式保存在所述建模模型对应的层次包围盒树上的过程中:确定所述建模模型中的当前模型块的包围盒;将所述包围盒中的最长轴作为分割轴,并根据所述分割轴确定所述包围盒的分割点;根据所述分割点确定所述包围盒中的所有模型块保存在所述层次包围盒树的目标节点,其中,所述目标节点包括:所述左节点或所述右节点。
可选地,根据所述分割点确定所述当前模型块保存在所述层次包围盒树的目标节点,包括:将坐标值大于所述分割点的第一模型块划分到左节点和右节点中的一个节点中;将坐标值小于所述分割点的第二模型块划分到左节点和右节点中的另一个节点中。
可选地,根据所述建模模型的类型对所述建模模型进行分块处理,并将分块处理后所得到的模型块按照预设方式保存在所述建模模型对应的层次包围盒树上,包括:循环执行以下步骤,直至所述分块处理后所得到的所有模型块按照预设方式保存在所述建模模型对应的层次包围盒树上:确定所述建模模型中的当前模型块的包围盒;将所述包围盒中的最长轴作为分割轴,并根据所述分割周确定所述包围盒的分割点;根据所述分割点确定所述包围盒中的所有模型块保存在所述层次包围盒树的目标节点,其中,所述目标节点包括:所述左节点或所述右节点。
可选地,根据所述分割点确定所述包围盒中的所有模型块保存在所述层次包围盒树的目标节点之前,所述方法还包括:在所述建模模型为三角网格模型,且所述当前模型块为三角面片的情况下,如果当前三角面片位于所述分割轴的边缘,则将所述当前三角面片按照随机方式保存在所述目标节点。
可选地,根据保存在所述层次包围盒树上的模型块对所述待渲染的三维场景数据进行渲染,包括:采用并行查找的方式从所述层次包围盒树上获取待渲染的模型块;根据获取的待渲染的模型块对所述待渲染的三维场景数据进行渲染。
根据本发明的另一个实施例,还提供了一种三维场景数据的渲染装置,包括:确定模块,用于确定待渲染的三维场景数据所采用的建模模型,其中,不同的建模模型用于指示不同显示方式的三维场景数据;处理模块,用于根据所述建模模型的类型对所述建模模型进行分块处理,并将分块处理后所得到的模型块按照预设方式保存在所述建模模型对应的层次包围盒树上,其中,所述预设方式用于指示所述层次包围盒树的左节点和右节点的数量差小于预设阈值;渲染模块,用于根据保存在所述层次包围盒树上的模型块对所述待渲染的三维场景数据进行渲染。
可选地,所述处理模块,还用于确定所述建模模型中的当前模型块的包围盒;将所述包围盒中的最长轴作为分割轴,并根据所述分割轴确定所述包围盒的分割点;根据所述分割点确定所述包围盒中的所有模型块保存在所述层次包围盒树的目标节点,其中,所述目标节点包括:所述左节点或所述右节点。
根据本发明的又一个实施例,还提供了一种计算机可读的存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过上述技术方案,确定待渲染的三维场景数据所采用的建模模型,其中,不同的建模模型用于指示不同显示方式的三维场景数据;根据建模模型的类型对建模模型进行分块处理,并将分块处理后所得到的模型块按照预设方式保存在建模模型对应的层次包围盒树上,其中,预设方式用于指示层次包围盒树的左节点和右节点的数量差小于预设阈值;根据保存在层次包围盒树上的模型块对待渲染的三维场景数据进行渲染,即将分块处理后的模型块保存在建模模型对应的层次包围盒树上,并且保证层次包围盒树的左节点和右节点的数量差小于预设阈值,采用上述技术方案,解决了相关技术中,在通过层次包围盒树对三维场景数据的模型进行处理时,由于三维场景数据分布不均,导致层次包围盒树节点分布不均,进而造成资源的浪费等问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例的一种三维场景数据的渲染方法的计算机终端的硬件结构框图;
图2是根据本发明实施例的三维场景数据的渲染方法的流程图;
图3是根据本发明可选实施例的三维场景数据的渲染方法的流程图;
图4是根据本发明实施例的三维场景数据的渲染方法的三角网格模型渲染界面示意图;
图5是根据本发明实施例的三维场景数据的渲染方法的点云模型渲染界面示意图;
图6是本发明可选实施例中的移动摄像机位置的视追查询时间变化折线图;
图7是本发明可选实施例中的改变视野角度的视锥查询时间变化折线图;
图8是本发明可选实施例中的改变视点位置的视锥查询时间变化折线图;
图9是本发明可选实施例中的改变远平面距离的视锥查询时间变化折线图;
图10是根据本发明实施例的三维场景数据的渲染装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请实施例所提供的方法可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是本发明实施例的一种三维场景数据的渲染方法的计算机终端的硬件结构框图。如图1所示,计算机终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,可选地,上述计算机终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示等同功能或比图1所示功能更多的不同的配置。存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的三维场景数据的渲染方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
根据本发明的一个实施例,提供了一种三维场景数据的渲染方法,应用于上述计算机终端,图2是根据本发明实施例的三维场景数据的渲染方法的流程图,如图2所示,包括:
步骤S202,确定待渲染的三维场景数据所采用的建模模型,其中,不同的建模模型用于指示不同显示方式的三维场景数据;
步骤S204,根据所述建模模型的类型对所述建模模型进行分块处理,并将分块处理后所得到的模型块按照预设方式保存在所述建模模型对应的层次包围盒树上,其中,所述预设方式用于指示所述层次包围盒树的左节点和右节点的数量差小于预设阈值;
步骤S206,根据保存在所述层次包围盒树上的模型块对所述待渲染的三维场景数据进行渲染。
通过上述步骤,确定待渲染的三维场景数据所采用的建模模型,其中,不同的建模模型用于指示不同显示方式的三维场景数据;根据建模模型的类型对建模模型进行分块处理,并将分块处理后所得到的模型块按照预设方式保存在建模模型对应的层次包围盒树上,其中,预设方式用于指示层次包围盒树的左节点和右节点的数量差小于预设阈值;根据保存在层次包围盒树上的模型块对待渲染的三维场景数据进行渲染,即将分块处理后的模型块保存在建模模型对应的层次包围盒树上,并且保证层次包围盒树的左节点和右节点的数量差小于预设阈值,采用上述技术方案,解决了相关技术中,在通过层次包围盒树对三维场景数据的模型进行处理时,由于三维场景数据分布不均,导致层次包围盒树节点分布不均,进而造成资源的浪费等问题。
在步骤S202中,建模模型可以包括点云模型和三角网格模型,但是不限于点云模型和三角网格模型,本发明实施例对此不做限定。
可选地,根据所述建模模型的类型对所述建模模型进行分块处理,并将分块处理后所得到的模型块按照预设方式保存在所述建模模型对应的层次包围盒树上的过程中:还需要确定所述建模模型中的当前模型块的包围盒;将所述包围盒中的最长轴作为分割轴,并根据所述分割轴确定所述包围盒的分割点;根据所述分割点确定所述包围盒中的所有模型块保存在所述层次包围盒树的目标节点,其中,所述目标节点包括:所述左节点或所述右节点。
也就是说,确定当前建模模型中存在的模型块,以及当前模型块对应的包围盒,寻找和选定包围盒中的最长的一根轴作为分割轴,根据分割轴中所有点的中位数确定所述包围盒的分割点,并根据分割点确定包围盒中的所有模型块分别保存在层次包围盒树的左节点或右节点。
在一个示例性实施例中,根据所述分割点确定所述当前模型块保存在所述层次包围盒树的目标节点,将坐标值大于所述分割点的第一模型块划分到左节点和右节点中的一个节点中;将坐标值小于所述分割点的第二模型块划分到左节点和右节点中的另一个节点中。
也就是说,通过对分割点的坐标值和模型块的坐标值进行比较,将模型块的坐标值大于分割点的坐标值的模型块作为第一模型块,将模型块的坐标值小于分割点的坐标值的模型块作为第二模型块,将第一模型块和第二模型块分别划分在左节点和右节点两个不同的节点中,进而实现将包围盒中的所有模型块分别保存在层次包围盒树的左节点或右节点中。
可选地,三维场景的数据很大,因此需要循环执行以下步骤,直至所述分块处理后所得到的所有模型块按照预设方式保存在所述建模模型对应的层次包围盒树上:确定所述建模模型中的当前模型块的包围盒;将所述包围盒中的最长轴作为分割轴,并根据所述分割周确定所述包围盒的分割点;根据所述分割点确定所述包围盒中的所有模型块保存在所述层次包围盒树的目标节点,其中,所述目标节点包括:所述左节点或所述右节点。
由于三维场景数据过大,执行一次上述步骤并不能完成根据所述建模模型的类型对所述建模模型进行分块处理,并将分块处理后所得到的模型块按照预设方式保存在所述建模模型对应的层次包围盒树上,在模型块小于预定阈值的情况下,结束划分,完成对三维场景数据的分块处理。
可选地,在所述建模模型为三角网格模型,且所述当前模型块为三角面片的情况下,如果当前三角面片位于所述分割轴的边缘,则将所述当前三角面片按照随机方式保存在所述目标节点。
确定待渲染的三维场景数据所采用的建模模型为三角网格模型时,由于三角网格模型的内部图元为三角面片,所以在进行分割时,需要考虑如果三角面片处于分割轴的边缘的情况。在三角面片处于分割轴的边缘时,同一三角面片的部分模型块属于左节点,部分模型块属于右节点,此时,将该三角面片随机保存在左节点或者右节点中,这样保证了包围盒内部的三角形面片层次上不会发生资源的冲突,更有利于查询操作。
可选地,根据保存在所述层次包围盒树上的模型块对所述待渲染的三维场景数据进行渲染,采用并行查找的方式从所述层次包围盒树上获取待渲染的模型块;根据获取的待渲染的模型块对所述待渲染的三维场景数据进行渲染。
在对三维场景数据进行渲染时,采用并行查找的方式,获取层次包围盒树上待渲染的模型块,进而对待渲染的三维场景数据进行渲染,采用并行查找的方式加速了查找的过程,降低了系统的延迟。
以下结合几个可选实施例对上述三维场景数据的渲染方法的流程进行解释说明,但不用于限定本发明实施例的技术方案。
对于大规模场景的数据管理目前有以下两种常见的方式。
1)使用八叉树进行处理的方法,其一般步骤为:(1)首先将大规模的三维场景数据进行读取。使用层次化的场景图来对场景进行组织,得到场景的渲染数据层次图。对于图形渲染引擎来说,一个非常重要的部分就是对场景中的图元信息进行组织。组织方式需要遵循以下两个原则:第一,有利于调取数据时内存的管理;第二,能够加速场景的渲染过程。在使用层次结构组织渲染对象时,在父节点保存共同使用的信息。一般使用有向无环图的层次结构,这种场景图包含一个根节点,有一个或者多个孩子节点,它的每个孩子节点还可以包含多个孩子节点。在这些节点中,其中一些是需要进行渲染的图元对象,另外一些是用来住址渲染对象的结构。比如,一个场景有很多的房间组成,那么就可创建这个场景的场景图,该场景图就可能包含叫做room0,room1,room2等节点。这些节点的根节点就是一个叫做bu i ld ing的节点。使用场景图可以充分利用硬件资源,从而很大程度地提高渲染的性能。(2)建立并生成该场景的八叉树结构,记录相关的信息。八叉树是一种描述三维空间的树状数据结构。八叉树的每个节点表示一个正方体的体积元素,每个节点有八个子节点,这八个子节点所表示的体积元素加在一起就等于父节点的体积。一般使用模型的中心点作为节点的分叉中心。并且在建立八叉树的同时,为每个节点创建AABB包围盒。(3)利用八叉树的结构,通过视锥体与包围盒的相交检测算法进行快速的视锥剔除。因为八叉树已经对空间进行了均分,只需要根据节点所在的包围盒是否处在视锥体的范围内即可。(4)对于处于视锥中的物体进行渲染。
该方法使用八叉树的结构来组织场景,利用了渲染三维数据的空间信息和树形结构,来批量的削减视锥体外的几何节点,快速计算出渲染所需要的节点序列,减少了送入渲染通道的三角面片数量。该方法是通过创建八叉树的方式进行场景的管理,但是由于模型的分布可能存在不均匀的情况,使用均匀分割的八叉树会导致资源的浪费,使得查找过程变慢。同时该方法是在单机上进行的,没有考虑分布式渲染的情况。
2)基于LOD模型和四叉树层次结构的三维场景管理和渲染的方法,该方法使用了LOD模型对数据进行分层和分块处理来提高三维场景的浏览速度。首先根据应用需求精度、可视化场景的大小以及地物的复杂程度以及聚集程度,确定LOD建模的等级标准,进行数据分层,进行数据分块,小规模场景在漫游过程中作为一块来处理,当场景数据规模增大时,对数据规模作分块处理。LOD建模,其实质就是将原有的模型进行重组,得到一种更加便于实时绘制使用的数据结构。利用四叉树制作LOD的分割方式是这样的,从完整的模型出发,通常根节点也是选择在模型的中间。把整个模型作为根节点,然后从根节点出发判断是否满足分割的条件,若不满足则不进行分割,并作为叶子节点进行保存;否则把根节点进行不断递归地不断分成相等地四个子节点区域,直到不能再分割位置,最后将所有叶子节点绘制形成简化结果。分割的深度越大,得到的LOD模型的分辨率就越高,分割时同样可以结合评价函数和用户要求对每个节点进行判断。如果该点精度已经符合要求的话,则不再进行分割,否则,继续进行分割直到节点符合要求为止。
在上述方法中,利用LOD模型实现实时的可视化,利用四叉树层次结构实现地理信息显示、查询和分析。但是该方法需要提前制作不同分辨率的LOD模型,这会导致自适应能力较差,不适用于交互式的场景渲染。该方法需要针对每个角度和不同的用户需求指定不同的LOD模型,当模型的体量不是很大时,该方法还是很实用的,但是当模型的规模很大且模型复杂时,制作LOD需要消耗大量的时间和计算渲染资源。而且需要较多的物理空间进行存储。该方法在创建LOD模型时对模型进行了分块,不适合交互式的方式。
对于大规模的无法在单机进行渲染的场景,需要在多机集群上进行分布式的渲染。进行分布式渲染的一个重要点就是进行渲染资源的管理工作。本发明首先将点云模型和三角网格模型模型读取至主节点使用三维空间上的八叉层次结构树的结构对数据进行预处理,将模型进行分块处理,之后保存该模型的树形结构。在渲染时,依据视锥与树中各个节点进行碰撞计算确定需要渲染的内容,使用八叉树的并行化查找方式进行的查找数据的工作,调取需要使用的模型块。之后在渲染节点对需要渲染的数据进行渲染。同时用户可以在用户端交互式的改变想要看到的区域,主结点会再次执行查询工作进行资源的调度。本发明可以快速锁定需要渲染的图元模型部分。
本发明适用于大规模的点云模型和三角网格模型和模型数量级巨大无法进行单机渲染的场景。通过本发明处理模型分布差异较大的场景时,构建的树更加地合理。利用多种树形结构进行模型的预处理和并行查询处理,能够快速获得需要渲染的图元信息。
图3是根据本发明可选实施例的三维场景数据的渲染方法的流程图;如图3所示,首先将点云模型或网格模型使用三维空间BVH树的方法进行拆分管理,然后根据视锥信息,按照树的结构查询在视锥内的几何元素(相当于上述实施例中的模型块),然后将这些元素渲染出来并展现在窗口上,通过键鼠交互修改视锥信息,渲染模型的不同位置,然后循环往复。具体可以分为以下几个具体任务:
(1)读取点云模型或网格模型;
(2)对模型建立层次包围盒(Bounding Volume Hierarcy,BVH)树(相当于上述实施例中的层次包围盒树),进行分块存储;
(3)输入视锥信息,判断某个点是否在视锥内;
(4)根据BVH树逐层检测包围盒,判断哪些节点在视锥内部;
(5)使用多线程的方法,并行查找BVH树根节点的左儿子和右儿子;
(6)将渲染结果显示在窗口上;
(7)添加仪表盘,显示每秒传输帧数(Frames Per Second,FPS)、平均渲染时延等信息;
(8)添加键鼠交互,当视锥的参数(包括视锥的位置和属性)发生改变时,重新判断在视锥内的物体顶点,并渲染。
渲染结果如图4和图5所示,图4是根据本发明实施例的三维场景数据的渲染方法的三角网格模型渲染界面示意图;图5是根据本发明实施例的三维场景数据的渲染方法的点云模型渲染界面示意图。
本发明可选实施例利用三维空间的八叉层次包围盒和并行查找的方式,当用户进行交互式的操作时,可以快速的进行渲染资源的查找。
由于模型的数量级很大,首先对模型数据进行预处理工作。对数据的预处理主要是对数据进行分块的处理。对数据的分块只需要进行一次,随后的查询阶段可以重复使用预处理得到的知识信息,也就是分块处理的结果,进而节省大量的时间。在空间上对数据进行分块有多种方式,如八叉树、k-d树(k-dimensional tree,Kd-tree)、二叉空间分割(Binary Space Partitioning,BSP)树等,对于物体层面上有层次包围盒树的分割方法。八叉树是对场景进行的均匀的划分,当模型的数据分布较为均衡时,按照八叉树的情况进行划分是比较科学的,但是当模型的数据分布不均匀时,使用这种方法会导致八叉树的不平衡,会存在某些叶节点的深度过大或者某些叶节点含有的图元数据过多等情况。k-d树树在处理网格模型时具有较大的劣势,因为当同一个三角面片处于不同的叶子节点时,会在三维场景数据的渲染阶段将该三角面片多次调入渲染工作集,这就需要在工作集上执行去重的操作。
在本发明可选实施例中,参考了物体层面的分割方法,基于模型的数据分布对模型进行分块,创建分块树结构,使得创建出来分块树的数据分布尽可能平衡。
对于点云模型文件,格式采用(x,y,z,r,g,b),用来表示模型点的坐标与颜色值。算法流程如下:
步骤1:给定根节点,此时该根节点包含场景中的全部物体的信息。计算当前节点沿坐标轴方向的包围盒。若包围盒内的图元数据数量小于给定的阈值,则结束划分。
步骤2:寻找和选定包围盒中最长的一根轴作为切分轴。
步骤3:沿着该切分轴计算当前节点的包围盒内的所有图元信息的中位数,以此作为切分的位置。
步骤4:再次遍历当前节点的包围盒内的所有图元信息,根据切分位置,将坐标值大于切分位置的点划分到左节点和右节点中的一个节点中,将坐标值小于切分位置的点块划分到左节点和右节点中的另一个节点中。
步骤5:对于两个子节点重复进行1-4操作,递归建树。同时清除该节点存储的图元数据。
也就是说,只有子节点中存储图元数据,其他节点存储分割轴信息。
对于三角网格模型,与点云模型相比最大的不同在于三角网格模型内部图元为三角面片而不是点,在进行分割时需要考虑到如果三角形处在分割位置的边缘的情况,如果三角形正好处在边缘时,如部分点应该归属于左节点,部分点应该归属于右节点,此时需要着重考虑该三角形面片的归属问题。
以下有两种方式解决三角形面片的归属问题:
第一种:将该三角面片同时放入两个子节点中。在进行基于视锥的需要渲染的元素的查询时,可能会将两个相同的三角面片返回值送到工作集中,这就需要去重复操作,但是去重复操作很复杂,这会浪费很多时间。
第二种:将该三角面片进行分割。使用这种方式会生成多余的图元信息,当较多的三角面片处于分割线上时会导致增加的图元信息过多,增加计算量。
因此,本发明可选实施例采用随机分配的方式,将该三角面片随机分配至其中一个子节点中。这样虽然子节点的包围盒之间会发生空间上的重叠冲突,但是包围盒内部的三角面片层次上不会发生资源的冲突,更有利于查询操作。
对于模型为点云模型或者三角网格模型时,算法的伪代码可以描述如下:
输入为一棵树的根节点(该根节点包含全部的模型数据)和停止划分的阈值。输出为一个只在叶子节点存在数据的树。使用递归的方式进行处理。
步骤1:获取节点的包围盒;
步骤2:如果当前节点的包围盒中所包含的场景数据量小于阈值,返回该节点;
步骤3:如果当前节点的包围盒中所包含的场景数据量大于阈值,选取该包围盒的长边作为分割边进行分割;
步骤4:在该分割边上计算得到场景的分割点;
步骤5:为该节点添加上左右两个子结点;
步骤6:对该节点进行分割;
步骤7:遍历该节点中的全部三角形片面,根据分割点进行划分,分别放置到左右子结点中;
步骤8:如果其中的一个节点中没有数据元素,停止该节点的分割操作。
之后分别对还能够进行分割的左右节点进行步骤1-8的操作,一直递归进行,一直到达到步骤2中的条件。
由于切分是以中位数为分割线进行切分的,除了分割线上的三角形面片无法做到均匀分到左右子节点上,其他位置的点都可以均匀的分到左右子节点中去,同时位于分割线上的三角形的数量并不会很多,因此该方法在划分时基本可以做到一分为二,那么整体的算法复杂度表示如下:
根据主定理,该划分方法的最终时间复杂度为O(N log N)。
对于空间复杂度而言,只有在分割时采用了两个临时数组存储分割结果,空间复杂度为O(N)。而且在该节点成为非叶子节点时,都会释放存储的图元信息,只有叶子节点存储这些图元信息,这大大节约了对于模型数据的存储空间。
在进行了大规模渲染数据的分块处理之后,会将分割树的数据结构和信息作为先验知识和模型进行配套的存储。在进行三维场景数据的渲染时,类似进行八叉树(Octree)进行查询的方式,只需要根据用户的输入确定视锥的方位,之后根据视锥与构建的树之间的关系进行数据节点的确定,之后从节点开始进行递归的三维场景数据的渲染,该方法可以进行并行化处理。
三维场景数据的渲染部分需要给定视锥。视锥的输入是七个参数,camPos表示摄像机的位置,camUp表示摄像机的向上方向,lookAt表示摄像机的视点位置,aspect表示视锥的宽高比,zNear和zFar分别表示裁剪的远近平面与摄像机之间的距离,Fovy表示y轴上的视野角度。通过这七个参数可以唯一确定一个视锥。判断某节点是否在视锥内,需要确定视锥六个平面的方程,也就需要确定八个顶点的坐标。使用叉乘的方法确定摄像机水平方向的单位方向向量camRight。之后利用下式(2)得到视锥的八个顶点的坐标。
之后取某个面上的三个顶点(x1,y1,z1)、(x2,y2,z2)、(x3,y3,z3),这就可以利用公式(3)-(7)计算出这三个点所在面的平面方程。
Ax+By+Cz+D=0 (3)
A=(y2-y1)×(z3-z1)-(z2-z1)×(y3-y1) (4)
B=(x3-x1)×(z2-z1)-(x2-x1)×(z3-z1) (5)
C=(x2-x1)×(y3-y1)-(x3-x1)×(y2-y1) (6)
D=-(Ax1+By1+Cz1) (7)
需要注意的是,因为zNear可以取0,这时视锥的棱台变成了棱锥,zNear所在的平面变成了一个点,所以在其它面取顶点时,至多取一个zNear上的点,以防止取的三个点实际上是两个点。
如果需要判断的点都在六个平面的内侧,那么该面片就在视锥内。在进行判断时,在所判断平面的对面上取一个顶点,将其带入平面方程的左侧,若结果大于0,则记为1;若小于0,则记为-1。显然对面平面上的一定位于该平面的内侧。然后将需要判断的点导入该方程中,并且乘以刚才获得的系数,大于0,则该点在该平面内侧,小于0,则在外侧。
当有了判断点是否在视锥中的方法之后,开始进行三维场景数据的渲染的工作。具体的流程是这样的:从根节点开始判断,若该节点的包围盒的八个顶点全都在视锥某一个平面的外侧,那么这个包围盒完全不在视锥中,则无需往下递归,直接结束返回;若该节点的包围盒的八个顶点全都在视锥的内部,那么这个包围盒完全在视锥中,则给定一个标记,向下递归时无需继续判断,直接返回所有节点;若包围盒与视锥相交,则往下递归,向下递归时需要进行类似的判断。
查询视锥中数据的具体算法如下所示:
需要说明的是,算法的输入为根节点的BVH树,一个表示该节点状态的布尔值和一个视锥体。输出为在视锥中的点或者三角网格数据。
步骤1:如果该节点位于视锥体中,进行下述步骤;
步骤2:如果该节点是叶子节点,返回该节点中的模型数据,停止操作;
步骤3:对该节点进行分割,分别得到左右节点;
步骤4:如果该左右节点是叶子节点的话,执行下述步骤;
步骤5:判断全部在该节点中的渲染数据;
步骤6:如果该数据在视锥中,那么会将该数据添加到结果的队列中;
步骤7:对左右节点进行递归的使用步骤1-6操作。
在实际查询时使用并行方式加速,查询所用时间与视锥位置和数据分布均有关系。具体分析如下:
(1)当包围盒完全不在视锥内时可以直接返回,复杂度为O(1);
(2)当包围盒完全在视锥内时,仅需直接搜索到叶子结点然后返回,复杂度为树高。若模型在三个轴上能均匀分布,则建立的这棵树是一个满树,复杂度为O(logN);
(3)当包围盒与视锥相交时,会继续向下递归,若以上述两种情况结束,则复杂度介于O(1)和O(logN)之间;若一直到叶子结点都仍需要遍历,则复杂度为O(N),退化为线性查找。
本发明利用三维空间的八叉BVH树解决了当模型分布不均匀时,八叉树计算消耗过多的情况。同时在进行视锥模型资源查找时采用了并行的查找方式,加速了查找的过程,降低了整个系统的延迟。
以下结合两个可选实施例对上述三维场景数据的渲染方法的流程进行解释说明,但不用于限定本发明实施例的技术方案。
1)使用OGRE制作该平台的实例。分别在网格模型和点云模型上进行实验,包括模型的分块、视锥中渲染资源的查询和渲染工作。界面的左上方为六个滑动块,用来控制摄像机的参数,相对应的键盘操作也可以修改这些参数。当这些参数发生变化时,会触发函数进行视锥内数据的重新查询。界面的左下方为自定义的一些参数展示,包括视锥的Aspect、视点位置、每帧渲染事件、经查询后的渲染事件、渲染的图元数量等。这些参数可以供用户交互式进行观察方式的变换。
2)在模型分块之后,对视锥内三维场景数据进行了渲染,用户可以改变摄像机位置、视野角度、视点位置、远近平面等方式进行交互式的场景查看。
使用了三种查询方法:线性查找、单线程BVH查找、多线程BVH查找。线性查找指遍历模型,依次判断每个点是否存在于视锥中;单线程三维空间BVH树查找方法即为本组提出的查找算法;并行三维空间BVH树查找方式。以下所有实施例都重复进行了3次并取平均,判断三种方式查询速度的快慢,具体如下:
(1)改变摄像机位置,其他参数不变。对摄像机的视野角度、近平面、远平面、lookAt等参数都设定固定值,将摄像机的位置从移到(步长为2)进行实验,图6是本发明可选实施例中的移动摄像机位置的视追查询时间变化折线图,结果如图6所示。通过BVH分块,查询时间相比线性查询有了大幅度提高,单线程查询比线性查询时间约提高了82.8%,多线程查询比线性查询时间约提高了89.5%,而且BVH整体查询时间稳定,变化幅度不大。
(2)改变摄像机视野角度,其他参数不变。将摄像机的fovY值从0.15增加到1.5(步长为0.15,即每次约增大8.6°)。由于线性查找时间与BVH查找差距较大,为了更好地展现多线程与单线程的比较,不予展示线性查找时间,此外还增加了柱形图展示查询到的点的个数,图7是本发明可选实施例中的改变视野角度的视锥查询时间变化折线图,如图7所示,单线程查询时间平均是多线程查询的0.59倍,除去创建线程的时间,基本能够实现线性加速比,体现出了并行查找的优势。
(3)改变摄像机视点位置(lookAt),其他参数不变。图8是本发明可选实施例中的改变视点位置的视锥查询时间变化折线图,如图8所示,整体走势与以前一致,BVH查询时间非常短暂,因此在数据量不是很大的时候,单机渲染时的实时性较高,对帧率影响较小,渲染机每帧切换流畅。
(4)改变摄像机远平面距离(zFar),其他参数不变。图9是本发明可选实施例中的改变远平面距离的视锥查询时间变化折线图,如图9所示所示,在最开始的情况下,平面较近,没有点在视锥中,这种情况下多线程创建线程耗费的时间相比查询的时间不可忽略,因此在一开始的时候会比单线程耗时稍长一些,但越往后优势会越明显。
通过本发明,确定待渲染的三维场景数据所采用的建模模型,其中,不同的建模模型用于指示不同显示方式的三维场景数据;根据建模模型的类型对建模模型进行分块处理,并将分块处理后所得到的模型块按照预设方式保存在建模模型对应的层次包围盒树上,其中,预设方式用于指示层次包围盒树的左节点和右节点的数量差小于预设阈值;根据保存在层次包围盒树上的模型块对待渲染的三维场景数据进行渲染,即将分块处理后的模型块保存在建模模型对应的层次包围盒树上,并且保证层次包围盒树的左节点和右节点的数量差小于预设阈值,采用上述技术方案,解决了相关技术中,在通过层次包围盒树对三维场景数据的模型进行处理时,由于三维场景数据分布不均,导致层次包围盒树节点分布不均,进而造成资源的浪费等问题。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
在本实施例中还提供了一种三维场景数据的渲染装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图10是根据本发明实施例的三维场景数据的渲染装置的结构框图,如图10所示,该装置包括:
确定模块1002,用于确定待渲染的三维场景数据所采用的建模模型,其中,不同的建模模型用于指示不同显示方式的三维场景数据;
处理模块1004,用于根据所述建模模型的类型对所述建模模型进行分块处理,并将分块处理后所得到的模型块按照预设方式保存在所述建模模型对应的层次包围盒树上,其中,所述预设方式用于指示所述层次包围盒树的左节点和右节点的数量差小于预设阈值;
渲染模块1006,用于根据保存在所述层次包围盒树上的模型块对所述待渲染的三维场景数据进行渲染。
通过本发明,确定待渲染的三维场景数据所采用的建模模型,其中,不同的建模模型用于指示不同显示方式的三维场景数据;根据建模模型的类型对建模模型进行分块处理,并将分块处理后所得到的模型块按照预设方式保存在建模模型对应的层次包围盒树上,其中,预设方式用于指示层次包围盒树的左节点和右节点的数量差小于预设阈值;根据保存在层次包围盒树上的模型块对待渲染的三维场景数据进行渲染,即将分块处理后的模型块保存在建模模型对应的层次包围盒树上,并且保证层次包围盒树的左节点和右节点的数量差小于预设阈值,采用上述技术方案,解决了相关技术中,在通过层次包围盒树对三维场景数据的模型进行处理时,由于三维场景数据分布不均,导致层次包围盒树节点分布不均,进而造成资源的浪费等问题。
需要说明的是,建模模型可以包括点云模型和三角网格模型,但是不限于点云模型和三角网格模型,本发明实施例对此不做限定。
可选地,处理模块,还用于根据所述建模模型的类型对所述建模模型进行分块处理,并将分块处理后所得到的模型块按照预设方式保存在所述建模模型对应的层次包围盒树上的过程中:还需要确定所述建模模型中的当前模型块的包围盒;将所述包围盒中的最长轴作为分割轴,并根据所述分割轴确定所述包围盒的分割点;根据所述分割点确定所述包围盒中的所有模型块保存在所述层次包围盒树的目标节点,其中,所述目标节点包括:所述左节点或所述右节点。
也就是说,确定当前建模模型中存在的模型块,以及当前模型块对应的包围盒,寻找和选定包围盒中的最长的一根轴作为分割轴,根据分割轴中所有点的中位数确定所述包围盒的分割点,并根据分割点确定包围盒中的所有模型块保存在层次包围盒树的左节点或右节点。
在一个示例性实施例中,处理模块,还用于根据所述分割点确定所述当前模型块保存在所述层次包围盒树的目标节点,将坐标值大于所述分割点的第一模型块划分到左节点和右节点中的一个节点中;将坐标值小于所述分割点的第二模型块划分到左节点和右节点中的另一个节点中。
也就是说,通过对分割点的坐标值和模型块的坐标值进行比较,将模型块的坐标值大于分割点的坐标值的模型块作为第一模型块,将模型块的坐标值小于分割点的坐标值的模型块作为第二模型块,将第一模型块和第二模型块分别划分在左节点和右节点两个不同的节点中。
可选地,因为三维场景的数据很大,处理模块需要循环执行以下步骤,直至所述分块处理后所得到的所有模型块按照预设方式保存在所述建模模型对应的层次包围盒树上:确定所述建模模型中的当前模型块的包围盒;将所述包围盒中的最长轴作为分割轴,并根据所述分割周确定所述包围盒的分割点;根据所述分割点确定所述包围盒中的所有模型块保存在所述层次包围盒树的目标节点,其中,所述目标节点包括:所述左节点或所述右节点。
由于三维场景数据过大,执行一次上述步骤并不能完成根据所述建模模型的类型对所述建模模型进行分块处理,并将分块处理后所得到的模型块按照预设方式保存在所述建模模型对应的层次包围盒树上,在模型块小于预定阈值的情况下,结束划分,完成对三维场景数据的分块处理。
可选地,处理模块,用于在所述建模模型为三角网格模型,且所述当前模型块为三角面片的情况下,如果当前三角面片位于所述分割轴的边缘,则将所述当前三角面片按照随机方式保存在所述目标节点。
确定待渲染的三维场景数据所采用的建模模型为三角网格模型时,由于三角网格模型的内部图元为三角面片,所以在进行分割时,需要考虑如果三角面片处于分割轴的边缘的情况。在三角面片处于分割轴的边缘时,同一三角面片的部分模型块属于左节点,部分模型块属于右节点,此时,将该三角面片随机保存在左节点或者右节点中,这样保证了包围盒内部的三角形面片层次上不会发生资源的冲突,更有利于查询操作。
可选地,渲染模块,还用于根据保存在所述层次包围盒树上的模型块对所述待渲染的三维场景数据进行渲染,采用并行查找的方式从所述层次包围盒树上获取待渲染的模型块;根据获取的待渲染的模型块对所述待渲染的三维场景数据进行渲染。
在对三维场景数据进行渲染时,采用并行查找的方式,获取层次包围盒树上待渲染的模型块,进而对待渲染的三维场景数据进行渲染,采用并行查找的方式加速了查找的过程,降低了系统的延迟。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,确定待渲染的三维场景数据所采用的建模模型,其中,不同的建模模型用于指示不同显示方式的三维场景数据;
S2,根据所述建模模型的类型对所述建模模型进行分块处理,并将分块处理后所得到的模型块按照预设方式保存在所述建模模型对应的层次包围盒树上,其中,所述预设方式用于指示所述层次包围盒树的左节点和右节点的数量差小于预设阈值;
S3,根据保存在所述层次包围盒树上的模型块对所述待渲染的三维场景数据进行渲染。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,确定待渲染的三维场景数据所采用的建模模型,其中,不同的建模模型用于指示不同显示方式的三维场景数据;
S2,根据所述建模模型的类型对所述建模模型进行分块处理,并将分块处理后所得到的模型块按照预设方式保存在所述建模模型对应的层次包围盒树上,其中,所述预设方式用于指示所述层次包围盒树的左节点和右节点的数量差小于预设阈值;
S3,根据保存在所述层次包围盒树上的模型块对所述待渲染的三维场景数据进行渲染。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种三维场景数据的渲染方法,其特征在于,包括:
确定待渲染的三维场景数据所采用的建模模型,其中,不同的建模模型用于指示不同显示方式的三维场景数据;
根据所述建模模型的类型对所述建模模型进行分块处理,并将分块处理后所得到的模型块按照预设方式保存在所述建模模型对应的层次包围盒树上,其中,所述预设方式用于指示所述层次包围盒树的左节点和右节点的数量差小于预设阈值;
根据保存在所述层次包围盒树上的模型块对所述待渲染的三维场景数据进行渲染。
2.根据权利要求1所述的方法,其特征在于,根据所述建模模型的类型对所述建模模型进行分块处理,并将分块处理后所得到的模型块按照预设方式保存在所述建模模型对应的层次包围盒树上的过程中:
确定所述建模模型中的当前模型块的包围盒;
将所述包围盒中的最长轴作为分割轴,并根据所述分割轴确定所述包围盒的分割点;
根据所述分割点确定所述包围盒中的所有模型块保存在所述层次包围盒树的目标节点,其中,所述目标节点包括:所述左节点或所述右节点。
3.根据权利要求2所述的方法,其特征在于,根据所述分割点确定所述当前模型块保存在所述层次包围盒树的目标节点,包括:
将坐标值大于所述分割点的第一模型块划分到左节点和右节点中的一个节点中;
将坐标值小于所述分割点的第二模型块划分到左节点和右节点中的另一个节点中。
4.根据权利要求2所述的方法,其特征在于,根据所述建模模型的类型对所述建模模型进行分块处理,并将分块处理后所得到的模型块按照预设方式保存在所述建模模型对应的层次包围盒树上,包括:
循环执行以下步骤,直至所述分块处理后所得到的所有模型块按照预设方式保存在所述建模模型对应的层次包围盒树上:确定所述建模模型中的当前模型块的包围盒;将所述包围盒中的最长轴作为分割轴,并根据所述分割周确定所述包围盒的分割点;根据所述分割点确定所述包围盒中的所有模型块保存在所述层次包围盒树的目标节点,其中,所述目标节点包括:所述左节点或所述右节点。
5.根据权利要求2所述的方法,其特征在于,根据所述分割点确定所述包围盒中的所有模型块保存在所述层次包围盒树的目标节点之前,所述方法还包括:
在所述建模模型为三角网格模型,且所述当前模型块为三角面片的情况下,如果当前三角面片位于所述分割轴的边缘,则将所述当前三角面片按照随机方式保存在所述目标节点。
6.根据权利要求1所述的方法,其特征在于,根据保存在所述层次包围盒树上的模型块对所述待渲染的三维场景数据进行渲染,包括:
采用并行查找的方式从所述层次包围盒树上获取待渲染的模型块;
根据获取的待渲染的模型块对所述待渲染的三维场景数据进行渲染。
7.一种三维场景数据的渲染装置,其特征在于,包括:
确定模块,用于确定待渲染的三维场景数据所采用的建模模型,其中,不同的建模模型用于指示不同显示方式的三维场景数据;
处理模块,用于根据所述建模模型的类型对所述建模模型进行分块处理,并将分块处理后所得到的模型块按照预设方式保存在所述建模模型对应的层次包围盒树上,其中,所述预设方式用于指示所述层次包围盒树的左节点和右节点的数量差小于预设阈值;
渲染模块,用于根据保存在所述层次包围盒树上的模型块对所述待渲染的三维场景数据进行渲染。
8.根据权利要求7所述的装置,其特征在于,所述处理模块,还用于确定所述建模模型中的当前模型块的包围盒;将所述包围盒中的最长轴作为分割轴,并根据所述分割轴确定所述包围盒的分割点;根据所述分割点确定所述包围盒中的所有模型块保存在所述层次包围盒树的目标节点,其中,所述目标节点包括:所述左节点或所述右节点。
9.一种计算机可读的存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至6任一项中所述的方法。
10.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至6任一项中所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011453443.8A CN114627219A (zh) | 2020-12-11 | 2020-12-11 | 三维场景数据的渲染方法及装置、存储介质、电子装置 |
PCT/CN2021/125315 WO2022121525A1 (zh) | 2020-12-11 | 2021-10-21 | 三维场景数据的渲染方法及装置、存储介质、电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011453443.8A CN114627219A (zh) | 2020-12-11 | 2020-12-11 | 三维场景数据的渲染方法及装置、存储介质、电子装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114627219A true CN114627219A (zh) | 2022-06-14 |
Family
ID=81896120
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011453443.8A Pending CN114627219A (zh) | 2020-12-11 | 2020-12-11 | 三维场景数据的渲染方法及装置、存储介质、电子装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114627219A (zh) |
WO (1) | WO2022121525A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024031977A1 (zh) * | 2022-08-11 | 2024-02-15 | 华为云计算技术有限公司 | 一种图像渲染方法、装置及设备 |
CN117808949A (zh) * | 2023-12-29 | 2024-04-02 | 中数科技(青岛)有限公司 | 一种场景渲染方法 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115578538B (zh) * | 2022-10-17 | 2023-06-23 | 北京世冠金洋科技发展有限公司 | 三维场景生成方法、装置及电子设备和存储介质 |
CN116109750A (zh) * | 2023-02-28 | 2023-05-12 | 北京达美盛软件股份有限公司 | 一种三维模型渲染系统及方法 |
CN116049924B (zh) * | 2023-03-07 | 2023-07-04 | 武汉益模科技股份有限公司 | 一种基于Cuda的三维零件差异分析方法 |
CN116258840B (zh) * | 2023-05-16 | 2023-08-11 | 深圳大学 | 层级细节表示树的生成方法、装置、设备及存储介质 |
CN116570925A (zh) * | 2023-05-19 | 2023-08-11 | 韶关学院 | 一种基于ar开发的资源管理方法 |
CN116721187B (zh) * | 2023-06-15 | 2024-01-30 | 广州极尚网络技术有限公司 | 基于场景切割的动画动态加卸载方法、装置、设备及介质 |
CN117953181B (zh) * | 2024-03-27 | 2024-06-21 | 江苏狄诺尼信息技术有限责任公司 | 一种面向web3d的顶点分层与增量式lod方法及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9984492B2 (en) * | 2015-04-02 | 2018-05-29 | Qualcomm Incorporated | Efficient hierarchy traversal in ray tracing applications |
CN106096082A (zh) * | 2016-05-24 | 2016-11-09 | 国网安徽省电力公司宿州供电公司 | 一种基于数据分块及并行处理的碰撞检测方法 |
CN106776028A (zh) * | 2016-12-21 | 2017-05-31 | 东北大学 | 一种基于gpu的光线跟踪方法 |
CN106875492A (zh) * | 2017-02-13 | 2017-06-20 | 华东师范大学 | 一种面向gpu包围盒碰撞检测方法 |
CN107689078A (zh) * | 2017-08-21 | 2018-02-13 | 哈尔滨工程大学 | 一种基于链表排序平衡二叉树的层次包围盒树构建方法 |
-
2020
- 2020-12-11 CN CN202011453443.8A patent/CN114627219A/zh active Pending
-
2021
- 2021-10-21 WO PCT/CN2021/125315 patent/WO2022121525A1/zh active Application Filing
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024031977A1 (zh) * | 2022-08-11 | 2024-02-15 | 华为云计算技术有限公司 | 一种图像渲染方法、装置及设备 |
CN117808949A (zh) * | 2023-12-29 | 2024-04-02 | 中数科技(青岛)有限公司 | 一种场景渲染方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2022121525A1 (zh) | 2022-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114627219A (zh) | 三维场景数据的渲染方法及装置、存储介质、电子装置 | |
CN106407408B (zh) | 一种海量点云数据的空间索引构建方法及装置 | |
CN112347546A (zh) | 基于轻量级设备的bim渲染方法、设备和计算机可读存储介质 | |
CN113178014B (zh) | 场景模型渲染方法、装置、电子设备和存储介质 | |
US7002571B2 (en) | Grid-based loose octree for spatial partitioning | |
CN102682103B (zh) | 一种面向海量激光雷达点云模型的三维空间索引方法 | |
US7561156B2 (en) | Adaptive quadtree-based scalable surface rendering | |
CN107481311B (zh) | 三维城市模型渲染方法及装置 | |
CN110910505A (zh) | 一种场景模型的加速渲染方法 | |
Ernst et al. | Early split clipping for bounding volume hierarchies | |
CN109118588B (zh) | 一种基于块分解的彩色lod模型自动生成方法 | |
CN111127615A (zh) | 一种三维模型的数据调度方法、装置及电子设备 | |
US9971335B2 (en) | Hybrid dynamic tree data structure and accessibility mapping for computer numerical controlled machining path planning | |
Ponce et al. | An object centered hierarchical representation for 3d objects: the prism tree | |
Hastings et al. | Optimization of large-scale, real-time simulations by spatial hashing | |
CN115578536A (zh) | 一种分层分块三维模型节点合并方法、装置和电子装置 | |
CN117237503B (zh) | 一种地理要素数据加速渲染及装置 | |
CN112200906B (zh) | 一种面向倾斜三维模型的实体提取方法及其系统 | |
CN116310060B (zh) | 一种渲染数据的方法、装置、设备及存储介质 | |
CN115115800A (zh) | 一种bim模型简化方法及装置 | |
JP7161154B2 (ja) | 階層バウンディングボリューム生成方法、コンピュータプログラム及びコンピュータ装置 | |
Hu et al. | Parallel BVH construction using locally density clustering | |
Guérin et al. | Efficient modeling of entangled details for natural scenes | |
CN107767458B (zh) | 不规则三角网曲面几何拓扑一致分析方法及系统 | |
CN115239863A (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 |