大规模建筑场景的细粒度化Web3D在线可视化方法
文献发布时间:2023-06-19 11:22:42
技术领域
本发明涉及三维建模与渲染技术领域,特别是涉及一种大规模建筑场景的细粒度化Web3D在线可视化方法。
背景技术
当今,“互联网+”技术日趋成熟,“VR+”技术开始兴起,在移动网页浏览器上在线展示三维虚拟场景的诉求应运而生,大规模Web3D场景的在线可视化越发兴起。对于建筑领域,随着建筑信息化,Building Information Model(BIM)已经成为建设及土木行业信息化发展的主流技术,BIM技术的应用使原来大规模建筑数据信息的集成、表达、更新以及传递共享越来越简捷,BIM与面向移动互联网的Web3D可视化的交叉融合已经成为重要的研究与应用方向。
但是,建筑模型数据往往很大,这些年呈现爆炸式增长的趋势,数据常常数以GB计,而Web浏览器(尤其是移动端浏览器)计算性能与缓存都非常有限,网络传输带宽还远不足以支持大规模建筑场景模型数据的快速传输,在此情况下,如何快速、流畅而准确地将建筑模型数据传输至Web端并进行高效实时在线渲染可视化成为挑战性的热点技术。WebBIM大规模建筑场景在线可视化面临的挑战如下:
(1)大规模建筑模型数据即时传输与有限的网络带宽之间的矛盾;
(2)大规模建筑模型在线渲染与浏览器低计算性能之间的矛盾;
(3)大规模建筑场景加载渲染引发的高延迟与浏览用户等待的有限耐心之间的矛盾;
虽然这些年来,也有一些相关的3D在线可视化的方法和理论被提出,但是其效果仍旧不太尽如人意,往往存在加载时间过长、漫游卡顿、浏览器加载崩溃的情况,并且由于建筑模型的特殊性,大规模BIM场景在线可视化的方案更加缺乏。
专利“一种基于Web3D的超大场景实时渲染装置和方法(专利申请号CN201110256005.7)”提供了一种Web3D大场景的实时渲染方法,但是其缺乏轻量化处理过程,更没有细粒度化的处理过程,直接通过监控系统资源来控制相机的视域/视距,并降低渲染效果和贴图的方式,使得用户的体验糟糕,并且由于其主要针对通用3D场景,BIM场景还并不能直接处理。所以该专利属于Web3D大规模场景在线可视化整体流程设计的初级阶段。
专利“轻量化的BIM大数据在线可视化方法和系统(专利申请号201611102784.4)”提供了一套有效的BIM场景在线可视化方案,其在建筑场景轻量化去重以及构筑物分块的处理具有重要价值,但是其在网络渐进式传输调度(尤其初始加载渲染对用户体验来说非常重要)与网页端解析/渲染/缓存等方面并未加以深入考虑,尚未实现大规模城市级BIM场景的网页在线可视化。
发明内容
本发明的目的是提供一种大规模建筑场景的细粒度化Web3D在线可视化方法,给出了从服务器端的轻量级细粒度化预处理、兴趣度驱动的网络化传输到网页端的多线程解析/渲染/缓存调度机制的更加全面而系统细粒度化处理流程,能够在带宽有限,性能较低的移动端设备上快速加载并在线渲染GB级以上的大规模建筑场景。
为实现上述目的,本发明提供了如下方案:
一种大规模建筑场景的细粒度化Web3D在线可视化方法,该方法包括以下步骤:
S1,BIM模型轻量化预处理:分别通过模型级细粒度化和文件级细粒度化两种方式对BIM模型建筑构件进行轻量化预处理;
S2,网络端预渲染和传输调度处理:首先选取BIM模型建筑场景的最优初始视点位置,然后通过预渲染策略和深度图技术实时计算出用户的真实可见构件增量集合,并按照构件兴趣度高低进行排序,最后依次打包可见构件数据并传输;
S3,Web端多线程异步加载渲染流程:首先通过多线程对场景中的可视构件数据进行增量式下载,使用Web Assembly技术对文件包在线高效解析,然后使用构件的重用信息进行实例化渲染,使用基于兴趣度的缓存调度机制进行构件加载和剔除的管理。
优选的,所述步骤S1,BIM模型轻量化预处理:分别通过模型级细粒度化和文件级细粒度化两种方式对BIM模型建筑构件进行轻量化预处理,具体包括:
S101,模型级细粒度化:
基于语义分析对建筑构件进行查重,利用几何相似度对建筑构件进行度量验证,实现数据去冗;
对构筑物进行内外体分离、子空间分块,当视点处于特定空间中时,加载该区域的可视构件;
S102,文件级细粒度化:
将自定义模型格式转为主流gltf模型格式;
优化gltf存储,对gltf格式中部分冗余信息进行剔除,生成最小化gltf文件;
使用Draco进行模型数据压缩;
使用二进制进行存储表示,最终转化为二进制glb文件格式。
优选的,所述步骤S2,网络端预渲染和传输调度处理:首先选取BIM模型建筑场景的最优初始视点位置,然后通过预渲染策略和深度图技术实时计算出用户的真实可见构件增量集合,并按照构件兴趣度高低进行排序,最后依次打包可见构件数据并传输,具体包括:
S201,服务器预加载BIM模型建筑场景,准备相关数据,并生成构件颜色匹配对照表;
S202,计算选取场景最优初始加载视点;
S203,用户打开浏览器,服务器与Web端浏览器建立连接;
S204,依据最优视点进行Web初始加载渲染;
S205,间歇性获取Web端用户视点信息,包括相机位置、相机朝向、Web网页窗口大小;
S206,根据视点信息渲染当前场景,依据构件颜色匹配对照表计算出当前视点下的可视构件增量列表,计算构件的兴趣度,并生成相应构件的兴趣度列表;
S207,依据构件的兴趣度高低对其进行优先级排序;
S208,依据用户带宽大小进行自适应打包;
S209,将得到的文件包序列依次进行传输。
优选的,所述步骤S202,计算选取场景最优初始加载视点,具体包括:
将场景包围球网格化;
在上半球选取设定范围的环状区域设为候选区域,在候选区域上离散采样,选取若干候选点作为初始视点候选集;其中设定范围为视点球心连线与水平面夹角为30°~60°;
遍历初始视点候选集中的所有候选视点,分别获取其可视构件模型列表;
分别计算所有候选视点的优先级,选取优先级最高的候选视点作为后续搜索初始视点,记作V0;
以V0为中心向其包围球四周邻居视点搜索,分别计算其邻居视点的优先级,若存在优先级比V0大的视点,以该视点为中心继续向四周邻居视点搜索,直到无法找到优先级更高的邻居视点,搜索完成,该视点即为选取的最优初始加载视点。
优选的,所述步骤S206中,计算构件的兴趣度,具体包括:
计算构件的兴趣度IR,对填充度FR、重用度RR以及关注度FR进行加权处理,计算公式为:
IR(model
其中,α
填充度FR为模型所占的包围盒体积与其文件大小的比值,计算公式为:
重用度RR为模型的实例构件数量与其文件大小的比值,计算公式为:
关注度FR为反应用户对该模型的关注程度,主要由该模型的类型、用户视点的凝视、交互次数的统计值与其文件大小的比值,公式为:
优选的,所述步骤S3,Web端多线程异步加载渲染流程:首先通过多线程对场景中的可视构件数据进行增量式下载,使用Web Assembly技术对文件包在线高效解析,然后使用构件的重用信息进行实例化渲染,使用基于兴趣度的缓存调度机制进行构件加载和剔除的管理,具体包括:
S301,使用多线程技术按照兴趣度优先级顺序加载可视构件数据的文件包;
S302,使用Web Assembly技术对加载的文件包进行高效在线解析,生成构件图形渲染数据;
S303,利用构件的实例化信息,使用实例化渲染技术渲染场景中所有重用的构件模型,并使用云烘培生成的全局光照贴图进行光照渲染;
S304,对场景中加载完成的构件进行Web3D动态缓存管理,实时监测当前系统的内存占用情况,及时从内存中删除兴趣度低的构件,保证内存占用最优。
优选的,所述步骤S304,对场景中加载完成的构件进行Web3D动态缓存管理,实时监测当前系统的内存占用情况,及时从内存中删除兴趣度低的构件,保证内存占用最优,具体包括:
在用户视点更新时,依次加载服务器打包的增量可视构件文件包,解析并渲染该部分构件模型;
将当前内存中存在的构件列表与当前可视构件列表取差值,得到内存中的非可视构件列表;
依据兴趣度对非可视构件列表进行从小到大排序;
实时监测浏览器内存占用情况,当内存占用过高时,依次剔除非可视构件列表中的兴趣度较低的构件,直到内存占用较低。
根据本发明提供的具体实施例,本发明公开了以下技术效果:本发明提供的大规模建筑场景的细粒度化Web3D在线可视化方法,综合了BIM模型轻量化预处理、网络端预渲染和传输调度处理以及Web端多线程异步加载渲染流程;
第一,BIM模型轻量化预处理流程包括模型查重去冗、构筑物内外体分离与子空间分块、数据压缩部分,通过模型级细粒度化和文件级细粒度化两种方式,对BIM模型进行轻量化预处理,去除了BIM模型中的冗余数据,实现了场景的轻量化;
第二,网络端预渲染和传输调度处理流程主要包括加载预处理、选择最优初始加载视点、可视增量列表计算、兴趣度计算、文件打包等部分,通过选取最优初始加载视点、预渲染机制和动态渐进式传输,有效提升了BIM场景的传输效率,降低了用户等待时间;
第三,Web端多线程异步加载渲染流程使用了多线程异步渲染机制,包括多线程依次加载文件包、Web Assembly高效解析技术、实例化渲染技术、全局光照贴图技术、基于兴趣度的Web3D缓存管理等技术,提升了加载渲染效率和效果,通过Web端多线程异步加载渲染机制,使得功能有限的移动端浏览器也能够加载渲染大规模BIM场景。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的大规模建筑场景的细粒度化Web3D在线可视化方法流程图;
图2为本发明的BIM模型轻量化预处理流程示意图;
图3为本发明的网络端预渲染和传输调度处理流程图;
图4为本发明的最优初始加载视点选取示意图;
图5为基于兴趣度的Web3D缓存管理的流程图;
图6为万达广场BIM渲染效果图;
图7为首钢产业园BIM渲染效果图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的是提供一种大规模建筑场景的细粒度化Web3D在线可视化方法,给出了从服务器端的轻量级细粒度化预处理、兴趣度驱动的网络化传输到网页端的多线程解析/渲染/缓存调度机制的更加全面而系统细粒度化处理流程,能够在带宽有限,性能较低的移动端设备上快速加载并在线渲染GB级以上的大规模建筑场景。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
如图1-3所示,本发明提供的大规模建筑场景的细粒度化Web3D在线可视化方法,该方法包括以下步骤:
S1,BIM模型轻量化预处理:分别通过模型级细粒度化和文件级细粒度化两种方式对BIM模型建筑构件进行轻量化预处理;
S2,网络端预渲染和传输调度处理:首先选取BIM模型建筑场景的最优初始视点位置,然后通过预渲染策略和深度图技术实时计算出用户的真实可见构件增量集合,并按照构件兴趣度高低进行排序,最后依次打包可见构件数据并传输;
S3,Web端多线程异步加载渲染流程:首先通过多线程对场景中的可视构件数据进行增量式下载,使用Web Assembly技术对文件包在线高效解析,然后使用构件的重用信息进行实例化渲染,使用基于兴趣度的缓存调度机制进行构件加载和剔除的管理。
其中,大规模建筑场景模型往往数据量过大,对于有限带宽的传输,往往需要消耗大量时间,无法满足用户即时浏览的需求。为了降低BIM模型的数据量,这里引入了场景轻量化预处理步骤。
如图2所示,所述步骤S1,BIM模型轻量化预处理:分别通过模型级细粒度化和文件级细粒度化两种方式对BIM模型建筑构件进行轻量化预处理,具体包括:
S101,模型级细粒度化:
基于语义分析对建筑构件进行查重,利用几何相似度对建筑构件进行度量验证,实现数据去冗;BIM构件去冗就是通过构件的重复性检测算法将场景中的重复构件找出并去除,BIM构件一般包含几何和语义两部分信息,几何信息描述构件的几何形体,语义信息描述实体的属性、文本内容以及相互引用关系,为了减少直接使用几何形状匹配的计算复杂度,这里先使用语义信息分析出可能重复的构件,再对这些构件利用几何相似度进行度量验证,以实现快速的构件去重;
对构筑物进行内外体分离、子空间分块,当视点处于特定空间中时,加载该区域的可视构件;由于整个BIM场景规模庞大,前端Web浏览器加载和渲染能力有限,不能也并不需要渲染出所有的场景构件,而且完整场景在服务器端的预渲染中也会给服务器带来大量性能消耗,因此可以将构筑物的内外体分离、子空间分块,当视点处于特定空间中时,加载该区域的可视构件;
S102,文件级细粒度化:主要是从文件层面进行模型轻量化处理,包括以下步骤:
将自定义模型格式转为主流gltf模型格式;
优化gltf存储,对gltf格式中部分冗余信息进行剔除,生成最小化gltf文件;
使用Draco进行模型数据压缩;
使用二进制进行存储表示,最终转化为二进制glb文件格式。
其中,对于大规模场景,在漫游或显示中,用户任何时刻都仅仅能观察到场景中的一部分构件,通过依据用户的视点信息实时计算出用户的可视构件集合,从而能够真正加载和渲染真正对用户视觉有影响的构件模型,提升可视化效率。网络端预渲染和传输调度处理流程主要是实时计算出用户的真实可见构件增量列表,并按照构件兴趣度高低进行排序,然后依次打包传输。
如图3所示,所述步骤S2,网络端预渲染和传输调度处理:首先选取BIM模型建筑场景的最优初始视点位置,然后通过预渲染策略和深度图技术实时计算出用户的真实可见构件增量集合,并按照构件兴趣度高低进行排序,最后依次打包可见构件数据并传输,具体包括:
S201,服务器预加载BIM模型建筑场景,准备相关数据,并生成构件颜色匹配对照表;
S202,计算选取场景最优初始加载视点;
S203,用户打开浏览器,服务器与Web端浏览器建立连接;
S204,依据最优视点进行Web初始加载渲染;
S205,间歇性获取Web端用户视点信息,包括相机位置、相机朝向、Web网页窗口大小;
S206,根据视点信息渲染当前场景,依据构件颜色匹配对照表计算出当前视点下的可视构件增量列表,计算构件的兴趣度,并生成相应构件的兴趣度列表;
S207,依据构件的兴趣度高低对其进行优先级排序;
S208,依据用户带宽大小进行自适应打包;
S209,将得到的文件包序列依次进行传输。
由于BIM场景的每次初始加载视点位置总是一致的,并且初始加载效果基本直接决定用户的使用体验,因此需要对场景的初始加载位置进行选取。本文的最优初始视点选取主要选择合适的视点位置和观察角度,使得初始加载的数据量在尽可能少的同时加载尽可能多的模型,用户在该视点下可以观察到尽可能多的场景细节。
如图4所示,所述步骤S202,计算选取场景最优初始加载视点,具体包括:
将场景包围球网格化;
在上半球选取设定范围的环状区域设为候选区域,在候选区域上离散采样,选取若干候选点作为初始视点候选集;其中设定范围为视点球心连线与水平面夹角为30°~60°;
遍历初始视点候选集中的所有候选视点,分别获取其可视构件模型列表;
分别计算所有候选视点的优先级,选取优先级最高的候选视点作为后续搜索初始视点,记作V0;
以V0为中心向其包围球四周邻居视点搜索,分别计算其邻居视点的优先级,若存在优先级比V0大的视点,以该视点为中心继续向四周邻居视点搜索,直到无法找到优先级更高的邻居视点,搜索完成,该视点即为选取的最优初始加载视点。
由于场景中的不同构件模型对于用户的视觉贡献存在着明显的差异,比如体积大、深度图中占用像素多的构件在屏幕中占据较大空间,因此在传输过程中应对这些构件模型赋予较高的优先级,为了更好地量化各个模型在传输过程中的优先次序,本文提出了兴趣度的概念。在介绍兴趣度之前,先引入填充度、重用度以及关注度的概念和计算公式。
所述步骤S206中,计算构件的兴趣度,具体包括:
计算构件的兴趣度IR,对填充度FR、重用度RR以及关注度FR进行加权处理,计算公式为:
IR(model
其中,α
填充度FR为模型所占的包围盒体积与其文件大小的比值,计算公式为:
重用度RR为模型的实例构件数量与其文件大小的比值,计算公式为:
关注度FR为反应用户对该模型的关注程度,主要由该模型的类型、用户视点的凝视、交互次数的统计值与其文件大小的比值,公式为:
所述步骤S208中,可视文件在线打包能够提高传输效益。每次网络请求和传输均会消耗一定的网络资源,由于每个构件文件相对较小,整个场景构件数量庞大,如果每次网络请求和传输仅发送单个构件文件,整个场景的文件传输会带来大量的额外网络资源消耗。为了最大限度地降低用户的等待时间,必须在低带宽网络环境下,以最短的时间传输最多的最合理的模型到Web浏览器得以优先渲染,获得传输效益最大化。
Web端轻量级加载渲染模块用于在Web浏览器端接收服务的调度处理结果并将其进行可视化。由于用户硬件配置参差不齐,Web浏览器性能有限,本文使用了多线程异步渲染机制,包括多线程依次加载文件包、Web Assembly高效解析技术、实例化渲染技术、全局光照贴图技术、基于兴趣度的Web3D缓存管理等技术。
其中,所述步骤S3,Web端多线程异步加载渲染流程:首先通过多线程对场景中的可视构件数据进行增量式下载,使用Web Assembly技术对文件包在线高效解析,然后使用构件的重用信息进行实例化渲染,使用基于兴趣度的缓存调度机制进行构件加载和剔除的管理,具体包括:
S301,使用多线程技术按照兴趣度优先级顺序加载可视构件数据的文件包;
S302,使用Web Assembly技术对加载的文件包进行高效在线解析,生成构件图形渲染数据;
S303,利用构件的实例化信息,使用实例化渲染技术渲染场景中所有重用的构件模型,并使用云烘培生成的全局光照贴图进行光照渲染;
S304,对场景中加载完成的构件进行Web3D动态缓存管理,实时监测当前系统的内存占用情况,及时从内存中删除兴趣度低的构件,保证内存占用最优。
其中,Web Assembly是一种允许Java Script代码调用其他(如C、C++)代码的底层汇编级语言,通过使用Web Assembly技术加快了文件包的解析速度,减少了用户等待时间。实例化渲染技术是一种有效的渲染优化策略,对于大规模场景,模型中往往存在大量的相似构件,在处理这些构件时,使用实例化渲染技术将能够有效提升渲染效率以及运行的流畅度。在系统上述轻量化处理阶段,已经得到了场景所有构件的重用信息,为实例化渲染的进行提供了支撑。
基于兴趣度的Web3D缓存管理,主要是解决由于Web浏览器内存较小,无法存储大规模BIM场景数据的问题,核心是实时监测浏览器的内存占用大小,当内存占用过高时,选择合适的构件数据进行剔除。
如图5所示,所述步骤S304,对场景中加载完成的构件进行Web3D动态缓存管理,实时监测当前系统的内存占用情况,及时从内存中删除兴趣度低的构件,保证内存占用最优,具体包括:
在用户视点更新时,依次加载服务器打包的增量可视构件文件包,解析并渲染该部分构件模型;
将当前内存中存在的构件列表与当前可视构件列表取差值,得到内存中的非可视构件列表;
依据兴趣度对非可视构件列表进行从小到大排序;
实时监测浏览器内存占用情况,当内存占用过高时,依次剔除非可视构件列表中的兴趣度较低的构件,直到内存占用较低。
图6为某一万达广场BIM渲染效果图;图7为首钢产业园BIM渲染效果图。表1给出了本发明提出的方法与传统一次性加载方法的效果对比:可见,对于大规模BIM场景,相对于传统方法,使用本发明所述方法可视化时间大幅度减少,加载渲染效率得到提高,具有明显优势。
表1
本发明提供的大规模建筑场景的细粒度化Web3D在线可视化方法中,第一,BIM模型轻量化预处理流程包括模型查重去冗、构筑物内外体分离与子空间分块、数据压缩部分,通过模型级细粒度化和文件级细粒度化两种方式,对BIM模型进行轻量化预处理,去除了BIM模型中的冗余数据,实现了场景的轻量化;第二,网络端预渲染和传输调度处理流程主要包括加载预处理、选择最优初始加载视点、可视增量列表计算、兴趣度计算、文件打包等部分,通过选取最优初始加载视点、预渲染机制和动态渐进式传输,有效提升了BIM场景的传输效率,降低了用户等待时间;第三,Web端多线程异步加载渲染流程使用了多线程异步渲染机制,包括多线程依次加载文件包、Web Assembly高效解析技术、实例化渲染技术、全局光照贴图技术、基于兴趣度的Web3D缓存管理等技术,提升了加载渲染效率和效果,通过Web端多线程异步加载渲染机制,使得功能有限的移动端浏览器也能够加载渲染大规模BIM场景。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本申请中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
- 大规模建筑场景的细粒度化Web3D在线可视化方法
- 大规模建筑场景的细粒度化Web3D在线可视化方法