掌桥专利:专业的专利平台
掌桥专利
首页

三维场景综合方法及装置

文献发布时间:2023-06-19 18:35:48


三维场景综合方法及装置

技术领域

本申请涉及三维模型技术领域,尤其涉及一种三维场景综合方法及装置。

背景技术

三维场景渲染是使用计算机从数字三维场景中生成二维影像的过程,主要是通过对图形的组织、管理与显示来实现三维真实图形的再现。三维场景的渲染效率是实际应用过程中的关注重点。一般情况下,三维场景渲染的效率与三维模型数据的复杂度呈负相关关系,三维模型越复杂,数据加载越慢,渲染效率越低。

在传统方案中,主要是通过在视点距离较远时加载粗模型进行来减少单个模型的数据量,从而提升数据加载效率和渲染效率。但是此种方法在视域覆盖范围较大、加载模型数量较多的情况下对渲染效率的提升有限。

发明内容

本申请实施例提供了一种三维场景综合方法及装置,可以解决如何提升数据量较大时三维场景的渲染效率的技术问题。

第一方面,本申请实施例提供了一种三维场景综合方法,包括:利用三维场景数据构建多层次细节模型,该多层次细节模型包括不同精细程度的三维场景数据。对三维场景数据的空间范围划分层次分区,得到层次分区信息,该层次分区信息包括每个层次的分区信息,每个层次的空间范围划分为相应个数的分区,下一层次的分区是通过将其上一层次的分区进一步划分子分区得到的,上一层次的分区的精细程度低于下一层次的分区的精细程度。

根据多层次细节模型和层次分区信息生成层次分区三维模型,该层次分区三维模型用于生成多层次细节场景。

在一个实施例中,上述方法还包括:根据视点位置和/或视域范围,从层次分区三维模型中选取待渲染模型,然后对待渲染模型进行加载和渲染。

在一个实施例中,上述利用三维场景数据构建多层次细节模型,包括:利用三维场景数据生成优化三维模型。对优化三维模型进行简化处理,生成多层次细节模型。

在实际渲染时,与视点位置距离越远和/或视域范围越大,加载越粗糙的细节模型,使所需加载和渲染的数据量越小,渲染效率越高。此处相对粗糙的细节模型就可以看作为上述待渲染模型一个示例。所以根据模型与视点的距离切换不同的多层次细节模型可以提升渲染效率。

在一个实施例中,上述利用三维场景数据生成优化三维模型,包括:对三维场景数据中的每一个三维模型的几何信息和纹理信息进行优化,得到优化后的几何信息和优化后的纹理信息。根据优化后的几何信息和优化后的纹理信息,得到优化三维模型。

在一个实施例中,上述对几何信息和纹理信息进行优化,得到优化后的几何信息和优化后的纹理信息,包括:去除三维模型的几何信息中重复和不可见的三角面或修复错误的三角面,得到优化后的几何信息。将优化后的几何信息作为基础几何数据,利用三维模型的纹理信息对三维模型进行纹理重映射,得到优化后的纹理信息。

在一个实施例中,上述利用三维场景数据生成优化三维模型,包括:利用优化三维模型的几何信息对优化三维模型进行几何简化处理,得到几何简化三维模型。利用优化三维模型的纹理信息对几何简化三维模型进行纹理简化处理,得到多层次细节模型。

在一个实施例中,上述利用优化三维模型的几何信息对优化三维模型进行几何简化处理,得到几何简化三维模型,包括:设定优化三维模型的每一层次的几何元素的移除临界规则,移除规则包括:每一层次的所述几何元素的最小个数和/或每一层次的几何简化最大误差。对优化三维模型的几何元素按照第一预设规则进行处理,第一预设规则包括:将几何元素按照移除几何误差进行升序排序。将移除几何误差最小的几何元素进行移除,直至满足几何元素的移除临界规则,从而得到几何简化三维模型。

在一个实施例中,上述利用优化三维模型的纹理信息对几何简化三维模型进行纹理简化处理,得到多层次细节模型,包括:在几何简化三维模型的基础上,设定每一个层次的纹理简化规则,根据纹理简化规则对几何简化三维模型中的每个三角面对应的纹理像素信息进行重映射,得到多层次细节模型。

上述方法将几何元素简化所带来的几何误差与纹理分辨率关联,可以使多层次细节模型的几何信息与纹理信息在精细程度上相匹配,避免因纹理相较几何过于清晰或过于模糊而造成的数据冗余和渲染效果不佳。

在一个实施例中,上述方法还包括:对多层次细节模型进行多层次细节索引构建。该多层次细节索引用于检索多层次细节模型中的模型层次。

在一个实施例中,上述对多层次细节模型进行多层次细节索引构建,包括:将多层次细节模型中的每一层次的模型描述信息转化成对应的节点,每一层次分别对应一个节点。把第一层次对应的节点作为父节点,按照精细程度给不同的层次分配对应的子节点,然后根据层次关系对父节点和子节点进行父子关系的连接。

在一个实施例中,上述对三维场景数据的空间范围划分层次分区,得到层次分区信息,包括:读取并计算三维场景数据中各个三维模型的外包围盒子信息,得到三维场景数据的空间范围信息。按照第二预设规则对三维场景数据的空间范围进行多层次分区划分,得到不同空间范围的层次分区。

第二预设规则包括:将最精细层次所包含的最小模型数C

读取层次分区信息表,

获取各层次分区信息和各层次分区内的多层次细节模型的信息。

根据各层次分区内的多层次细节模型的信息计算层次分区三维模型的参数;该层次分区三维模型的参数用于生成层次分区三维模型。

合并各层次分区内的多层次细节模型。

对分区三维模型进行简化处理,生成分区三维模型。

第二方面,本申请实施例提供了一种三维场景综合装置,该装置具有实现第一方面或其任意可能的实现方式中的方法的功能。具体地,该装置包括实现第一方面或其任意可能的实现方式中的方法的单元。

在其中的一个实施例中,该装置包括:构建单元,用于利用三维场景数据构建多层次细节模型,多层次细节模型包括不同精细程度的三维场景数据。

划分单元,用于对三维场景数据的空间范围划分层次分区,得到层次分区信息,层次分区信息包括每个层次的分区信息,每个层次的空间范围划分有为相应个数的分区,下一层次的分区是通过将其上一层次的分区进一步划分子分区得到的,上一层次的分区的精细程度低于下一层次的分区的精细程度。

生成单元,用于根据多层次细节模型和层次分区信息生成层次分区三维模型,层次分区三维模型用于生成多层次细节场景。

第三方面,本申请实施例提供了一种计算机设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序。处理器执行计算机程序时实现上述第一方面任意一种实现方式的方法。

第四方面,本申请实施例提供了一种计算机可读存储介质。计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述第一方面任意一种实现方式的方法。

第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在计算机设备上运行时,使得计算机设备执行上述第一方面任意一种实现方式的方法。

本申请实施例与现有技术相比存在的有益效果是:在数据量较大时,在三维场景数据的基础上经过优化处理和简化处理生成多层次细节模型。然后对三维场景数据的空间范围划分层次分区,较粗层次的分区在较细层次被进一步划分为多个子分区,使整个三维场景中生成具有不同精细程度的层次分区三维模型,从而生成多层次细节场景。在渲染时,可以根据视点位置和视域范围,选取合适的层次分区三维模型进行加载和渲染,使视域范围内需要加载和渲染的三维模型数目、总数据量、复杂程度与视点距离无关,从而提升数据量较大时的三维场景的渲染效率。

附图说明

图1是本申请实施例提供的一种三维场景渲染的阶段示意图;

图2是本申请实施例提供的一种三维场景综合方法的流程示意图;

图3是本申请实施例提供的一种三维场景的层次分区的示意图;

图4是本申请实施例提供的一种构建多层次细节模型的方法的流程示意图;

图5是本申请实施例提供的一种三维场景的层次分区划分方法的流程示意图;

图6是本申请实施例提供的一种生成层次分区三维模型的方法的流程示意图;

图7是本申请实施例提供的一种构建场景层次分区索引的方法的流程示意图;

图8是本申请实施例提供的一种三维场景综合装置的结构示意图;

图9是本申请实施例提供的另一种三维场景综合装置的结构示意图;

图10是本申请实施例提供的计算机设备的结构示意图。

具体实施方式

为了说明本申请的技术方案,下面通过具体实施例来说明。

图1是本申请一实施例提供的一种三维场景渲染的阶段示意图。

如图1所示,三维场景渲染由CPU和GPU共同完成,其中每一帧画面的渲染可以分为三个阶段,分别是数据加载阶段、CPU阶段和GPU阶段。

数据加载阶段是将三维场景中的三维模型由外存加载到内存的过程,可以是一次性加载或按需求分批次加载。

