三维管廊大规模实时渲染方案

2023-10-27

        随着 WebBIM 和3D-GIS技术的大力发展,建筑模型的复杂度与构件数量呈几何倍数增长,其中管廊复杂网格是影响模型轻量化和在线渲染速率的一个关键性问题。为有效减少管廊复杂网格模型的数据量及复杂度,本文针对一般圆柱体形管廊,复杂网格的弯管管廊模型及中空管廊网格模型,提出了一套轻量级参数化算法。该算法对场景中的管廊模型进行参数化重绘并辅助以多细节层次等视觉优化手段,以减轻 WebBIM 场景中的管廊模型渲染负担,其在拥有大量管廊模型的场景中应用成功,具有较强的工程实践意义。 

        近年来,网络技术的发展突飞猛进,人类正向高度信息化的社会迈进。BIM在国内建筑业形成一股热潮,尽管拥有了社会的大力支持,Web 端的 BIM 大规模场景应用开发仍然面临许多巨大的挑战:

一、网页存储瓶颈问题:随着 BIM场景规模的增加,建筑内部空间结构复杂度不断提升,管廊结构的模型体量不断增加,BIM 数据未来可能达到城市级别(100  TB 以上),通常来说,PC 端的浏览器能够使用的内存仅为 1.5 至 2 GB,稍大的 BIM模型就可能会导致浏览器的崩溃。

二、计算渲染瓶颈问题:传统加载方式中,IFC构件被逐一添加在场景中,管廊模型拥有的三角化面片数量多,导致整个初始加载速度慢,且场景中FPS 较低,浏览建筑模型容易出现明显卡顿情况。

        在以上问题的基础上,尤其是管廊管线这类构件往往在城市建筑模型中占有了一定的比重,例如水管,通风管道等,且建筑物内部管廊模型排列往往具有一定的复杂性,优化这部分管廊模型的参数,能够有效减少场景中的三角面片数量,帮助提升模型加载速率,对改善上述的两个瓶颈问题起到了积极的作用。 

         因此针对上述问题,本文提出了一套三维管廊复杂网格参数化算法,首先通过语义分析和几何分析,提取大规模 IFC 场景中的管廊网格模型构件类。然后针对一般圆柱体形管廊网格模型,弯管管廊模型以及中空管廊模型三种不同的特征,对其在服务端分类进行参数化处理,并将参数结果返回给网页端进行渲染。为了降低网页端的渲染负载,实例化管廊模型的同时辅助以基于 LOD 多细节层次技术的渐进式自适应渲染方法,有效降低场景中管廊模型部分的总数据量及其三角面片数量,加快场景初始加载时间以及提升场景总体加载的帧速率,为轻量化BIM 大规模管廊模型场景的在线可视化提供了支持。 

1   相关研究

1.1  管廊的参数化原理 

        原始的 BIM 建筑模型经过 IFC 参数化解析之后,分成了多种不同的类,每一类中都有成百上千个小的网格模型信息。这些顶点信息与三角网格在网页端经过渲染,组成了浏览器端的建筑模型。这种通过模型解析生成的管廊网格模型通常是呈现不规则,且较为繁杂的情况。如果能将这些不规则的三角网格信息抽取出来,经过参数化处理转换为大家熟知的管廊管线特征信息,那么就可以通过管廊网格的顶点信息,半径信息,主方向特征参数化重绘出一个圆柱体形 三 维管廊网格模型,并且呈现规范的三角网格渲染方式。

        通常的直线管廊网格模型的构造图如图 1 所示,具体渲染方法为:将直线三维管廊网格模型抽象为正圆柱体,管线中心抽象为正圆柱体的中轴线,管线中心线起止点为正圆柱体上下底面圆圆心,圆柱体半径为管径。

        提取到了以上的管廊模型参数信息后,在浏览器 端 渲 染 时 可 以 利 用 Three.js 提 供 的THREE.Cylinder  Geometry 对象对管廊进行批量建模。利用 THREE.Cylinder Geometry  对象进行圆柱体建模时可接收多个参数,  而在实际建模过程中主要用到三个参数,  分别是:顶面半径、底面半径以及圆柱体的高度,  分别对应三位管线的半径以及管线长度。生成管线模型的几何对象之后,还需利用 THREE.Material 为其贴上合适的纹理,通过THREE.Mesh(geometry,material)生成完整的管线段
模型。 

