一种三维模型的数据处理方法、装置及电子设备制造方法及图纸

技术编号:24096203 阅读:19 留言:0更新日期:2020-05-09 10:28
本发明专利技术适用于三维模型数据显示技术领域,提供了一种三维模型的数据处理方法、装置及电子设备。所述方法包括第一线程根据当前视点的位置信息,确定待显示场景模型及其对应的模型文件;根据当前视点的视椎体,对待显示场景模型内的所有节点进行可见性判断,并标记出进入当前视点的视椎体视野范围内的可见节点,将可见节点挂载至细节层次分页PageLOD;遍历细节层次分页PageLOD所挂载的可见节点,读取不同层级的LOD模型,对PageLOD所挂载的可见节点进行LOD可见性判断,根据判断结果将数据请求信息存放至数据请求列表中;第二线程根据数据请求列表中的数据请求信息加载对应的可见节点的相关数据至内存等待渲染。本发明专利技术可减少需要处理的数据量,从而可保证数据渲染的高效性。

A data processing method, device and electronic equipment of 3D model

【技术实现步骤摘要】
一种三维模型的数据处理方法、装置及电子设备
本专利技术属于三维模型数据显示
,尤其涉及一种三维模型的数据处理方法、装置及电子设备。
技术介绍
三维模型数据数据量较大,尤其城市级三维模型其数据量能达到100G比特,若直接通过一次性从硬盘中读取写入内存显然无法实现。并且三维模型数据的显示质量不仅取决于读入内存数据量的多数,还取决于是否满足一定的帧率下,对场景对象进行高效绘制,并能响应用户的输入,进行实时流畅交互。目前,主要通过细节层次模型技术(LevelsofDetail,LOD)管理和调度三维模型数据。LOD技术是一种常用的大场景调度方法,根据距离、速度等因素对场景显示的细节层次进行划分,并进行层级渲染,有效地减少场景渲染时的数据量,提供渲染效率。三维模型数据结构是以格网为基础的,形成LOD模型结构主要有3种方式:离散LOD模型;连续LOD模;多分辨率LOD模型。离散LOD模型是在场景中根据视点变化选取合适的模型加载,在层次间是离散的,因此在视点变化过程中会出现较为突兀的层级转换效果,并且由于数据预处理后增大了空间存储,也给数据读取的I/O操作带去压力。连续LOD模型是三维场景渲染过程中,根据当前条件计算简化的模型,使得同一片区域的细节层次间差别小且过渡平缓。但这种方法对于计算要求能力较高,难以保证实时渲染。多分辨率LOD模型采用分块的原理,针对大场景中大规模的数据无法完全存入内存,且即使存入内存也无法达到高效渲染的问题。因此亟需一种高效的三维模型数据的调度方法保证高效渲染。>
技术实现思路
本专利技术实施例提供一种三维模型的数据处理方法、装置及电子设备,旨在解决上述相关技术中存在的问题。本专利技术实施例是这样实现的,第一方面本专利技术实施例提供了一种三维模型的数据处理方法,应用于多线程,所述方法包括:第一线程根据当前视点的位置信息,确定待显示场景模型及其对应的模型文件;其中,所述模型文件是以八叉树结构形式缓存;所述第一线程根据当前视点的视椎体,对所述待显示场景模型内的所有节点进行可见性判断,并标记出进入当前视点的视椎体视野范围内的可见节点,将所述可见节点挂载至细节层次分页PageLOD;第一线程遍历细节层次分页PageLOD所挂载的可见节点,读取不同层级的LOD模型,对所述PageLOD所挂载的可见节点进行LOD可见性判断,根据所述判断结果将数据请求信息存放至数据请求列表中;所述数据请求信息用于请求不同层级的LOD模型对应的可见节点的相关数据;第二线程根据所述数据请求列表中的数据请求信息加载对应的可见节点的相关数据至内存等待渲染。更进一步地,在所述第一线程根据当前视点的位置信息,确定待显示场景模型及其对应的模型文件之前,还包括:所述第一线程基于八叉树结构,对三维城市模型进行场景分割,获取以八叉树结构形式进行缓存的模型文件。更进一步地,所述第一线程基于八叉树结构,对三维城市模型进行场景分割,获取以八叉树结构形式进行缓存的模型文件包括:所述第一线程在XYZ坐标轴内根据三维城市模型范围计算其内每栋建筑物的包围盒,并根据所述每栋建筑物的包围盒的范围生成场景包围盒;所述第一线程对所述场景包围盒进行分割处理,获取以八叉树结构形式进行缓存的模型文件;其中,所述分割处理包括:所述第一线程对第n次分割后的场景包围盒在XYZ坐标轴内进行八叉树分割处理,分割成8个第n+1次分割后的场景包围盒;其中,n为自然数;所述第一线程依次将8个第n+1次分割后的场景包围盒,确定为目标场景包围盒,并针对目标场景包围盒进行如下处理:若目标场景包围盒中建筑物的包围盒顶点均在一个八叉树节点内,则所述第一线程将此八叉树节点确定为此建筑物模型所在的八叉树节点;若不在同一个八叉树节点内,则将此建筑物的包围盒的中心点所在的八叉树节点确定为此建筑物模型所在的八叉树节点;所述第一线程判断八叉树节点中模型片元数是否大于第一预设阈值,及所述八叉树节点的深度是否达到八叉树最大深度,如果八叉树节点中模型片元数大于第一预设阈值和/或所述八叉树节点的深度达到八叉树最大深度,则所述第一线程将该八叉树节点确认为八叉树叶子节点;如果八叉树节点中模型片元数不大于第一预设值且所述八叉树节点的深度未达到八叉树最大深度,则所述第一线程更新n的值,并针对所述目标场景包围盒继续执行所述分割处理。更进一步地,所述遍历细节层次分页PageLOD所挂载的可见节点,读取不同层级的LOD模型,对所述PageLOD所挂载的可见节点进行LOD可见性判断包括:遍历细节层次分页PageLOD所挂载的可见节点,通过公式L=d/△L确定每个可见节点对应的LOD模型的层级,根据所述LOD模型的层级对所述PageLOD所挂载的可见节点进行LOD可见性判断;其中,L为LOD的层级,d为可见节点与视点间的距离,△L为层级间距。更进一步地,在所述第二线程根据所述数据请求列表中的数据请求信息加载对应的可见节点的相关数据至内存等待渲染之前,还包括:所述第二线程将内存中缓存的超过预设期限未进入当前视点的视椎体视野范围内的可见节点的相关数据删除;所述第二线程根据所述数据请求列表中的数据请求信息加载对应的可见节点的相关数据至内存等待渲染包括:所述第二线程根据所述数据请求列表中的数据请求信息加载对应的可见节点的相关数据,并将所述数据存储至等待合并列表中,以便进行数据渲染时加载所述等待合并列表中的数据。第二方面,本专利技术实施例还提供了一种三维模型的数据处理装置,应用于多线程,所装置包括:确定单元,用于第一线程根据当前视点的位置信息,确定待显示场景模型及其对应的模型文件;其中,所述模型文件是以八叉树结构形式缓存;处理单元,用于所述第一线程根据当前视点的视椎体,对所述待显示场景模型内的所有节点进行可见性判断,并标记出进入当前视点的视椎体视野范围内的可见节点,将所述可见节点挂载至细节层次分页PageLOD;所述处理单元,还用于所述第一线程遍历细节层次分页PageLOD所挂载的可见节点,读取不同层级的LOD模型,对所述PageLOD所挂载的可见节点进行LOD可见性判断,根据所述判断结果将数据请求信息存放至数据请求列表中;所述数据请求信息用于请求不同层级的LOD模型对应的可见节点的相关数据;加载单元,用于第二线程根据所述数据请求列表中的数据请求信息加载对应的可见节点的相关数据至内存等待渲染。更进一步地,还包括:获取单元,用于所述第一线程基于八叉树结构,对三维城市模型进行场景分割,获取以八叉树结构形式进行缓存的模型文件。更进一步地,所述获取单元,具体用于所述第一线程在XYZ坐标轴内根据三维城市模型范围计算其内每栋建筑物的包围盒,并根据所述每栋建筑物的包围盒的范围生成场景包围盒;所述第一线程对所述场景包围盒进行分割处理,获取以八叉树结构形式进行缓存的模型文件;其中,所述分割处理包括:所述第一线程对第n次分割后的场景包本文档来自技高网...

【技术保护点】
1.一种三维模型的数据处理方法,其特征在于,应用于多线程,所述方法包括:/n第一线程根据当前视点的位置信息,确定待显示场景模型及其对应的模型文件;其中,所述模型文件是以八叉树结构形式缓存;/n所述第一线程根据当前视点的视椎体,对所述待显示场景模型内的所有节点进行可见性判断,并标记出进入当前视点的视椎体视野范围内的可见节点,将所述可见节点挂载至细节层次分页PageLOD;/n第一线程遍历细节层次分页PageLOD所挂载的可见节点,读取不同层级的LOD模型,对所述PageLOD所挂载的可见节点进行LOD可见性判断,根据所述判断结果将数据请求信息存放至数据请求列表中;所述数据请求信息用于请求不同层级的LOD模型对应的可见节点的相关数据;/n第二线程根据所述数据请求列表中的数据请求信息加载对应的可见节点的相关数据至内存等待渲染。/n

【技术特征摘要】
1.一种三维模型的数据处理方法,其特征在于,应用于多线程,所述方法包括:
第一线程根据当前视点的位置信息,确定待显示场景模型及其对应的模型文件;其中,所述模型文件是以八叉树结构形式缓存;
所述第一线程根据当前视点的视椎体,对所述待显示场景模型内的所有节点进行可见性判断,并标记出进入当前视点的视椎体视野范围内的可见节点,将所述可见节点挂载至细节层次分页PageLOD;
第一线程遍历细节层次分页PageLOD所挂载的可见节点,读取不同层级的LOD模型,对所述PageLOD所挂载的可见节点进行LOD可见性判断,根据所述判断结果将数据请求信息存放至数据请求列表中;所述数据请求信息用于请求不同层级的LOD模型对应的可见节点的相关数据;
第二线程根据所述数据请求列表中的数据请求信息加载对应的可见节点的相关数据至内存等待渲染。