CPU阶段是CPU根据视点信息对场景中的三维模型进行筛选和处理,然后将需要渲染的三维模型数据及其状态传递至GPU,并向GPU下达渲染指令进行绘制调用。CPU在绘制调用时会对需要渲染的三维模型进行批处理,将具有相同属性的三角网合并为一组以供同时进行渲染,形成一次绘制调用(Draw Call)。

GPU阶段是GPU根据所接收的三维模型数据及状态,通过几何处理、光栅化和像素处理等操作,实现对三维场景进行渲染。一般三维模型越复杂,GPU的渲染效率越低。

在传统方案中,可以通过分批次加载的方式来降低三维场景的数据量对渲染效率的影响,但场景中的三维模型对象数目并没有改变,所以此种方式对渲染阶段的效率提升有限。

针对上述问题,本申请实施例提供了一种三维场景综合方法,主要通过对三维场景进行多层次分区划分,形成具有不同精细程度的层次分区三维模型。在实际渲染时,根据模型与视点的距离切换不同精细程度的层次分区三维模型,与视点距离越远,加载越粗糙的三维模型,减少加载和渲染的数据量,从而提升在数据量较大时的三维场景的渲染效率。

下面结合图2来阐述的具体过程。

图2本申请一实施例提供的一种三维场景综合的方法的流程示意图。

如图2所示,该方法包括以下步骤:

S1,利用三维场景数据构建多层次细节模型。

该多层次细节模型包括不同精细程度的三维场景数据。

三维场景数据中包括的信息有:三维模型的几何信息、纹理信息以及其在该三维场景中的地理坐标信息。其中,每条信息和每个三维模型都具有一一对应关系,根据相应的信息即可确定对应的三维模型。

三维场景中可以包含多种类型的三维模型。例如,在一个以城市居民生活区为基础的三维场景中,包括的三维模型一般有:住宅区建筑模型、绿化植物模型、交通道路设施模型等。

例如,在一个以自然景观为基础的三维场景中,包括的三维模型一般有:地表植被模型、山峦模型、河流模型等。

多层次细节(Level of Details,LOD)模型是通过对精度较高的三维模型进行不同程度的简化,从而形成从精细到粗糙的具备不同层次的三维模型。

也就是说,构建多层次细节模型的目的在于将一个选定的三维场景内的模型进行再区分,从而使三维场景中的三维模型能够按照精度不同的而方便后续分别调用。一般较粗糙层次的三维模型覆盖范围较大但精细程度较低,较精细层次的则精细程度较高但覆盖范围较小。

精细程度是指三维场景中的三维模型的精度。上述“不同精细程度”意在表明一个三维场景中的三维模型并不当然地具有同样的精度。每一个三维模型的精度可以是不同的,也可以是相同的,精度的划分规则可以根据实际情况来设置,这里不做限定。一般,精度越高的三维模型跟其在现实世界中的实物越接近,细节更丰富逼真。较粗糙的三维模型跟现实世界中的实物相比失真程度则更高,细节更粗糙。

在一个例子中,上述精细程度也可以该三维模型的纹理中的一个像素代表的几何长度来表示,该几何长度的值越大表示该三维模型的精细程度越小,即该三维模型越粗糙。

在一个例子中,上述精细程度也可以用该三维模型相对于原始模型的几何误差来表示,该三维模型的几何误差越小则说明其精细程度越高,精度越高;该三维模型的几何误差越大则说明其精细程度越低,精度越低。

S2,对三维场景数据的空间范围划分层次分区,得到层次分区信息。

该层次分区信息包括每个层次的分区信息,每个层次的空间范围划分为相应个数的分区,下一层次的分区是通过将其上一层次的分区进一步划分子分区得到的。上一层次的分区的精细程度低于下一层次的分区的精细程度。

在一种实现方式中,层次分区信息是指一个三维场景被按照一定规则而进行划分后的得到各层次和各分区的信息。

例如,将整个三维场景作为第一层次也即最粗糙的层次,该层次只有整体这一个分区,说明该层次的范围最大。接下来,以一分为二作为规则对第一层次进行划分,得到两个子分区,这两个子分区即为第二层次的分区。第二层次中的每一个子分区的范围都比上一层次的分区的范围小,精细程度也比上一层次的精细程度高,也即第二层次的分区比第一层次的分区的精度更高。

图3是一种三维场景的层次分区示意图。如图3所示,A1表示整个三维场景的第一层次,表示第一层次只有这一个分区。B1~B4是在A1的基础上进一步划分得到的,表示第二层次有4个分区。以此类推,可以根据不同的要求来继续进行划分,此处只是示例,并不做限定。

S3,根据多层次细节模型和层次分区信息生成层次分区三维模型。

