CN109377554B - 大型三维模型绘制方法、设备、系统及存储介质 - Google Patents
大型三维模型绘制方法、设备、系统及存储介质 Download PDFInfo
- Publication number
- CN109377554B CN109377554B CN201811294406.XA CN201811294406A CN109377554B CN 109377554 B CN109377554 B CN 109377554B CN 201811294406 A CN201811294406 A CN 201811294406A CN 109377554 B CN109377554 B CN 109377554B
- Authority
- CN
- China
- Prior art keywords
- data
- model
- original model
- loaded
- geometric data
- 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
Images
Classifications
-
- 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
- G06T19/00—Manipulating 3D models or images for computer graphics
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Geometry (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种大型三维模型绘制方法、设备、系统及存储介质。对原始模型进行解析,获取所述原始模型的模型数据,所述模型数据包括所述原始模型的几何数据和材质数据,基于所述原始模型的几何数据,建立所述原始模型的空间层次索引,基于所述空间层次索引对所述原始模型的几何数据进行分步加载,基于加载的几何数据,将所述原始模型的当前场景划分为多帧图像,基于所述原始模型的材质数据完成对所述多帧图像的绘制,本发明基于空间索引逐步加载分解后的模型数据,边加载边显示,并且通过固定帧率的渐进式绘制,实现了在移动设备上也能流畅查看大型三维模型。
Description
技术领域
本发明涉及大型三维模型技术领域,尤其涉及一种大型三维模型绘制方法、设备、系统及存储介质。
背景技术
随着移动设备的普及和移动互联网的迅猛发展,基于移动设备的三维产品模型的可视化浏览成为工程技术人员的明确需求。虽然目前已有一些三维CAD软件公司研发出在平板、手机等移动设备上使用的浏览软件版本,但需要安装APP,对用户来说不是很便捷,也不利于大型三维模型的快速分享和协同沟通。HTML5/WebGL技术的发展与成熟,为我们在Web和移动端显示大型三维模型提供了新的选择。WebGL(Web Graphics Library)是一种3D绘图标准,它把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的一个JavaScript绑定,可以为HTML5Canvas提供硬件3D加速渲染,提供了基于浏览器的无插件三维渲染跨平台方案,现代浏览器包括Chrome、Firefox、IE11/Edge、Safari等各种浏览器都已支持WebGL,几乎所有设备上都可以使用。基于WebGL的大型三维模型展示和浏览,在学术界和工业界都已得到了不少研究和应用。专业游戏引擎Unity3D也实现了对WebGL的支持,允许将3D场景发布为WebGL内容,但它发布的内容在移动设备上并不能得到很好的支持。国外的Sketchfab(https://sketchfab.com)、国内的腾讯(https://mofang.qq.com)等公司也相继推出了基于WebGL的在线3D模型展示和分享平台,对于数据规模不是非常大的模型,在电脑等设备中能有不错的展示效果。但是对于大型及超大型模型(模型中对象数达到数万至数十万个,面片数达到千万至亿级别)的展示支持的不是很好,在移动设备上打开时容易出现浏览器崩溃或操作非常卡顿。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种大型三维模型绘制方法、设备、系统及存储介质,旨在解决现有技术中大型三维模型在移动设备上显示时加载失败或浏览操作非常卡顿的技术问题。
为实现上述目的,本发明提供一种大型三维模型绘制方法,所述方法包括以下步骤:
对原始模型进行解析,获取所述原始模型的模型数据,所述模型数据包括所述原始模型的几何数据和材质数据;
基于所述原始模型的几何数据,建立所述原始模型的空间层次索引;
基于所述空间层次索引对所述原始模型的几何数据进行分步加载;
基于加载的几何数据,将所述原始模型的当前场景划分为多帧图像,基于所述原始模型的材质数据完成对所述多帧图像的绘制。
优选地,所述基于所述原始模型的几何数据,建立所述原始模型的空间层次索引,具体包括:
基于所述原始模型的几何数据,利用层次包围盒对所述原始模型进行分解,建立所述原始模型的空间层次索引。
优选地,所述基于所述原始模型的几何数据,建立所述原始模型的空间层次索引之后,所述方法还包括:
基于所述空间层次索引对所述原始模型的几何数据进行分块压缩存储,获得多个与所述原始模型的几何数据对应的块文件;
相应地,所述基于所述空间层次索引对所述原始模型的几何数据进行分步加载,具体包括:
基于所述空间层次索引对所述原始模型的块文件进行分步加载,对加载块文件进行解析,获得与加载的各块文件对应的几何数据。
优选地,所述基于所述空间层次索引对所述原始模型的块文件进行分步加载,具体包括:
基于所述空间层次索引,确定待加载块文件;
检测所述待加载块文件是否完成加载;
在所述待加载块文件已经完成加载时,发起下一个块文件的加载请求。
优选地,所述基于加载的几何数据,将所述原始模型的当前场景划分为多帧图像,基于所述原始模型的材质数据完成对所述多帧图像的绘制,具体包括:
获取在预设的帧绘制时间内遍历到的所述空间层次索引的目标节点,基于所述原始模型的材质数据对所述目标节点进行渲染,获得当前帧图像;
将所述当前帧图像保存到预设纹理中;
将所述当前帧图像与所述预设纹理中的历史帧图像进行合并,实现对所述原始模型的当前场景的绘制。
优选地,所述基于所述空间层次索引对所述原始模型的几何数据进行分步加载,具体包括:
判断当前内存的使用情况,在当前内存的使用量达到预设阈值时,暂停对所述原始模型的几何数据的加载;
相应地,所述获取在预设的帧绘制时间内遍历到的所述空间层次索引的目标节点,基于所述原始模型的材质数据对所述目标节点进行渲染,获得当前帧图像之后,所述方法还包括:
检测是否有尚未加载进内存的待加载数据块;
在存在有未加载进内存的待加载数据块时,判断当前内存的使用量,在当前内存的使用量已达到预设阈值时,对所述当前帧图像中满足预设条件的数据块进行卸载。
优选地,所述获取在预设的帧绘制时间内遍历到的所述空间层次索引的目标节点,基于所述原始模型的材质数据对所述目标节点进行渲染,获得当前帧图像,具体包括:
基于视点信息,综合使用视锥体剔除和可见性剔除的节点剔除方法,对所述空间层次索引中满足预设条件的节点进行剔除;
在预设的帧绘制时间内遍历所述空间层次索引中的剩余节点;
获取遍历到的目标节点,对所述目标节点进行渲染,获得当前帧图像。
此外,为实现上述目的,本发明还提供一种大型三维模型绘制设备,所述大型三维模型绘制设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的大型三维模型绘制程序,所述大型三维模型绘制程序配置为实现如上文所述的大型三维模型绘制方法的步骤。
此外,为实现上述目的,本发明还提供一种大型三维模型绘制系统,所述大型三维模型绘制系统包括:
获取模块,用于对原始模型进行解析,获取所述原始模型的模型数据,所述模型数据包括所述原始模型的几何数据和材质数据;
建立模块,用于基于所述原始模型的几何数据,建立所述原始模型的空间层次索引;
加载模块,用于基于所述空间层次索引对所述原始模型的几何数据进行分步加载;
绘制模块,用于基于加载的几何数据,将所述原始模型的当前场景划分为多帧图像,基于所述原始模型的材质数据完成对所述多帧图像的绘制。
此外,为实现上述目的,本发明还提供一种存储介质,所述存储介质上存储有大型三维模型绘制程序,所述大型三维模型绘制程序被处理器执行时实现如上文所述的大型三维模型绘制方法的步骤。
本发明的设备首先对原始模型进行解析,获取所述原始模型的模型数据,所述模型数据包括所述原始模型的几何数据和材质数据,基于所述原始模型的几何数据,建立所述原始模型的空间层次索引,基于所述空间层次索引对所述原始模型的几何数据进行分步加载,基于加载的几何数据,将所述原始模型的当前场景划分为多帧图像,基于所述原始模型的材质数据完成对所述多帧图像的绘制,本发明基于空间索引逐步加载分解后的模型数据,边加载边显示,并且通过固定帧率的渐进式绘制,实现了在移动设备上也能流畅查看大型三维模型。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的大型三维模型绘制设备结构示意图;
图2为本发明实现大型三维模型绘制方法第一实施例的流程示意图;
图3为本发明实现大型三维模型绘制系统第一实施例的功能模块图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的大型三维模型绘制设备的结构示意图。
如图1所示,该大型三维模型绘制设备可以包括:处理器1001,例如CPU,通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对大型三维模型绘制设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及大型三维模型绘制程序。
图1所示的大型三维模型绘制设备中,网络接口1004主要用于与外部网络进行数据通信;用户接口1003主要用于接收用户的输入指令;所述大型三维模型绘制设备通过处理器1001调用存储器1005中存储的大型三维模型绘制程序,并执行以下操作:
对原始模型进行解析,获取所述原始模型的模型数据,所述模型数据包括所述原始模型的几何数据和材质数据;
基于所述原始模型的几何数据,建立所述原始模型的空间层次索引;
基于所述空间层次索引对所述原始模型的几何数据进行分步加载;
基于加载的几何数据,将所述原始模型的当前场景划分为多帧图像,基于所述原始模型的材质数据完成对所述多帧图像的绘制。
进一步地,处理器1001可以调用存储器1005中存储的大型三维模型绘制程序,还执行以下操作:
基于所述原始模型的几何数据,利用层次包围盒对所述原始模型进行分解,建立所述原始模型的空间层次索引。
进一步地,处理器1001可以调用存储器1005中存储的大型三维模型绘制程序,还执行以下操作:
基于所述空间层次索引对所述原始模型的块文件进行分步加载,对加载块文件进行解析,获得与加载的各块文件对应的几何数据。
进一步地,处理器1001可以调用存储器1005中存储的大型三维模型绘制程序,还执行以下操作:
基于所述空间层次索引,确定待加载块文件;
检测所述待加载块文件是否完成加载;
在所述待加载块文件已经完成加载时,发起下一个块文件的加载请求。
进一步地,处理器1001可以调用存储器1005中存储的大型三维模型绘制程序,还执行以下操作:
获取在预设的帧绘制时间内遍历到的所述空间层次索引的目标节点,基于所述原始模型的材质数据对所述目标节点进行渲染,获得当前帧图像;
将所述当前帧图像保存到预设纹理中;
将所述当前帧图像与所述预设纹理中的历史帧图像进行合并,实现对所述原始模型的当前场景的绘制。
进一步地,处理器1001可以调用存储器1005中存储的大型三维模型绘制程序,还执行以下操作:
检测是否有尚未加载进内存的待加载数据块;
在存在有未加载进内存的待加载数据块时,判断当前内存的使用量,在当前内存的使用量已达到预设阈值时,对所述当前帧图像中满足预设条件的数据块进行卸载。
进一步地,处理器1001可以调用存储器1005中存储的大型三维模型绘制程序,还执行以下操作:
基于视点信息,综合使用视锥体剔除和可见性剔除的节点剔除方法,对所述空间层次索引中满足预设条件的节点进行剔除;
在预设的帧绘制时间内遍历所述空间层次索引中的剩余节点;
获取遍历到的目标节点,对所述目标节点进行渲染,获得当前帧图像。
本实施例通过上述方案,对原始模型进行解析,获取所述原始模型的模型数据,所述模型数据包括所述原始模型的几何数据和材质数据,基于所述原始模型的几何数据,建立所述原始模型的空间层次索引,基于所述空间层次索引对所述原始模型的几何数据进行分步加载,基于加载的几何数据,将所述原始模型的当前场景划分为多帧图像,基于所述原始模型的材质数据完成对所述多帧图像的绘制,本发明基于空间索引逐步加载分解后的模型数据,边加载边显示,并且通过固定帧率的渐进式绘制,实现了在移动设备上也能流畅查看大型三维模型。
基于上述硬件结构,提出本发明大型三维模型绘制方法实施例。
参照图2,图2为本发明大型三维模型绘制方法第一实施例的流程示意图。
在第一实施例中,所述大型三维模型绘制方法包括以下步骤:
S10:对原始模型进行解析,获取所述原始模型的模型数据,所述模型数据包括所述原始模型的几何数据和材质数据。
需要说明的是,本发明方法针对的是大型三维模型在移动设备上的绘制问题,所述的大型三维模型是指面片数超过500万的三维模型。
可以理解的是,大型三维模型的数据格式有多种,而且原始数据会比较庞大和复杂,本发明研究一种统一的轻量化中间数据格式,在具体实现中,可以是基于原始模型的开放格式定义或在原软件上开发转换插件或基于商业化模型转换组件将原始模型数据转换为轻量化中间格式,供后续的显示使用,所述轻量化中间格式包括从原始模型中提取的模型结构树数据、离散几何数据及材质数据等。
需要说明的是,本发明中,是通过原始模型的几何数据建立所述空间层次索引,通过转换后的轻量化模型对原始模型的其他类型的数据进行分类存储,所述轻量化模型由多个文件组成,并压缩存放,以便于网络传输和渐进式加载,本实施例的轻量化模型包含一些对模型元数据的描述和对模型其它文件的引用定义,模型的包围盒空间层次结构数据,模型中对象的结构树数据、对象的定义、几何对象的分块信息等,以及模型中用到的材质对象的定义,每个材质对象包括材质类型、名称、id、颜色、环境光颜色、镜面光颜色、光照强度、自发光、透明度、纹理贴图、环境反射系数等参数,还包含有模型的离散几何数据文件,包含顶点坐标、顶点法向、纹理坐标、离散三角形或线段索引等图形数据。根据构造好的层次包围盒结构树,整个模型的几何数据被分为多个块,每块包含了一个或多个叶子节点中的几何对象数据及材质中用到的纹理贴图的图片文件。
S20:基于所述原始模型的几何数据,建立所述原始模型的空间层次索引。
本实施例,在具体实现中,是基于所述原始模型的几何数据,利用层次包围盒对所述原始模型进行分解,建立场景的空间层次索引。
可以理解的是,在建立原始模型的空间层次索引之后,可以以此空间层次索引为基础对原始模型进行分块存放。
S30:基于所述空间层次索引对所述原始模型的几何数据进行分步加载。
本实施例,在具体的实现中,可以将转换好的模型数据文件存放在服务器端,在前端浏览器中通过异步请求的方式加载模型文件。
在具体的加载中,可以基于所述空间层次索引对原始模型的块文件进行分步加载,对加载块文件进行解析,获得与加载的各块文件对应的几何数据。
可以理解的是,对于一个大型模型,块文件的数量会有成百上千个,而浏览器对并发异步请求的数量是有限制的,如果同时发送过多的请求就可能导致浏览器崩溃,因此,可以创建一个固定数量的异步请求池来加载几何数据块文件,只有当请求池里的某个加载请求完成后才发起对下一个块文件的加载。
在具体的实现中,可以基于所述空间层次索引,确定当前待加载的块文件,在块文件的加载过程中,实时检测所述待加载块文件是否完成加载,只有在当前待加载块文件已经完成加载时,才会发起下一个块文件的加载请求。当然,本实施例中,每完成一个块文件的加载后就显示该部分的数据,不必等模型的全部数据加载完后才显示,从而提升用户体验。
另外,在块文件的加载中可以采用缓存机制,这样下一次再加载时,可以直接从本地缓存中获取数据,减少文件网络传输所需要的时间。
S40:基于加载的几何数据,将所述原始模型的当前场景划分为多帧图像,基于所述原始模型的材质数据完成对所述多帧图像的绘制。
可以理解的是,对于大模型,如果要在一帧内绘制完场景的全部内容,每帧的绘制时间就会很长,在做交互操作时会非常卡顿,为保证模型的显示效率和交互的流畅度,本发明采用固定帧率的渐进式绘制。在具体实现中,对每一帧的绘制时间做了限制,通过多帧的绘制完成原始模型当前场景的绘制,即获取在预设的帧绘制时间内遍历到的所述空间层次索引的目标节点,对所述目标节点进行渲染,获得当前帧图像,将所述当前帧图像保存到预设纹理中,将所述当前帧图像与所述预设纹理中的历史帧图像进行合并,实现对所述原始模型的当前场景的绘制。
在具体实现中,可以在规定时间内基于所述空间层次索引去遍历节点数据进行渲染,渲染过的节点标记设为false,超过时间就停止后续节点的渲染,等下一帧时再渲染后续节点。每一帧的绘制结果都保存在WebGL渲染目标的纹理中,后续帧渲染的结果会和前面帧的结果进行合并,再将纹理绘制到屏幕显示出来。
可以理解的是,当原始模型的当前场景发生改变时,比如视图变化、模型的内容或材质发生变化等,所述空间层次索引的标记位和WebGL渲染目标中的内容会进行重置,重新进行场景的渲染。
进一步地,在进行节点遍历时,会首先基于视点信息,综合使用视锥体剔除和可见性剔除的节点剔除方法,对所述空间层次索引中满足预设条件的节点进行剔除,在预设的帧绘制时间遍历所述空间层次索引中的剩余节点,获取遍历到的目标节点,对所述目标节点进行渲染,获得当前帧图像。本实施例中,满足预设条件的节点即为不显示的节点。
在具体实现中,首先剔除处于隐藏状态的节点,再根据当前的视点信息剔除视景体外的节点,然后根据节点包围盒的屏幕投影像素阈值,对离视点很远的节点简化为包围盒进行绘制,以减少绘制内容的大小,提高绘制效率。
可以理解的是,受设备内存和显存的限制,对于超大的模型,无法加载整个模型到内存中进行绘制,本实施例,针对不同的移动设备,设置了不同的内存和显存阈值,在加载过程中,判断内存的使用情况,在当前内存的使用量达到预设阈值时,会暂停对原始模型的几何数据的加载,当然,在后续的渲染过程中也会通过内外存数据的动态调度和渐进式绘制来实现场景的完整绘制。
本实施例中,每帧绘制完后,会检测是否有尚未加载进内存进行绘制的数据块,如果有则判断当前内存的使用情况,如果内存使用已达到设定的阈值,要进行场景中模型数据的卸载操作,释放显存的缓冲区数据和浏览器的内存数据,再进行下一块数据的加载操作,新加载进来的数据会在后续帧中绘制。具体实现中,数据的卸载可以遵循下面的顺序:首先卸载当前不可见节点的数据;如果内存还不够,再卸载已经绘制过的节点的数据,绘制过的节点按照包围盒的大小从小到大排序,先卸载包围盒小的。
在本实施例中,对原始模型进行解析,获取所述原始模型的模型数据,所述模型数据包括所述原始模型的几何数据和材质数据,基于所述原始模型的几何数据,建立所述原始模型的空间层次索引,基于所述空间层次索引对所述原始模型的几何数据进行分步加载,基于加载的几何数据,将所述原始模型的当前场景划分为多帧图像,基于所述原始模型的材质数据完成对所述多帧图像的绘制,本发明基于空间索引逐步加载分解后的模型数据,边加载边显示,并且通过固定帧率的渐进式绘制,实现了在移动设备上也能流畅查看大型三维模型。
参照图3,图3为本发明大型三维模型绘制系统第一实施例的功能模块图,基于大型三维模型绘制方法,提出本发明大型三维模型绘制系统的第一实施例。
在本实施例中,所述大型三维模型绘制系统包括:
获取模块10,用于对原始模型进行解析,获取所述原始模型的模型数据,所述模型数据包括所述原始模型的几何数据和材质数据。
需要说明的是,本发明方法针对的是大型三维模型在移动设备上的绘制问题,所述的大型三维模型是指面片数超过500万的三维模型。
可以理解的是,大型三维模型的数据格式有多种,而且原始数据会比较庞大和复杂,本发明研究一种统一的轻量化中间数据格式,在具体实现中,可以是基于原始模型的开放格式定义或在原软件上开发转换插件或基于商业化模型转换组件将原始模型数据转换为轻量化中间格式,供后续的显示使用,所述轻量化中间格式包括从原始模型中提取的模型结构树数据、离散几何数据及材质数据等。
需要说明的是,本发明中,是通过原始模型的几何数据建立所述空间层次索引,通过转换后的轻量化模型对原始模型的其他类型的数据进行分类存储,所述轻量化模型由多个文件组成,并压缩存放,以便于网络传输和渐进式加载,本实施例的轻量化模型包含一些对模型元数据的描述和对模型其它文件的引用定义,模型的包围盒空间层次结构数据,模型中对象的结构树数据、对象的定义、几何对象的分块信息等,以及模型中用到的材质对象的定义,每个材质对象包括材质类型、名称、id、颜色、环境光颜色、镜面光颜色、光照强度、自发光、透明度、纹理贴图、环境反射系数等参数,还包含有模型的离散几何数据文件,包含顶点坐标、顶点法向、纹理坐标、离散三角形或线段索引等图形数据。根据构造好的层次包围盒结构树,整个模型的几何数据被分为多个块,每块包含了一个或多个叶子节点中的几何对象数据及材质中用到的纹理贴图的图片文件。
建立模块20,用于基于所述原始模型的几何数据,建立所述原始模型的空间层次索引。
本实施例,在具体实现中,是基于所述原始模型的几何数据,利用层次包围盒对所述原始模型进行分解,建立场景的空间层次索引。
可以理解的是,在建立原始模型的空间层次索引之后,可以以此空间层次索引为基础对原始模型进行分块存放。
加载模块30,用于基于所述空间层次索引对所述原始模型的几何数据进行分步加载。
本实施例,在具体的实现中,可以将转换好的模型数据文件存放在服务器端,在前端浏览器中通过异步请求的方式加载模型文件。
在具体的加载中,可以基于所述空间层次索引对原始模型的块文件进行分步加载,对加载块文件进行解析,获得与加载的各块文件对应的几何数据。
可以理解的是,对于一个大型模型,块文件的数量会有成百上千个,而浏览器对并发异步请求的数量是有限制的,如果同时发送过多的请求就可能导致浏览器崩溃,因此,可以创建一个固定数量的异步请求池来加载几何数据块文件,只有当请求池里的某个加载请求完成后才发起对下一个块文件的加载。
在具体的实现中,可以基于所述空间层次索引,确定当前待加载的块文件,在块文件的加载过程中,实时检测所述待加载块文件是否完成加载,只有在当前待加载块文件已经完成加载时,才会发起下一个块文件的加载请求。当然,本实施例中,每完成一个块文件的加载后就显示该部分的数据,不必等模型的全部数据加载完后才显示,从而提升用户体验。
另外,在块文件的加载中可以采用缓存机制,这样下一次再加载时,可以直接从本地缓存中获取数据,减少文件网络传输所需要的时间。
绘制模块40,用于基于加载的几何数据,将所述原始模型的当前场景划分为多帧图像,基于所述原始模型的材质数据完成对所述多帧图像的绘制。
可以理解的是,对于大模型,如果要在一帧内绘制完场景的全部内容,每帧的绘制时间就会很长,在做交互操作时会非常卡顿,为保证模型的显示效率和交互的流畅度,本发明采用固定帧率的渐进式绘制。在具体实现中,对每一帧的绘制时间做了限制,通过多帧的绘制完成原始模型当前场景的绘制,即获取在预设的帧绘制时间内遍历到的所述空间层次索引的目标节点,对所述目标节点进行渲染,获得当前帧图像,将所述当前帧图像保存到预设纹理中,将所述当前帧图像与所述预设纹理中的历史帧图像进行合并,实现对所述原始模型的当前场景的绘制。
在具体实现中,可以在规定时间内基于所述空间层次索引去遍历节点数据进行渲染,渲染过的节点标记设为false,超过时间就停止后续节点的渲染,等下一帧时再渲染后续节点。每一帧的绘制结果都保存在WebGL渲染目标的纹理中,后续帧渲染的结果会和前面帧的结果进行合并,再将纹理绘制到屏幕显示出来。
可以理解的是,当原始模型的当前场景发生改变时,比如视图变化、模型的内容或材质发生变化等,所述空间层次索引的标记位和WebGL渲染目标中的内容会进行重置,重新进行场景的渲染。
进一步地,在进行节点遍历时,会首先基于视点信息,综合使用视锥体剔除和可见性剔除的节点剔除方法,对所述空间层次索引中满足预设条件的节点进行剔除,在预设的帧绘制时间遍历所述空间层次索引中的剩余节点,获取遍历到的目标节点,对所述目标节点进行渲染,获得当前帧图像。本实施例中,满足预设条件的节点即为不显示的节点。
在具体实现中,首先剔除处于隐藏状态的节点,再根据当前的视点信息剔除视景体外的节点,然后根据节点包围盒的屏幕投影像素阈值,对离视点很远的节点简化为包围盒进行绘制,以减少绘制内容的大小,提高绘制效率。
可以理解的是,受设备内存和显存的限制,对于超大的模型,无法加载整个模型到内存中进行绘制,本实施例,针对不同的移动设备,设置了不同的内存和显存阈值,在加载过程中,判断内存的使用情况,在当前内存的使用量达到预设阈值时,会暂停对原始模型的几何数据的加载,当然,在后续的渲染过程中也会通过内外存数据的动态调度和渐进式绘制来实现场景的完整绘制。
本实施例中,每帧绘制完后,会检测是否有尚未加载进内存进行绘制的数据块,如果有则判断当前内存的使用情况,如果内存使用已达到设定的阈值,要进行场景中模型数据的卸载操作,释放显存的缓冲区数据和浏览器的内存数据,再进行下一块数据的加载操作,新加载进来的数据会在后续帧中绘制。具体实现中,数据的卸载可以遵循下面的顺序:首先卸载当前不可见节点的数据;如果内存还不够,再卸载已经绘制过的节点的数据,绘制过的节点按照包围盒的大小从小到大排序,先卸载包围盒小的。
在本实施例中,对原始模型进行解析,获取所述原始模型的模型数据,所述模型数据包括所述原始模型的几何数据和材质数据,基于所述原始模型的几何数据,建立所述原始模型的空间层次索引,基于所述空间层次索引对所述原始模型的几何数据进行分步加载,基于加载的几何数据,将所述原始模型的当前场景划分为多帧图像,基于所述原始模型的材质数据完成对所述多帧图像的绘制,本发明基于空间索引逐步加载分解后的模型数据,边加载边显示,并且通过固定帧率的渐进式绘制,实现了在移动设备上也能流畅查看大型三维模型。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有大型三维模型绘制程序,所述大型三维模型绘制程序被处理器执行时实现如下操作:
对原始模型进行解析,获取所述原始模型的模型数据,所述模型数据包括所述原始模型的几何数据和材质数据;
基于所述原始模型的几何数据,建立所述原始模型的空间层次索引;
基于所述空间层次索引对所述原始模型的几何数据进行分步加载;
基于加载的几何数据,将所述原始模型的当前场景划分为多帧图像,基于所述原始模型的材质数据完成对所述多帧图像的绘制。
进一步地,所述大型三维模型绘制程序被处理器执行时还实现如下操作:
基于所述原始模型的几何数据,利用层次包围盒对所述原始模型进行分解,建立所述原始模型的空间层次索引。
进一步地,所述大型三维模型绘制程序被处理器执行时还实现如下操作:
基于所述空间层次索引对所述原始模型的块文件进行分步加载,对加载块文件进行解析,获得与加载的各块文件对应的几何数据。
进一步地,所述大型三维模型绘制程序被处理器执行时还实现如下操作:
基于所述空间层次索引,确定待加载块文件;
检测所述待加载块文件是否完成加载;
在所述待加载块文件已经完成加载时,发起下一个块文件的加载请求。
进一步地,所述大型三维模型绘制程序被处理器执行时还实现如下操作:
获取在预设的帧绘制时间内遍历到的所述空间层次索引的目标节点,基于所述原始模型的材质数据对所述目标节点进行渲染,获得当前帧图像;
将所述当前帧图像保存到预设纹理中;
将所述当前帧图像与所述预设纹理中的历史帧图像进行合并,实现对所述原始模型的当前场景的绘制。
进一步地,所述大型三维模型绘制程序被处理器执行时还实现如下操作:
检测是否有尚未加载进内存的待加载数据块;
在存在有未加载进内存的待加载数据块时,判断当前内存的使用量,在当前内存的使用量已达到预设阈值时,对所述当前帧图像中满足预设条件的数据块进行卸载。
进一步地,所述大型三维模型绘制程序被处理器执行时还实现如下操作:
基于视点信息,综合使用视锥体剔除和可见性剔除的节点剔除方法,对所述空间层次索引中满足预设条件的节点进行剔除;
在预设的帧绘制时间内遍历所述空间层次索引中的剩余节点;
获取遍历到的目标节点,对所述目标节点进行渲染,获得当前帧图像。
本实施例通过上述方案,对原始模型进行解析,获取所述原始模型的模型数据,所述模型数据包括所述原始模型的几何数据和材质数据,基于所述原始模型的几何数据,建立所述原始模型的空间层次索引,基于所述空间层次索引对所述原始模型的几何数据进行分步加载,基于加载的几何数据,将所述原始模型的当前场景划分为多帧图像,基于所述原始模型的材质数据完成对所述多帧图像的绘制,本发明基于空间索引逐步加载分解后的模型数据,边加载边显示,并且通过固定帧率的渐进式绘制,实现了在移动设备上也能流畅查看大型三维模型。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (5)
1.一种三维模型绘制方法,其特征在于,所述方法包括以下步骤:
对原始模型进行解析,获取所述原始模型的模型数据,所述模型数据包括所述原始模型的几何数据和材质数据;
基于所述原始模型的几何数据,建立所述原始模型的空间层次索引;
基于所述空间层次索引对所述原始模型的几何数据进行分块压缩存储,获得多个与所述原始模型的几何数据对应的块文件;
基于所述空间层次索引对所述原始模型的几何数据进行分步加载;具体包括:基于所述空间层次索引,确定待加载块文件;检测所述待加载块文件是否完成加载;在所述待加载块文件已经完成加载时,发起下一个块文件的加载请求;对加载块文件进行解析,获得与加载块文件对应的几何数据;每完成一个块文件的加载后就显示该块文件的数据;
基于加载的几何数据,将所述原始模型的当前场景划分为多帧图像,基于所述原始模型的材质数据完成对所述多帧图像的绘制,具体采用固定帧率的渐进式绘制,对每一帧的绘制时间进行限制,通过多帧的绘制完成当前场景的绘制,包括:基于视点信息,综合使用视锥体剔除和可见性剔除的节点剔除方法,对所述空间层次索引中满足预设条件的节点进行剔除;在预设的帧绘制时间内遍历所述空间层次索引中的剩余节点;获取遍历到的目标节点,基于所述原始模型的材质数据对所述目标节点进行渲染,获得当前帧图像;将所述当前帧图像保存到预设纹理中;将所述当前帧图像与所述预设纹理中的历史帧图像进行合并,实现对所述原始模型的当前场景的绘制;
判断当前内存的使用情况,在当前内存的使用量达到预设阈值时,暂停对所述原始模型的几何数据的加载;在获得当前帧图像之后,所述方法还包括:检测是否有尚未加载进内存的待加载数据块;在存在有未加载进内存的待加载数据块时,判断当前内存的使用量,在当前内存的使用量已达到预设阈值时,对所述当前帧图像中满足预设条件的数据块进行卸载。
2.如权利要求1所述的方法,其特征在于,所述基于所述原始模型的几何数据,建立所述原始模型的空间层次索引,具体包括:
基于所述原始模型的几何数据,利用层次包围盒对所述原始模型进行分解,建立所述原始模型的空间层次索引。
3.一种三维模型绘制设备,其特征在于,所述三维模型绘制设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的三维模型绘制程序,所述三维模型绘制程序配置为实现如权利要求1至2中任一项所述的三维模型绘制方法的步骤。
4.一种三维模型绘制系统,其特征在于,所述三维模型绘制系统包括:
获取模块,用于对原始模型进行解析,获取所述原始模型的模型数据,所述模型数据包括所述原始模型的几何数据和材质数据;
建立模块,用于基于所述原始模型的几何数据,建立所述原始模型的空间层次索引;基于所述空间层次索引对所述原始模型的几何数据进行分块压缩存储,获得多个与所述原始模型的几何数据对应的块文件;
加载模块,用于基于所述空间层次索引对所述原始模型的几何数据进行分步加载;具体包括:基于所述空间层次索引,确定待加载块文件;检测所述待加载块文件是否完成加载;在所述待加载块文件已经完成加载时,发起下一个块文件的加载请求;对加载块文件进行解析,获得与加载块文件对应的几何数据;每完成一个块文件的加载后就显示该块文件的数据;
绘制模块,用于基于加载的几何数据,将所述原始模型的当前场景划分为多帧图像,基于所述原始模型的材质数据完成对所述多帧图像的绘制,具体采用固定帧率的渐进式绘制,对每一帧的绘制时间进行限制,通过多帧的绘制完成当前场景的绘制,包括:基于视点信息,综合使用视锥体剔除和可见性剔除的节点剔除方法,对所述空间层次索引中满足预设条件的节点进行剔除;在预设的帧绘制时间内遍历所述空间层次索引中的剩余节点;获取遍历到的目标节点,基于所述原始模型的材质数据对所述目标节点进行渲染,获得当前帧图像;将所述当前帧图像保存到预设纹理中;将所述当前帧图像与所述预设纹理中的历史帧图像进行合并,实现对所述原始模型的当前场景的绘制;
判断当前内存的使用情况,在当前内存的使用量达到预设阈值时,暂停对所述原始模型的几何数据的加载;在获得当前帧图像之后,检测是否有尚未加载进内存的待加载数据块;在存在有未加载进内存的待加载数据块时,判断当前内存的使用量,在当前内存的使用量已达到预设阈值时,对所述当前帧图像中满足预设条件的数据块进行卸载。
5.一种存储介质,其特征在于,所述存储介质上存储有三维模型绘制程序,所述三维模型绘制程序被处理器执行时实现如权利要求1至2中任一项所述的三维模型绘制方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811294406.XA CN109377554B (zh) | 2018-10-31 | 2018-10-31 | 大型三维模型绘制方法、设备、系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811294406.XA CN109377554B (zh) | 2018-10-31 | 2018-10-31 | 大型三维模型绘制方法、设备、系统及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109377554A CN109377554A (zh) | 2019-02-22 |
CN109377554B true CN109377554B (zh) | 2023-06-09 |
Family
ID=65397335
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811294406.XA Active CN109377554B (zh) | 2018-10-31 | 2018-10-31 | 大型三维模型绘制方法、设备、系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109377554B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110209974A (zh) * | 2019-05-29 | 2019-09-06 | 深圳图为技术有限公司 | 一种浏览三维模型的方法和装置 |
CN110992460B (zh) * | 2019-11-26 | 2023-05-16 | 深圳市毕美科技有限公司 | 用于移动设备的模型流畅展示方法、系统、装置及存储介质 |
CN110990909B (zh) * | 2019-11-29 | 2023-10-20 | 北京仿真中心 | 一种三维cad模型数据处理方法 |
CN111736751B (zh) * | 2020-08-26 | 2021-03-26 | 深圳市千分一智能技术有限公司 | 笔画重绘方法、设备及可读存储介质 |
CN112484242B (zh) * | 2020-11-30 | 2022-01-28 | 珠海格力电器股份有限公司 | 基于增强现实的空调选型方法及相关装置 |
CN112802134B (zh) * | 2021-01-11 | 2024-10-15 | 南京征帆信息科技有限公司 | 一种三维模型的编码方法、装置和终端 |
CN115294257B (zh) * | 2022-10-10 | 2023-02-17 | 中交第四航务工程勘察设计院有限公司 | 基于几何分离的大体量模型的多线程异步加载方法及装置 |
CN116627580B (zh) * | 2023-07-25 | 2023-09-22 | 江苏正泰泰杰赛智能科技有限公司 | 一种网页端的多级缓存的三维模型加载方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012083508A1 (zh) * | 2010-12-24 | 2012-06-28 | 中国科学院自动化研究所 | 互联网上复杂场景真实感快速绘制方法 |
CN102289845B (zh) * | 2011-08-30 | 2013-04-10 | 广东省电力设计研究院 | 一种三维模型绘制方法以及装置 |
CN106909640B (zh) * | 2017-02-16 | 2020-04-21 | 杭州新迪数字工程系统有限公司 | 基于webgl的三维模型轻量化展示技术 |
CN108346174B (zh) * | 2017-12-31 | 2020-11-24 | 广州都市圈网络科技有限公司 | 一种支持单模型交互的三维模型合并方法 |
-
2018
- 2018-10-31 CN CN201811294406.XA patent/CN109377554B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109377554A (zh) | 2019-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109377554B (zh) | 大型三维模型绘制方法、设备、系统及存储介质 | |
CN108876887B (zh) | 渲染方法和装置 | |
CN103823620B (zh) | 一种屏幕适配的方法和装置 | |
CN104850388A (zh) | 网页绘制方法及装置 | |
CN111161390A (zh) | 一种基于BIM模型和WebGL的渲染方法及装置 | |
CN109472852B (zh) | 点云图像的显示方法及装置、设备及存储介质 | |
CN111240669B (zh) | 界面生成方法、装置、电子设备及计算机存储介质 | |
US10664980B2 (en) | Vector graphics handling processes for user applications | |
CN112132941B (zh) | 一种文字渲染方法、装置、设备及存储介质 | |
CN113797554B (zh) | 游戏引擎资源的处理方法、装置、存储介质及电子设备 | |
CN111950056A (zh) | 建筑信息化模型bim展示方法及相关设备 | |
CN117390322A (zh) | 虚拟空间构建方法、装置、电子设备及非易失性存储介质 | |
WO2023197762A1 (zh) | 图像渲染方法、装置、电子设备、计算机可读存储介质及计算机程序产品 | |
JP2021006982A (ja) | 文字の色を決定する方法および装置 | |
CN110930492B (zh) | 模型渲染的方法、装置、计算机可读介质及电子设备 | |
CN116595104A (zh) | 一种矿山安全监测系统的可视化处理方法 | |
US9501812B2 (en) | Map performance by dynamically reducing map detail | |
CN113626129B (zh) | 一种页面颜色的确定方法、装置及电子设备 | |
CN117611703A (zh) | 弹幕字符的渲染方法、装置、设备、存储介质及程序产品 | |
CN102663134B (zh) | 一种热点图片加载方法、控制服务器、客户端及系统 | |
CN115859431A (zh) | 三维建筑模型与二维图纸的联动方法、装置和设备 | |
CN106548501B (zh) | 一种图像绘制方法及设备 | |
CN114461959A (zh) | Bim数据的web端在线显示方法、装置及电子设备 | |
CN114399645A (zh) | 多模态数据扩充方法、系统、介质、计算机设备及终端 | |
CN110990104B (zh) | 一种基于Unity3D的纹理渲染方法及装置 |
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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20230524 Address after: Room 801, Building 2, No. 2570 Hechuan Road, Minhang District, Shanghai, 201101 Applicant after: Hangzhou New Dimension Systems Co.,Ltd. Address before: 430000 No. 2 and 3, floors 14-15, building B5, phase II of Guanggu Avenue financial background service center base construction project, Dongyi Industrial Park, Donghu New Technology Development Zone, Wuhan, Hubei Province Applicant before: WUHAN XINDI DIGITAL ENGINEERING SYSTEM CO.,LTD. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |