bim webgl 模型 轻量化_WebGL轻量化BIM引擎如何加载大体量BIM模型
当前,国内的BIM应用如火如荼!在前几年住建部、交通部、铁总及各个省市住建厅推出各类鼓励BIM应用的政策后,湖南省强制推进的BIM审图更是为BIM应用添加了一把火!
不论BIM当前在国内推进的过程中是否存在很多误区或不足,但不可否认,在不断推进智慧建筑、智慧建造、智慧城市的当下,BIM无疑是一个正确的选项之一。在项目中应用BIM技术,在今天已经不能算是标新立异或算是创新了,而是成为了一种标配。
随着BIM建模技术的不断发展和成本的逐步降低,BIM模型的精细度越来越高,体量越来越大,1G、几个G、几十个G的模型越来越多,甚至一些客户有些单个项目的BIM模型已经超过了100G。
面对这些越来越大的BIM模型,当前市场上主流技术路线的WebGL轻量化BIM引擎能否处理,如何处理,已经成为当下BIM应用能否持续发展的关键点。
在得出结论之前,我们首先来分析一下常规WebGL轻量化BIM引擎的技术原理。WebGL轻量化BIM引擎技术原理分析
WebGL轻量化BIM引擎要在确保BIM模型的数据不损失的情况下,实现BIM模型的轻量化,让BIM模型能够在Web浏览器或App上更快的加载和使用。
WebGL轻量化BIM引擎对BIM模型的轻量化处理实现,一般可以分为以下几步,如下图所示:BIM轻量化引擎技术原理数模分离
BIM模型包含三维几何数据和模型结构属性等非几何数据两部分。首先,WebGL轻量化BIM引擎需要将几何数据和非几何数据进行拆分。通过这样的处理,原始BIM模型文件中约20%-50%的非几何数据会被剥离出去,输出为数据文件供BIM应用开发使用。
2. 三维几何数据轻量化处理
剥离非几何数据后剩下的三维几何数据,我们还需要进一步轻量化处理优化,以降低三维几何数据数据量,节约客户端电脑的渲染计算量,从而提高BIM模型下载、渲染和功能处理的速度。
三维几何数据优化这块,一般采取的方案包括:
(1)参数化或三角化几何描述
通过采用参数化或三角化的描述手段来降低三维几何数据的数据文件大小,让模型数据变得更小。
(2)相似性算法减少构件存储量;
在一个工程BIM模型中很多构件长得一模一样,只是所处位置或角度不同,这时就可以采用相似性算法进行数据合并,即:只保留一个构件的数据,其他相似构件只记录一个引用 + 空间坐标即可。通过这种方式可以有效减少构件存储量,达到轻量化的目的。
(3)构建符合场景远近原则的多级构件组织体系;
大的BIM模型构件数量会非常多,在WEB浏览器中全部下载和加载这些构件是不现实的。同时,观察BIM模型的视野范围或场景又是相对有限的。所以利用这个特点,就可以创建一个符合场景远近原则的多级构件体系,使得用户在观察BIM模型时,在远处可以看到全景,但不用看到细节,在近处可以看到细节,但无需看到BIM模型的全部。这样可以大大提高BIM模型在WEB浏览器加载速度和用户体验,解决大体量BIM模型的轻量化问题。
3. WEB浏览器或App端实时渲染及管理
WebGL轻量化BIM引擎要实现对三维几何数据的实时渲染(注意:这是实时渲染,跟很炫目的后期专业渲染制作动画的技术要求完全不同),需要进行以下两个步骤的动作。
(1)三维几何数据从服务器端下载到客户端电脑或移动端设备内存。
(2)调用客户端电脑或移动端设备内存和GPU(显卡)高效的实时渲染三维几何数据,还原三维BIM模型。
(3)通过API接口调用形式,实现对三维BIM模型及其构件的操作、管理和对外功能实现。
为了达到流畅、实时的显示,本地电脑的绘制需要达到25-35帧/秒。如果BIM模型的三维几何数据比较大,如果全部渲染则内存的开销会在30-50G以上,这是任何浏览器都无法支撑的,会造成WEB浏览器的崩溃。
网上曾经有一篇文章提到,一款优秀的WebGL轻量化BIM引擎产品必须满足的指标中包含:WEB端BIM模型的加载速度、渲染流畅度和稳定性
在网络环境、客户端硬件配置确定的情况下, 轻量化处理后的BIM模型通过BIM轻量化引擎在Web端的加载速度、渲染流畅度、操作稳定性是引擎最核心的指标。
没有一个用户能够忍受较长的BIM模型加载时间、卡顿的操作和性能的不稳定。
2. 对大体型BIM模型的支持能力
BIM模型精度越来越高、大型公路工程的BIM模型文件往往超过10G以上,如此大体量的模型就要求BIM轻量化引擎有对应的支持能力。
是否支持10G以上的BIM模型是判断一个BIM轻量化引擎是否可用的标准!
WebGL轻量化BIM引擎如何实现加载大体量BIM模型
通过以上章节分析,我们可看出,WebGL轻量化BIM引擎能否支撑大体量BIM模型加载的关键,就在于是否可构建一个符合场景远近原则的多级构件组织体系,以及在WEB端按照此机制进行BIM模型动态的加载和动态渲染!
能否有效的构建BIM模型的多级构件组织体系和渲染机制,是考验BIM轻量化引擎厂商技术能力的关键。
在国内为数不多的BIM轻量化引擎厂商中,BIM引擎老厂商葛兰岱尔(私有化BIM引擎销售客户数接近100家了,其中不乏中国建科院、中国铁科院,华为这样的巨头)的产品基本较好的实现了这个机制。
葛兰岱尔的产品通过自动构建多级金字塔结构的数据存储方案与前端内存管理、渲染方案,大大提升了在WEB端及移动端加载大体量BIM模型数据的高效和流畅用户体验。
葛兰岱尔还自主开发了BIM模型的轮廓模型生成算法和断面填充算法,通过在WEB端综合使用Add/Remove,Replace策略,从根本上解决了大体量的BIM模型三维几何模型渲染问题。
技术原理参考以下图片所示:
葛兰岱尔的产品是基于cesium开发的,在cesium上做了大量的自主开发,涉及到很多的技术难点,同时基于Cesium开发的bim轻量化引擎,本身就具有GIS能力,能够实现gis+bim的融合。例如:葛兰岱尔可以加载展示体量为4G多的某高铁站Revit BIM模型,14公里长的Bentley建的路桥模型,还有加起来十几个G的轨道交通模型。总结
目前,大体量BIM轻量化的瓶颈技术问题已经被解决,在国内BIM市场的充分竞争环境和丰富的应用需求条件下,应当鼓励自主研发,让好的技术不断涌现,推动持续研发投入的公司持续推出新的产品和功能。
bim webgl 模型 轻量化_WebGL轻量化BIM引擎如何加载大体量BIM模型相关推荐
- Three 之 three.js (webgl)基础 第二个入门案例之汽车模型加载和简单模型展示
Three 之 three.js (webgl)基础 第二个入门案例之汽车模型加载和简单模型展示 目录 Three 之 three.js (webgl)基础 第二个入门案例之汽车模型加载和简单模型展 ...
- Cesium bim模型加载并与模型树关联(分层加载)
很久都没写文章了,最近实在是太忙了,向各位关注我的小伙伴致个歉! 最近没事儿写了个模型树和模型关联的功能,处理工具是用的cesiumlab. 说明一下为什么要用cesiumlab: 网上现在有很多的模 ...
- 【深度学习】Keras加载权重更新模型训练的教程(MobileNet)
[深度学习]Keras加载权重更新模型训练的教程(MobileNet) 文章目录 1 重新训练 2 keras常用模块的简单介绍 3 使用预训练模型提取特征(口罩检测) 4 总结 1 重新训练 重新建 ...
- 超图桌面版加载obj 3D模型 - 2
在 https://blog.csdn.net/bcbobo21cn/article/details/109041525 里,加载obj格式模型没有出来效果: 下面来看一下其他方法:当前用的版本是10 ...
- 超图桌面版加载obj 3D模型
根据目前看到的资料帮助,使用超图桌面版加载obj 3D模型的步骤如下: 新建场景,图层管理器---普通图层右键,新建KML----开启KML可编辑,右键添加模型. 下面来操作一下: 下一个obj模型: ...
- opengl加载显示3D模型UC类型文件
opengl加载显示3D模型UC类型文件 前置条件 注意事项 项目展示 项目完整C++源代码 前置条件 opengl三方库freeglut,显示uc格式的三维模型文件, 注意事项 源代码 model_ ...
- opengl加载显示3D模型3d类型文件
opengl加载显示3d模型UC类型文件 前置条件 注意事项 项目展示 项目完整C++源代码 前置条件 opengl三方库freeglut,显示3d格式的三维模型文件, 注意事项 源代码 model_ ...
- opengl加载显示3DS模型3DS类型文件
opengl加载显示3DS模型UC类型文件 前置条件 注意事项 项目展示 项目完整C++源代码 前置条件 opengl三方库freeglut,显示3DS格式的三维模型文件 注意事项 源代码 model ...
- opengl加载显示3D模型3MF类型文件
opengl加载显示3D模型3MF类型文件 前置条件 注意事项 项目展示 项目完整C++源代码 前置条件 opengl三方库freeglut,显示3MF格式的三维模型文件 注意事项 源代码 model ...
最新文章
- Android DDMS应用
- 一块CPU就能运行超逼真水流特效!胡渊鸣的算法被这样实现,本人看了都说好...
- 利用U盘进行软件加密(转)
- 10、MySQL权限控制实现原理
- js 运算符_JS的相等和严格相等运算符(== amp; ===)
- Nodejs第一讲记录
- android power 按键,Android Framework层Power键关机流程(一,Power长按键操作处理)
- 我的 2020 年个人总结
- Java内部类实例测试及总结
- UE4 调试着色器编译过程
- 如何巧妙的运用好弹簧布局SpringLayout?
- 学习中的一些牢骚。字符串栈/堆的址标准写法。
- 服务消费(Ribbon)
- mysql函数之一:INSTR、LOCATE、POSITION VS LIKE
- 首都师范 博弈论 9 5 6引入精神奖励后的博弈模型
- 2022年,消费品牌如何把握新的商业脉络?
- html 中 div 盒子上下垂直居中显示
- Github上的一些优秀的知识图谱项目*
- Java—计算球体积
- jquery toggle_响应式WordPress主题教程–第6部分– jQuery Toggle菜单