该层次分区三维模型用于生成多层次细节场景。

在一种实现方式中,各层次分区具有与其空间范围相匹配的多层次细节模型,相同层次分区的多层次细节模型具有较为接近的粗糙程度,也可以理解为相同层次分区的多层次模型具有较为接近的精细程度。根据层次分区关系,自下而上逐层次生成各分区的三维模型。每一层次分区的三维模型是由其相应子分区的各三维模型合并简化得到的,从而生成层次分区三维模型。

当根据多层次细节模型和层次分区信息生成层次分区三维模型之后,就可以生成多层次细节场景,也即为实现了该三维场景的综合。

在一种实现方式中,在得到上述层次分区三维模型后还可以进一步从中选取合适的模型进行渲染,而不是对所有模型进行渲染,从而提高渲染效率。

在一个例子中,上述方法还包括:根据视点位置和视域范围,从层次分区三维模型中选取待渲染模型,然后对待渲染模型进行加载和渲染。

在实际渲染时,与视点位置距离越远和/或视域范围越大,加载越粗糙的细节模型,使所需加载和渲染的模型数量和总数据量越小,渲染效率越高。此处相对粗糙的细节模型就可以看作为上述待渲染模型一个示例。所以根据模型与视点的距离切换不同的多层次细节模型可以提升渲染效率。

通过上述方法,可以实现数据量较大时的三维场景的综合,得到按照层次分区组织的多层次细节场景。各层次细节场景被划分为多个分区,较粗层次的分区在较细层次被进一步划分为多个子分区,各个层次分区均包含相应范围的多层次细节模型,同一层次分区的多层次细节模型具有较为接近的精细程度,较粗层次分区的三维模型是其较细层次相应多个分区三维模型的合并简化版本,所有层次分区的三维模型复杂度基本保持一致且较为合适。这样可以使三维场景具有不同精细程度的层次分区三维模型,从而可以根据视点位置和视域范围,选取合适的层次分区三维模型进行加载和渲染。避免视点较远时需要加载的三维模型对象数目较多、CPU阶段的Draw Call次数较多、GPU阶段的三维模型复杂度较高等问题,从而提高三维场景的渲染效率。

图4本申请一实施例提供的一种构建多层次细节模型的方法的流程示意图。图4可以看作是图2中步骤S1的一个具体示例。如图4所示,该方法包括以下步骤:

S11,读取三维场景数据。

在一种实现方式中,与上述数据加载阶段相对应,先将三维场景中的三维模型读取到内存中,将三维模型的纹理信息和几何信息解析为相应的数据结构。纹理信息解析为按分辨率大小呈规则行列排序的矩阵,矩阵中的元素包含相应的颜色信息。几何信息解析为顶点数据、边构成索引和三角面构成索引,其中顶点数据还包含对应的三维坐标位置、法线、切线、UV坐标、颜色、骨骼权重等信息。在加载时可以根据实际情况选择待加载信息,此处只是举例示范,不做限定。

S12,利用三维场景数据生成优化三维模型。

在一种实现方式中,对三维场景数据中的每一个三维模型的几何信息和纹理信息进行优化,得到优化后的几何信息和优化后的纹理信息。

然后根据优化后的几何信息和优化后的纹理信息,得到优化三维模型。

S12a,几何信息优化。

在一种实现方式中,去除三维模型的几何信息中重复和不可见的三角面或修复错误的三角面,得到优化后的几何信息。

S12b,纹理信息优化。

在一种实现方式中,将优化后的几何信息作为基础几何数据,利用三维模型的纹理信息对三维模型进行纹理重映射,得到优化后的纹理信息。

在一个例子中,首先计算出最有效利用纹理分辨率,然后以优化后的几何信息为基础几何数据,对三维模型进行纹理重映射操作,烘焙出最有效利用纹理分辨率的贴图作为优化后的纹理信息。纹理重映射过程中以原始的UV面积为权重进行新纹理的映射,使映射前后相同三角面对应的UV面积保持不变,使纹理信息与几何信息的匹配关系保持不变。

其中,UV面积表示三维模型中三角面顶点对应UV坐标所构成三角形面积。

相应的,三维模型中的所有UV面积的和为模型UV总面积。模型UV总面积表示模型中所有三角面顶点对应UV坐标所构成三角形面积的总和,表示模型三角网对应的像素总数。

相应的,最有效利用纹理分辨率为模型UV总面积的开方根向上取值至2的幂次方,表示满足有效像素数所需的最小规则化纹理分辨率。

S13,计算多层次细节模型的简化参数。