1.2  管廊多细节层次技术(LOD) 

        LOD 技术即 Levels of Detail的简称,意为多细节层次。LOD 技术指根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。一个典型的蓄冰机房 BIM模型内部的管线模型示意图如图 2  所示,2(a)为蓄冰机房 BIM 模型结构,2(b)为局部细节放大示意图,针对图 2(b)中的 三 维管廊模型,调整其精细化程度对用户视角的影响较小,但对提升场景加载流畅度具有较大意义。 

        LOD 的主要想法是降低复杂性,当视点远离3D模型对象时,根据人的视觉系统,远处对象会变小或者变得模糊不清,这时我们可以使用该对象的简化版本。对象简化版本的实现多种多样,通常是通过较少三角形的数据或者替代几何模型的几何特征和纹理来实现。不管简化版本的实现方法如何,其策略的最终结果是将一个相比原模型压力较小的对象交给 GPU 去处理,降低渲染复杂度,提高场景加载的速率针对管廊网格模型,多细节层次技术主要调整的是参数化后的管廊网格切割块数,当摄像机视角靠近的时候,切割块数增多,三维管廊模型越精细,而当摄像机视角原理时,可以减少模型的切割块数,管廊模型呈现较粗糙。 

1.3  大规模 BIM模型在线实时渲染 

        “互联网+”时代的到来为 BIM 信息的传递和共享提供了更为广阔的舞台,“互联网+BIM”的融合、发展也是势不可挡。网页浏览器是移动互联网上最为广泛通用的信息共享平台,直接在网页浏览器上将 BIM 场景可视化地再现出来就变得更有吸引力。用户们只需要点击浏览网页就可以访问大规模 BIM 场景与之交互。尤其是正在流行的HTML5/WebGL 提供了一种无插件安装的 Web3D开发平台,这便捷了互联网 BIM 的可视化共享浏览,所以 WebBIM 在线可视化将成为“互联网+BIM 可视化”的主流发展趋势。

        但是由于大规模的 BIM 场景存在实时响应速度慢、渲染能力弱、数据传输缓慢等问题,WebBIM 在线可视化将会受到因网页浏览器缓存受限而导致的存取不畅、尤其是管廊模型较多的大规模 BIM 建筑,数据量较大可能导致浏览器的瘫痪。因互联网带宽受限而导致的传输缓滞、因网页浏览器渲染能力受限而导致的漫游延迟的影响,这些影响将会严重阻碍 WebBIM 大规模场景的在线实时可视化共享。因此,本文所研究的管廊复杂网格模型的参数化方法及其在线可视化技术能够针对网页的在线渲染问题做出改善,具有重要的实践意义。 

        综上所述,本文的创新点主要体现在针对大规模 WebBIM 模型的加载和渲染瓶颈提出了一种基于管廊网格模型的参数化算法,能够根据管廊网格模型不同的分类进行参数化处理,在浏览器端采用一种基于 LOD 的渐进式加载方式,缓解了浏览器端的数据压力,提升了模型的渲染效率,为拥有大规模网格的 WebBIM 建筑模型的模型解析与在线渲染提供了新的优化方向。

2   技术路线

        本文所采用的技术路线如图 3 所示。在服务器端,需要完成工作包括从语义分析以及几何分析角度进行管廊模型构件的提取,以及基于圆柱体形管廊网格构件的参数化算法研究,进一步拓展弯管三维管廊模型的参数化算法以及基于布尔运算的中空复
杂管廊模型的参数化算法。 

        在 Web 端完成的工作,包括使用基于 LOD 的轻量化 WebBIM 渐进式加载技术,提升轻量化在线渲染的加载速率,以及提供在线可视化应用支持。

3   关键技术 

3.1  管廊模型构件的提取 

        FC 是一套专门为建筑行业订制的开放数据标准格式[13],为了解析 IFC 格式的 BIM 模型,本文使用的了轻量级 BIM 大数据在线可视化系统[14],在上传 IFC 格式的建筑模型后,该模型逐层解析,从一个项目(IfcProject)实例出发,将建筑模型拆解为包含所有的墙(IfcWall)、门(IfcDoor)和梁(IfcBeam)等多个类型的建筑构件。根据模型分类的语义信息可以将内部构件进行一个初步的分类,在场景中我们可以看到多种不同的构建类呈现,如图4 所示,IFCCovering 类表示对三维管廊模型的外罩,存在较多圆柱体形管廊网格模型,因此本文从语义角度选择其中的 IFCCovering 类构件作为可能的目标管廊模型处理对象,对其进行进一步的几何分析。

        整个 三 维管廊模型对象的抽取过程如图 4 中所示,从构件语义分析提取构件是从以上多种不同的IFC 构件类型中,提取可能是管廊管片管线等圆柱体型模型的构件的过程。而从语义分析角度,往往可能存在误差,比如把非圆柱体形的拉伸体模型误认为是管廊模型。