2.如权利要求1所述的方法,其特征在于,在所述第一线程根据当前视点的位置信息,确定待显示场景模型及其对应的模型文件之前,还包括:
所述第一线程基于八叉树结构,对三维城市模型进行场景分割,获取以八叉树结构形式进行缓存的模型文件。


3.根据权利要求2所述的方法,其特征在于,所述第一线程基于八叉树结构,对三维城市模型进行场景分割,获取以八叉树结构形式进行缓存的模型文件包括:
所述第一线程在XYZ坐标轴内根据三维城市模型范围计算其内每栋建筑物的包围盒,并根据所述每栋建筑物的包围盒的范围生成场景包围盒;
所述第一线程对所述场景包围盒进行分割处理,获取以八叉树结构形式进行缓存的模型文件;
其中,所述分割处理包括:
所述第一线程对第n次分割后的场景包围盒在XYZ坐标轴内进行八叉树分割处理,分割成8个第n+1次分割后的场景包围盒;其中,n为自然数;
所述第一线程依次将8个第n+1次分割后的场景包围盒,确定为目标场景包围盒,并针对目标场景包围盒进行如下处理:
若目标场景包围盒中建筑物的包围盒顶点均在一个八叉树节点内,则所述第一线程将此八叉树节点确定为此建筑物模型所在的八叉树节点;若不在同一个八叉树节点内,则将此建筑物的包围盒的中心点所在的八叉树节点确定为此建筑物模型所在的八叉树节点;
所述第一线程判断八叉树节点中模型片元数是否大于第一预设阈值,及所述八叉树节点的深度是否达到八叉树最大深度,如果八叉树节点中模型片元数大于第一预设阈值和/或所述八叉树节点的深度达到八叉树最大深度,则所述第一线程将该八叉树节点确认为八叉树叶子节点;
如果八叉树节点中模型片元数不大于第一预设值且所述八叉树节点的深度未达到八叉树最大深度,则所述第一线程更新n的值,并针对所述目标场景包围盒继续执行所述分割处理。


4.根据权利要求1所述的方法,其特征在于,所述遍历细节层次分页PageLOD所挂载的可见节点,读取不同层级的LOD模型,对所述PageLOD所挂载的可见节点进行LOD可见性判断包括:
遍历细节层次分页PageLOD所挂载的可见节点,通过公式L=d/△L确定每个可见节点对应的LOD模型的层级,根据所述LOD模型的层级对所述PageLOD所挂载的可见节点进行LOD可见性判断;其中,L为LOD的层级,d为可见节点与视点间的距离,△L为层级间距。


5.根据权利要求1-4任一项所述的方法,其特征在于,在所述第二线程根据所述数据请求列表中的数据请求信息加载对应的可见节点的相关数据至内存等待渲染之前,还包括:
所述第二线程将内存中缓存的超过预设期限未进入当前视点的视椎体视野范围内的可见节点的相关数据删除;
所述第二线程根据...

【专利技术属性】
技术研发人员:韩宇韬吕琪菲张至怡陈银曹粕佳王逸涛党建波阳松江
申请(专利权)人:四川航天神坤科技有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1