此步骤包括LOD层次数计算、纹理简化参数计算和几何简化参数计算,为后续的简化处理做准备。

S13a,LOD层次数计算。

设置LOD最小纹理分辨率S

S13b,纹理简化参数的计算。

对各层次细节模型纹理分辨率大小进行计算,最精细层次纹理分辨率S

S13c,几何简化参数的计算。

对各层次的几何简化最大误差进行计算,步骤如下:

各层次几何像素比计算。假设各层次模型在简化过程中三角网总面积的变化可以忽略,均为GA,各层次UV总面积UVA自最精细层次随分辨率逐级减半呈1/4递减,则各层次几何像素比

设定几何误差最大像素数EP

各层次的几何简化最大误差为几何误差最大像素数对应的几何长度,即:

E

S14,对优化三维模型进行简化处理,生成LOD模型。

在一种实现方式中,利用优化三维模型的几何信息对优化三维模型进行几何简化处理,得到几何简化三维模型。

在一种实现方式中,利用优化三维模型的纹理信息对几何简化三维模型进行纹理简化处理,得到多层次细节模型。

其中,各层次细节模型的生成互相独立,均以优化三维模型为基础模型进行简化得到,包括几何信息简化、纹理信息简化和简化模型描述参数记录。

S14a,几何信息简化。

在一种实现方式中,设定优化三维模型的每一层次的几何元素的移除临界规则。

该移除临界规则包括:每一层次的所述几何元素的最小个数和/或每一层次的几何简化最大误差。

对优化三维模型的几何元素按照第一预设规则进行处理。

在一个例子中,该第一预设规则包括:将几何元素按照移除几何误差进行升序排序。

将移除几何误差最小的几何元素进行移除,直至满足几何元素的移除临界规则,从而得到几何简化三维模型。其中,每次几何元素移除后,与被移除元素相关联几何元素的移除几何误差均被重新计算和排序,且移除几何误差的计算方法可以根据实际的数据情况和应用需求采用不同的方法,此处不做限定。

S14b,纹理信息简化。

在一种实现方式中,在几何简化三维模型的基础上,设定每一个层次的纹理简化规则,根据纹理简化规则对几何简化三维模型中的每个三角面对应的纹理像素信息进行重映射,得到多层次细节模型。

在一个例子中,读取简化参数计算得到的该层次纹理分辨率作为纹理简化目标分辨率,将几何简化三维模型中各三角面对应的纹理像素信息重映射为目标分辨率纹理。纹理重映射过程中以三角面的几何面积为权重进行新纹理的映射,使简化后的层次细节模型中面积较大的三角面在重映射得到的纹理中分配到更多的像素,从而使模型整体的纹理精细程度较为均衡。

S14c,模型描述参数信息记录。

对简化后模型的几何与纹理信息描述参数进行计算与记录。

几何信息描述参数包括模型顶点总个数、模型三角面总个数、模型三角面总面积、模型几何误差、模型外包围盒子、模型外包围球体等参数。

纹理信息描述参数包括模型纹理分辨率、模型UV总面积、模型几何像素比等参数,与简化后几何信息描述参数合并,共同组成简化后的层次细节模型的信息描述参数。可根据实际数据情况和应用需求扩展其他相关参数,此处不做限定。

S15,对LOD模型进行LOD索引构建。

在一种实现方式中,对多层次细节模型进行多层次细节索引构建,多层次细节索引用于检索多层次细节模型中的模型层次。

在一种实现方式中,将多层次细节模型中的每一层次的模型描述参数信息转化成对应的节点,每一层次分别对应一个节点。把第一层次对应的节点作为父节点,按照精细程度给不同的层次分配对应的子节点,然后根据层次关系对父节点和子节点进行父子关系的连接。

在一个例子中,把模型描述参数信息转化为树节点。将各层次细节模型的模型描述参数信息分别转化为节点,每一层次对应一个节点,节点中记录该层次模型对应的纹理数据存储路径、几何数据存储路径和相应的描述参数。其中,描述参数包括:模型外包围盒子、模型外包围球体、几何像素比等,可根据实际数据情况和应用需求扩展其他相关参数,此处不做限定。然后进行节点父子关系的连接。各节点之间按层次关系进行父子关系的连接,以最粗糙层次对应的节点为父节点,依次向下直至叶子节点,叶子节点为最精细层次。

构建完LOD模型之后即可对三维场景进行层次分区划分。

图5是本申请一实施例提供的一种三维场景的层次分区划分方法的流程示意图。图5可以看作是图2中步骤S2的一个具体示例。如图5所示,该方法包括以下步骤:

S21,读取三维场景中所有三维模型的外包围盒子信息。

读取场景中所有三维模型的外包围盒子,外包围盒子为轴向平行包围盒,x-y-z轴分别与三维场景的x-y-z轴重合。

S22,计算三维模型中的所有外包围盒子,得出三维场景的空间范围信息。

将场景中所有三维模型的外包围盒子进行相加,得到整个场景的外包围盒子,表示整个场景的空间范围。

S23,设定层次分区划分临界条件,按照该条件进行层次分区划分。

在一种实现方式中,按照第二预设规则对三维场景数据的空间范围进行多层次分区划分,得到不同空间范围的层次分区。

在一个例子中,第二预设规则包括:将最精细层次所包含的最小模型数C

可以理解的是,划分规则可以根据实际情况设置,此处不做限定。

S24,自上而下进行逐层分区划分。

对三维场景进行多层次分区划分,并记录各层次分区的分区编号和父子关系。该步骤可以分为最顶层次分区初始化、次顶层次分区划分和其他层次分区划分三种情形。

最顶层次分区初始化,将三维场景外包围盒子作为最粗糙层次,即最顶层,将整层作为1个分区。

次顶层次分区划分,以最顶层次分区为父分区进行子分区划分,根据父分区形态计算子分区划分规则,计算方法如下:计算父分区x-y轴的比例(长边/短边)并四舍五入为R,将R作为长短边方向的子分区划分比例,即长边方向划分为R个子分区,短边方向划分为1个子分区,得到次顶层次分区划分结果,且次顶层分区均为最顶层次分区的子分区。

其他层次分区划分,以上一层次分区为父分区进行子分区划分,将父分区沿x-y轴方向分别一分为二,得到四个子分区,作为该层次分区划分结果,且该层次分区均为上一层次分区的子分区。

S25,将三维模型分配到对应层次的分区。

在一种实现方式中,将三维场景中的三维模型按照位置关系匹配到对应的层次分区中,然后更新层次分区的空间范围信息。

在一种实现方式中,根据各分区与场景中各三维模型的位置关系,计算各分区空间范围内所包含的三维模型。包含关系通过三维模型外包围盒子中心点与分区外包围盒子的包含关系进行计算。

S26,更新对应层次的分区范围。

计算分区所包含所有三维模型外包围盒子的总和,更新至该分区的外包围盒子。

S27,临界条件判断。

在一种实现方式中,判断每个层次分区内匹配到的三维模型的数目是否超过预设范围。

该临界条件包括:判断每个层次分区内匹配到的多层次细节模型的数目是否超过预设范围。该预设范围可以根据实际情况设置,此处不做限定。

当达到临界条件时,即当层次分区内的多层次细节模型的数目超过预设范围后,将该层次分区的信息记录到层次分区信息对应的层次分区信息表中,完成对层次分区的划分。

在一种实现方式中,若没达到临界条件则执行重复执行步骤S24~S27直到达到临界条件。

S28,记录层次分区信息表。

将各层次分区的分区编号和父子关系记录至层次分区信息表,表中每一行为一个分区信息记录,包括分区编号、父分区编号、子分区编号集合、包含三维模型集合等信息,其中包含三维模型集合仅最底层次分区记录。

图6是本申请一实施例提供的一种生成层次分区三维模型的方法的流程示意图。图6可以看作是图2中步骤S3的一个具体示例。如图6所示,该方法包括以下步骤:

S31,读取层次分区信息表。

获取各层次分区信息和各层次分区内的多层次细节模型的信息。

S32,自下而上逐层获取分区信息。

从最底层次开始,从层次分区信息表中获取每个分区的相关信息。

S33,读取该层各分区的源模型。

根据子分区编号集合和包含三维模型集合,获取分区三维模型生成的源模型。此处的源模型是指上述多层次细节模型中的全部或一部分,可以根据具体情况选择,此处不做限定。

其中,最底层次分区的源模型为其包含三维模型集合中各三维模型的LOD最粗层次模型,其他层次分区的源模型为子分区编号集合中各子分区生成的三维模型。

S34,根据源模型信息计算层次分区三维模型参数。

根据各层次分区内的源模型的信息计算层次分区三维模型的参数,层次分区三维模型的参数用于生成层次分区三维模型。

根据源模型信息计算层次分区三维模型参数,用于指导三维模型生成,包括纹理参数计算和几何参数的计算。

纹理参数计算包括几何像素比计算和目标纹理分辨率计算。

几何像素比计算。根据源模型的几何像素比GPR

目标纹理分辨率计算。设定最小纹理分辨率S

几何参数计算。进行几何简化最大误差的计算。设定几何误差最大像素数EP

S35,合并源模型生成分区三维模型。

合并各层次分区内的所有源模型。

S36,对分区三维模型进行简化处理,生成层次分区三维模型。

根据分区三维模型参数计算得到的几何简化最大误差和目标纹理分辨率,对分区三维模型进行几何信息简化和纹理信息简化,简化处理完成之后即可生成层次分区三维模型。

其中,几何信息简化和纹理信息简化的方法与S14a和S14b中叙述的方法相同,此处不再赘述。

各层次分区三维模型均具有独立的几何信息与纹理信息,可以实现独立的加载,且在数据量上均较为适中,较粗糙层次分区的三维模型覆盖范围较大但精细程度较低,较精细层次分区的则精细程度较高但覆盖范围较小。这样可以使视域范围内需要加载的三维模型数目、总数据量、复杂程度与视点距离无关。从而避免视点较远时由于需要加载的模型数量较多而造成的内外存IO频繁和总数据量大的问题。

S37,更新层次分区三维模型信息。

将由源模型合并简化得到的三维模型作为分区对应的三维模型,计算其模型信息描述参数,得到更次分区三维模型的信息。

S38,更新层次分区信息表。

将层次分区对应的三维模型及其描述信息记录至层次分区信息表。

在完成上述步骤生成层次分区三维模型之后,为了便于检索和调用,还可以对三维场景层次分区进行索引构建。

图7是本申请一实施例提供的一种构建场景层次分区索引的方法的流程示意图。

如图7所示,该方法包括以下步骤:

S41,读取层次分区信息表。

S42,将各层次分区信息分别转化为节点。

将各层次分区信息分别转化为节点,每一层次分区对应一个节点,节点中记录该层次分区对应的三维模型数据存储路径和相应的模型描述参数。

其中,描述参数包括:模型外包围盒子、模型外包围球体、几何像素比等,可根据实际数据情况和应用需求扩展其他相关参数,此处不做限定。

S43,自上而下逐层逐分区进行节点父子关系的连接。

根据各层次分区中的子分区信息,自上而下对各层次分区进行父子关系的连接。以最粗糙层次分区对应的节点为根节点,逐层次向下将更精细层次子分区对应的节点连接为子节点,直至最精细层次分区

S44,最精细层次分区连接LOD索引。

最精细层次分区的三维模型对应LOD模型的最粗糙层次,也就是说最精细层次分区对应的节点是LOD索引的根节点,因此,LOD索引在最精细层次分区被连接至场景层次分区索引。

S45,存储场景层次分区索引。

将上述步骤中构建完成的场景层次分区索引存储到场景层次分区索引表中。该索引可以描述各层次分区的空间范围和三维模型信息,可用于基于视点的三维模型加载调度,从而避免三维场景数据的预加载。

上文主要结合附图对本申请实施例的一种三维场景综合方法进行了介绍。应理解,虽然如上所述的各实施例所涉及的流程图中的各个步骤依次显示,但是这些步骤并不是必然按照图中所示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。下面结合附图对本申请实施例的一种的装置进行介绍。为了简洁,在下文介绍装置时,会进行适当省略,相关内容可以参照上文的方法中的相关描述,不再重复介绍。

图8是本申请实施例提供的一种三维场景综合装置的结构示意图。如图8所示,一种三维场景综合装置1000,包括:

构建单元1001,用于利用三维场景数据构建多层次细节模型,该多层次细节模型包括不同精细粗糙程度的三维场景数据。可以将三维模型进行优化,修复错误信息和降低数据冗余度。然后对三维模型进行不同程度的简化得到多层次细节模型并构建相应的LOD索引。

划分单元1002,用于对三维场景数据的空间范围划分层次分区,得到层次分区信息,层次分区信息包括每个层次的分区信息,每个层次的空间范围划分为相应个数的分区,下一层次的分区是通过将其上一层次的分区进一步划分子分区得到的,上一层次的分区的精细程度低于下一层次的分区的精细程度。

采用非限定四叉树与层次包围盒相结合的方法,将三维场景划分为多个层次分区,每一层次的空间范围被划分为多个分区,且各层次的总体空间范围均与场景空间范围相同,较粗层次分区在相邻的较精细层次被划分为多个子分区,直至最精细层次分区为原始单个三维模型的空间范围。每一层次的空间范围划分有相应个数的分区,下一层次的分区是通过将其上一层次的分区进一步划分子分区得到的。