在此基础上,从几何角度分析则是从 三 维管廊模型的形态上对构件进行分析,判断构件是否具有圆柱体形构件包围盒的特征,且根据模型上的顶点信息能够计算出上下底面与中心轴等参数,进而归纳其类型,最终提取出了一类可以进行管廊网格参数化处理的目标模型。

3.2  三维管廊网格模型参数化

3.2.1  圆柱体形管廊网格模型参数化 

        经过上一个步骤解析的 BIM 建筑模型产生的原始圆柱体形三维管廊模型构件为 dat 格式,包含三部分信息,第一部分是每一个顶点的三维坐标,从序号 0 开始,第二部分是模型的三角化信息,每三个顶点组成一个三角形,在场景中进行实例化渲染,所有的三角形在场景中重绘出一个圆柱体形三维管廊模型,第三部分是与第二部分中每个三角化网格信息对应的法向量方向。

        由此可知,对于一个原始的复杂管廊网格模型,其往往有上百个,甚至上千顶点,同时三角网格数量较多。针对大型建筑模型,一旦管廊模型的数据量较大,对模型的初始渲染和加载效率一定会存在较大的影响,因此,本文针对圆柱体形管廊网格模型,提出了参数重绘的方式,使用 ThreeJS 的圆柱体进行实例化,能够有效简化模型数据量,且提升场景渲染速率。

        本文所使用的一般圆柱体形管廊模型参数化是从原始管廊网格模型的顶点以及三角面片信息中有效提取出其上下底面圆的圆心以及半径,并且求出其中轴线的长度以及方向,并能够在场景中重绘出该构件的过程。拟合后的标准化圆柱体与源
数据对比如图 5(a)源数据-非标准化三角化侧面和5(b)拟合后-标准化三角化侧面所示。由于使用了圆柱体模型的参数化方式,重绘圆柱体需要的数据量因此降低。 

        由于原始管廊网格模型存在三角化方式无规律,如图 5(c)源数据-非标准化三角化底面和 5(d)拟合后-标准化三角化底面所示,三维GIS参数化的过程也是一个将管廊网格模型标准化的过程,为后续圆柱体形管廊构件的在线应用提供基础。上下底面的分
割块数决定着圆柱体模型在场景中的精细程度。 

3.2.2  弯管管廊网格模型参数化

        除了一般的圆柱体形管廊模型外,建筑模型中还存在较大一部分的弯管管廊模型,如图 6 所示。这部分模型通常是排水管道和通风管道的接口处,在管廊网格模型中占有一定的比重,在参数化过程中要与一般直线的圆柱体形管廊模型做出区分。本
文使用二次贝赛尔曲线拟合弯管管廊构件,实验对象为如图 6 所示的一段弯管圆形管线模型。

        首先根据圆柱体模型参数求出两个端面的圆心,两个圆心作为贝塞尔曲线的控制点 P0 和 P2,设其控制点为 P1,该拟合模型的中轴线应满足以下二次贝塞尔曲线公式: 

B( t ) = (1-t) P+ 2 t(1 −t) P +t P, t [ 0 , 1]  

        通过改变控制点的参数,如果弯管三维管廊模型上的点到该拟合中轴线的距离最短,则可认为是最佳拟合曲线,在进行参数化绘制的时候,由于管廊模型的对称性,弯管模型上的订单到中轴线的距离即为半径,以一个端面为圆心,该半径画圆,然后沿
着拟合的贝塞尔曲线进行拉伸,即可得到该弯管模型的参数化拉伸体拟合模型。且由于拉伸体的特性,该拟合模型的分割块数也能够进行动态地调整,有效降低模型的三角网格数量。 

3.2.3  中空复杂管廊网格模型参数化 

        标准的圆柱体型管廊参数化方法研究的基础上,针对基于布尔运算的复杂管廊构件的参数化算法研究在工程建筑领域十分具有价值,如图 7(a)中空管廊模型所示,复杂管廊构件都是基于圆柱体型管廊构件的延伸与扩展,其端面和侧面的模型示
意图如图 7(b)和 7(c)所示,具有其独特性,需要根据模型特征具有针对性地进行探索。 

        针对如图 8(a)所示的内部中空管廊拉伸体模型,采用上述的解决方案,首先进行整个模型的参数读取,然后通过模型的几何特征分离其模型外部与内部参数,其边缘提取的效果如图 8(b)所示,在得到了边缘提取的结果之后,将模型区分为 1 个大实心圆柱体管廊模型以及 7 个空心圆柱体三维管廊模型,对大的实心圆柱体形管廊模型进行布尔运算,参数化后的重绘的中空管廊模型如图 8(c)所示。 