生成单元1003,用于根据多层次细节模型和层次分区信息生成层次分区三维模型,层次分区三维模型用于生成多层次细节场景。各层次分区具有与其空间范围相匹配的三维模型,相同层次分区的三维模型具有较为接近的精细程度,不同层次分区三维模型的精细程度随层次自下而上逐层递减。根据层次分区关系,自下而上逐层次生成各分区的三维模型。

图9是本申请实施例提供的另一种三维场景综合装置的结构示意图。如图9所示,一种三维场景综合装置2000,包括:

读取单元2001,用于将三维场景中的三维模型读取到内存中,将三维模型的纹理信息和几何信息解析为相应的数据结构。

分析单元2002,负责对三维模型的纹理信息和几何信息进行分析,包括纹理信息分析、几何信息分析和总体信息分析。

纹理信息分析包括以下参数的计算:纹理个数、各纹理分辨率、纹理总像素数。

几何信息分析包括以下参数的计算:模型顶点总个数、模型三角面总个数、模型三角面总面积、模型外包围盒子、模型外包围球体。

总体信息分析包括以下参数的计算:模型UV总面积、纹理像素利用率、最有效利用纹理分辨率、模型几何像素比。

上述参数只是示例,此处不做限定,可根据实际数据情况和应用需求扩展其他相关参数。

其中,模型UV总面积表示模型中所有三角面顶点对应UV坐标所构成三角形面积的总和,表示模型三角网对应的像素总数。

纹理像素利用率为模型UV总面积与纹理总像素数的比值,即有效像素数占总像素数的比例,该值越小表示纹理越冗余。

最有效利用纹理分辨率为模型UV总面积的开方根向上取值至2的幂次方,表示满足有效像素数所需的最小规则化纹理分辨率。

模型几何像素比为模型三角面总面积和模型UV总面积比值的开方根,即该模型纹理中一个像素代表的几何长度,该值越大表示模型越粗糙。

索引单元2003,用于构建各层次分区三维模型的索引关系。

在索引中,每一层次分区三维模型用一个节点进行表达,节点中记录该层次分区三维模型对应的纹理数据存储路径、几何数据存储路径和相应的描述参数。其中,描述参数包括:模型外包围盒子、模型外包围球体、几何像素比等,可根据实际数据情况和应用需求扩展其他相关参数,此处不做限定。

然后把各节点之间按层次分区关系进行父子关系的连接,完成索引的构建。

存储单元2004,用于对各层次分区三维模型和场景层次分区索引进行存储。将各层次分区三维模型的纹理信息和几何信息,以及场景层次分区索引存储至数据库。

需要说明的是,上述单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。虽然上述单元之间有排序,但是这些单元的调用并不是必然按照图中所示的序号依次执行。除非本文中有明确的说明,这些单元在使用时并没有严格的顺序限制。

本申请实施例还提供了一种计算机设备,该计算机设备包括:至少一个处理器、存储器以及存储在存储器中并可在至少一个处理器上运行的计算机程序,处理器执行计算机程序时实现上述任意各个方法实施例中的步骤。

图10是本申请实施例提供的计算机设备的结构示意图。如图10所示,该实施例的计算机设备3000包括:至少一个处理器3100(图10中仅示出一个)处理器、存储器3200以及存储在存储器3200中并可在至少一个处理器3100上运行的计算机程序3210,处理器3100执行计算机程序3210时实现上述实施例中的步骤。

处理器3100可以是中央处理单元(Central Processing Unit,CPU),该处理器3100还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

存储器3200在一些实施例中可以是计算机设备3000的内部存储单元,例如计算机设备3000的硬盘或内存。存储器3200在另一些实施例中也可以是计算机设备3000的外部存储设备,例如计算机设备3000上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器3200还可以既包括计算机设备3000的内部存储单元也包括外部存储设备。存储器3200用于存储操作系统、应用程序、引导装载程序(Boot Loader)数据以及其他程序等,例如计算机程序的程序代码等。存储器3200还可以用于暂时地存储已经输出或者将要输出的数据。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。

本申请实施例提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,能够实现上述各个方法。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到计算机设备的任何实体或装置、记录介质、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。在描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。

应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

另外,在本申请说明书和所附权利要求书的描述中,术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

在本申请所提供的实施例中,应该理解到,所揭露的装置、计算机设备和方法,可以通过其它的方式实现。例如,以上所描述的装置、计算机设备实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。

以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

技术分类

06120115626982