3.3  渐进式 LOD 在线实时渲染 

        采用基于 LOD 自适应渐进式加载技术,按照不同的管廊网格分类进行不同的层级调整。得到前两个步骤的管廊模型参数化的结果后,本文采用基于摄像机距离的 LOD 渐进式加载方式,从 LOD0 摄像机与模型距离较远,到 LOD1和 LOD2,摄像机与模型距离较近的阶段,动态调整管廊网格模型的分割块数,即距离摄像机近的模型分割块数越多,模型越精细,摄像机距离远的模型分割块数少,模型简化。针对标准圆柱体形管廊构件,根据摄像机距离的远近,动态调整其分割块数。 

        针对一般圆柱体形管廊网格模型,自适应调整的是其端面的分割块数,从 LOD0的 3 块,到 LOD1 的 8 块,再到 LOD2 的 16 块。针对弯管管廊模型,自适应调整的是中轴线的分割块数,从 LOD0 的 5 块,到 LOD1 的 10 块,再到LOD2 的 20 块,可以看到模型的网格越来越密集。而针对中空管廊网格模型,在 LOD0 以及 LOD1的阶段,即距离摄像机较远时,渲染中空管廊模型时只按照圆柱体形管廊进行渲染,不进行布尔运算,远处看到的是一般圆柱体形管廊网格模型,只在摄像机靠近模型达到 LOD2 距离范围内时,渲染中空的管廊网格模型,该步骤可以优化渲染效率,提高场景 FPS,降低浏览器的负载。 

        为了减少 WebBIM 模型场景的总数据量以及提升在线渲染效率,本文提出了一套管廊复杂网格模型参数化方法,对拥有大量管廊网格的 BIM 模型首先通过 IFC 解析,经过语义分析和几何分析的手段,提取出能够进行管廊模型参数化的类。然后针对一般圆柱体形管廊模型,弯管管廊模型以及复杂中空管廊模型均提出了参数化方案并验证其有效性。最后在网页端使用了基于 LOD 的轻量化渐进式渲染模式,辅助以基于管廊参数化结果的切割模型应用。 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

三维管廊大规模实时渲染方案 的相关文章

随机推荐

  • matlab做三次拉格朗日插值多项式_拉格朗日插值法函数使用问题

    拉格朗日差值法 在数值分析中 拉格朗日插值法是以法国十八世纪数学家约瑟夫 拉格朗日命名的一种多项式插值方法 概念一般地 若已知 在互不相同 n 1 个点 处的函数值 即该函数过 这n 1个点 则可以考虑构造一个过这n 1 个点的 次数不超过
  • MLX90614红外温度计介绍

    MLX90614红外温度计简介 MLX90614是一款红外非接触温度计 TO 39金属封装里同时集成了红外感应热电堆探测器芯片和信号处理专用集成芯片 由于集成了低噪声放大器 17位模数转换器和强大的数字信号处理单元 使得高精度和高分辨度的温
  • 使用Stream流对集合排序

    文章目录 0 写在前面 1 格式 1 1 介绍 1 2 单个属性排序格式 1 3 多个属性排序格式 1 4 注意事项 2 代码举例 0 写在前面 有一些业务需要对集合按照一些规则进行排序 本篇介绍如何用Stream 对集合进行升序或者降序操
  • 学python可以做什么副业-写代码做副业月入10K的方法都藏在这几个公众号里!

    同为程序员 为什么总有人比你优秀 优秀的人是抱团的 因此 还不快关注这些优秀的公众号 学习技术 汲取他们的理念 化为己用 Python 爱好者社区 python shequ 简介 Python 爱好者社区 这里有分类整理好的历史优秀文章数千
  • Altium Designer多图纸原理图关联设计方法

    文章转载 http articles e works net cn eda article86269 htm 图纸结构 包括层次式图纸的连接关系是纵向的 也就是某一层次的图纸只能和相邻的上级或下级有关系 另一种即扁平式图纸的连接关系是横向的
  • 尚硅谷_vue核心基础部分

    01 初始vue 1 想让vue工作 就必须创建一个Vue实例 且要传入一个配置对象 2 root容器里的代码依然符合html规范 只不过混入了一些特殊的Vue语法 3 root容器里的代码被称为 Vue模板 4 Vue实例和容器是一一对应
  • crmeb 标准版Window+phpstudy8安装教程(一)

    标准版Window phpstudy8安装教程 一 安装前配置 nginx mysql php7 3 4 一 安装集成环境 这里以phpstudy为例 下载PHPstudy8 0安装 记录安装的位置 D phpstudy pro 二 准备源
  • 阿里云修复 polkit pkexec 本地提权漏洞(CVE-2021-4034)

    该漏洞EXP已公开传播 漏洞利用成本极低 建议您立即关注并修复 如何修复呢 解决建议 1 无法升级软件修复包的 可使用以下命令删除pkexec的SUID bit权限来规避漏洞风险 chmod 0755 usr bin pkexec 示例 l
  • maven野生仓库

    mvnrepository com
  • 洛谷借教室

    之前写过 再过一遍其实不会 题目描述 在大学期间 经常需要租借教室 大到院系举办活动 小到学习小组自习讨论 都需要向学校申请借教室 教室的大小功能不同 借教室人的身份不同 借教室的手续也不一样 面对海量租借教室的信息 我们自然希望编程解决这
  • linux服务器桌面卡死,linux服务器显卡崩溃解决方案

    在登录界面出现分辨率特别大 整个图形界面特别大 并且怎么也登录不上去的情况时 对于这种情况 一般就是显卡驱动崩了的原因 所以我们可以首先检查显卡驱动是否有问题 nvidia smi 如果出现说驱动链接不上什么的问题 就是说明你的显卡驱动出现
  • 九、Linux系统编程:线程池编程

    9 线程池编程 创建线程要花费昂贵的资源和时间 如果任务来了才创建线程那么响应时间会变长 而且一个进程能创建的线程数有限 为了避免这些问题 在程序启动的时候就创建若干线程来响应处理 它们被称为线程池 里面的线程叫工作线程 9 1 概念 线程
  • sql-lab (32~35)包含对 宽字节注入的原理理解及注意事项(后持续更新)

    32 35 包含对 宽字节注入的原理理解及注意事项 sql lab 32 我们先对32关进行一个传参 发现 1 and 1 2 在这里 代表的意思是 转义 把后面的 转义成了字符串 使单引号不再具有 作用 仅仅是 内容 而已 或者说这个单引
  • Intellijidea建javaWeb以及Servlet简单实现

    一 创建并设置javaweb工程 1 创建javaweb工程 File gt New gt Project 点击Project后出现如下界面 选择Java Enterprise 选中下图圈中部分 点击Next后弹出下图弹出框 设置工程名字
  • 深度学习环境搭建(三)之 CUDA安装

    安装完CUDA Driver后 就可以安装CUDA了 因为项目需要 这里安装的CUDA 11 4版本 下载CUDA 访问CUDA Toolkit官网 找到要下载的版本 如果驱动已经安装 不要选驱动 配置CUDA环境 打开用户配置文件 sud
  • Java中重载(overload)与重写(override)

    重载 overload 在一个类中 同名的方法如果有不同的参数列表 参数类型不同 参数个数不同 参数顺序不同 则视为重载 同时重载对返回类型没有要求 可以相同也可以不同 重载是一个类中多态性的一种表现 Java中的重载就是在类中可以创建多个
  • 测试理论/测试基础知识-详细版

    测试理论 目录 1 外部质量模型 2 瀑布型软件生命周期 3 测试的含义 4 测试方法 5 测试四个活动 6 测试阶段 7 系统测试类型 8 测试活动 9 测试用例的组成 10 缺陷管理 11 需求管理 12 需求评审 13 需求跟踪 14
  • 10和25的最大公约数python_用Python求两个数最大公约数的方法

    用Python求两个数最大公约数的方法 发布时间 2020 04 29 11 45 47 来源 亿速云 阅读 156 作者 小新 这篇文章主要介绍了用Python求两个数最大公约数的方法 具有一定借鉴价值 需要的朋友可以参考下 下面就和我一
  • 海德汉编程详细手册_海德汉系统加工模式选择显示界面开发

    海德汉数控系统加工模式选择循环Cycle332提供四种不同加工模式组 这四种加工模式组分别是 标准加工模式 standard 精加工模式 exact 光滑表面加工模式 smooth 粗加工模式 rough OEM厂家可根据机床性能以及最终用
  • 三维管廊大规模实时渲染方案

    随着 WebBIM 和3D GIS技术的大力发展 建筑模型的复杂度与构件数量呈几何倍数增长 其中管廊复杂网格是影响模型轻量化和在线渲染速率的一个关键性问题 为有效减少管廊复杂网格模型的数据量及复杂度 本文针对一般圆柱体形管廊 复杂网格的弯管