CIM 数字底座轻量化关键技术研究
2024-03-26肖康施晨欢张彦鹏
肖康 施晨欢 张彦鹏
(华建数创(上海)科技有限公司,上海 200011)
引言
2021 年5 月,住房和城乡建设部颁布了《城市信息模型(CIM)基础平台技术导则》(修订版),其中城市信息模型(City Information Modeling,CIM)被定义为“以建筑信息模型(BIM)、地理信息系统(GIS)、物联网(IoT)等技术为基础,整合城市地上地下、室内室外、历史现状未来多维多尺度空间数据和物联感知数据,构建起三维数字空间的城市信息有机综合体[1]”。上海市住房城乡建设管理委会同市经信委于2022 年9月联合印发《关于开展上海城市信息模型(CIM)底座建设的指导意见》,并充分运用最新的信息技术,归集全市白模、精模、地下管线与构筑物、区域CIM 和工程建设BIM 等三维数据以及燃气、交通路况等IoT数据,完成数据汇聚与管理、数据查询与可视化等五类基础功能开发,实现数据二三维一体化、动态静态一体化、地上地下一体化和分层分级可视化展示等分析能力,基本建成住建行业CIM 平台[2]。
CIM 发展和应用的基础和前提是建立一个全要素、大场景、美观又实用的数字城市三维时空底座。CIM数字底座建设中的主体框架是BIM+GIS,可辅助IoT采集视频、传感器等数据来构建整个CIM 数字底板。
目前,多源异构三维模型的集成与兼容仍存在诸多技术难点,主要体现在模型数据融合难、模型加载效率低及渲染性能差等问题[3]。而在实际CIM 项目建设过程中,三维数字底板模型部分多以三维手工建模、倾斜摄影为主,距离全场景承载BIM 模型的目标尚有差距[4]。
1 关键技术要点
1.1 技术路线
针对于这些实际项目中遇到的技术难点,本文提出了一套解决方案:
(1)针对于BIM 模型实现数模分离、压缩优化,并对OBJ、FBX 等格式三维人工建模模型进行模型轻量化;
(2)对所有类型的模型在治理优化的基础上统一形成.cim 的标准格式模型;
(3)自定义的.cim 格式支持双向转换,即从.cim转出OBJ、FBX 等40+种格式;
(4)基于统一的.cim 格式,同时支持目前CIM 主流引擎—游戏引擎、WebGL 等多源引擎融合加载渲染,即用一套模型实现多引擎支持。
(2)地理上的集中本身就有助于商品制造者、供给者与顾客之间产生一种更为自由的信息传播,相当数量的创新正是由于顾客需要和解决供给问题而产生的结果.
CIM 数字底座轻量化技术路线如图1 所示。
图1 CIM 数字底座轻量化技术路线
1.2 模型治理优化工具
模型治理优化工具的核心是对BIM 模型的轻量化。本文通过Revit 二次开发将BIM 模型的结构化的构件信息与非结构化的渲染信息数据进行压缩优化,并根据数据类型采用对应的数据存储方式进行分离存储,以达BIM 模型的高度轻量化。其主要包括以下三个步骤:
(1)数模分离
首先提取模型中的几何数据和模型中的非几何数据,并建立构件几何索引字典映射,自动分析几何标高信息提取出当前几何楼层信息,对非几何数据进行去重、合并和优化等操作,减小数据存储量[5]。
(2)网格简化
然后采用QEM 网格简化算法结合权值计算及累积简化误差度量进行三角网格简化,在不损失模型精细度的情况下简化几何特征值精度并计算最优顶点收缩,使顶点数与三角面数减少以达到局部简化最优性[6]。
(3)压缩优化
将简化后的构件几何数据按每500个压缩为一个包,拆解为N 份,根据拆分标识与几何字典映射生成数据索引,并进行分块压缩,大幅降低BIM 模型的体积[7]。
图2 BIM 模型轻量化流程
1.3 CIM 统一标准模型格式
本文提出的CIM 统一标准模型格式(.cim),主要分为索引数据、几何数据和属性数据三部分。其中,.cim索引数据文件主要包含关联模型、几何分组、材质索引、模型源点及模型版本等信息;.pack 几何文件主要包含属性索引、颜色、法线、顶点及UV 等信息;.cdp属性数据文件主要包含基础属性(构件属性)、属性分组(关联模型)、标高(楼层划分)、房间(房间划分)及版本等信息。通过数模分离、重新分类和无损压缩,可以实现在多源引擎中使用WebWorker 多线程按需组装加载[8],各部分的模型格式组成如图3 所示。
图3 CIM 统一标准模型格式组成
1.4 多格式双向转换
人工建模模型的格式种类繁多,本文基于CIM 统一标准模型格式,将多达40 多种三维格式转换为.cim,同时支持将.cim 格式转换回原格式。通过.cim 模型插件对模型(.cim、.pack、.cdp)进行二进制解密,并对压缩后的非结构化几何数据进行重组,结构化属性数据进行序列化操作,然后通过插件将整个模型加载至一个场景对象,此对象承载模型所有数据,包含节点、几何、材质和动画等。
场景对象包含了场景根节点的引用,在根节点中包含了场景对象中所储存数据的索引,每个节点都可以有多个子节点,形成模型节点树。在节点中关联场景对象的nMeshes 数组,此数组只存储场景中网格数组的索引数据。场景下的Meshes 数组储存了模型实际的Mesh 对象,Mesh 对象包含渲染所需要的所有相关数据,包含面、法向量、顶点位置、纹理坐标和材质数据。一个Mesh 包含多个面、材质对象,面包含了组成图元的顶点的索引,表示点、三角形及方形类型的渲染图元。由于顶点和索引是分开的,使用索引结构进行渲染大大提高了模型加载及处理的效率。材质对象包含物体的材质属性,如颜色和纹理贴图、漫反射和镜面光贴图等材质相关属性[9],多格式双向转换流程如图4 所示。
图4 多格式双向转换流程
1.5 多源平台引擎融合
目前CIM 主流的应用平台以由Unreal Engine 为代表的游戏引擎和基于网页端的WebGL 引擎组成。游戏引擎以三维可视化、渲染效果为主,WebGL 引擎则侧重于业务系统的建设[10]。这两大类引擎对于三维模型的格式、存储和传输各有不同的方式,在项目中往往需要两套独立的模型数据。本文基于所提出的CIM 统一标准模型格式,即可实现后台同一套模型数据,游戏引擎和WebGL 同时读取、加载和渲染的目标,从而实现多源平台引擎融合。
2 技术实现
2.1 模型治理优化工具
针对于“重量级”BIM 模型可在本地生成轻量化包手动上传至云平台,减少模型处理失败,网络不稳定传输造成的处理失败问题,同时支持将轻量化压缩包进行本地部署,提高模型加载效率与模型安全性。上传至云平台是指在本地环境中将模型预处理后的轻量级压缩包上传至云平台进行后续压缩计算,有着不占用本地资源,批量处理的优势。
基于自定义可控的CIM 标准格式模型,可以解析BIM 模型构件,进行构件级别精细化管理和信息统计汇总,如图5 所示。
图5 构件级别精细化管理和信息统计汇总
2.2 CIM 统一标准模型格式
本文以一座上海市历史保护建筑的BIM 模型为例,按照图2 的技术流程对BIM 进行数模分离、压缩优化等处理,形成统一的标准模型格式(.cim),原始模型大小118MB,无损轻量化后的大小为9.7MB,模型文件组成部分如图6 所示。
图6 CIM 统一标准模型格式
2.3 多格式双向转换
本文以.fbx 格式为例,通过开发转换脚本,实现.cim格式与.fbx 格式的双向转换,转换过程如图7 所示,转换结果如图8 所示。
图7 多格式双向转换脚本
图8 多格式双向转换结果
2.4 多源平台引擎融合
基于CIM 标准格式模型,实现大屏端、PC 端、移动端等多终端和跨平台支持,针对目前CIM 主流的基于游戏引擎和WebGL 两大类引擎,从模型和平台层面实现了多源引擎的融合。
2.4.1 基于游戏引擎渲染可视化
通过CIM 配套的游戏引擎插件提取模型的顶点数据、法线、纹理坐标,重新解析并采用数组结构分散储存为游戏引擎支持的Vertices、Normals、TextureCoords、Faces 数据,在游戏引擎内部采用ProceduralMesh、CreateMeshSection、GetAllFilesInDirectory、FindMeshInfo、LoadMesh 等函数还原为原始模型,同时该插件支持在UE 引擎下Runtime 模式中实时读取模型数据,实现.cim 模型的无损转换渲染及运行时动态加载,技术路线如图9 所示,渲染效果如图10 所示。
图9 基于游戏引擎的加载、渲染技术路线
图10 基于游戏引擎的无缝加载、渲染
2.4.2 基于WebGL 引擎渲染可视化
在模型渲染展示时,首先发起渲染请求,模型云平台收到请求后反馈回模型索引数据,前端根据索引数据通过Web Worker 多线程请求与解压处理模型数据包,并解析相应的几何数据,在前端进行渲染,技术路线如图11 所示,渲染效果如图12 所示。
图11 基于WebGL 引擎加载、渲染技术路线
图12 基于WebGL 引擎加载、渲染结果
3 实现效果
轻量化结果与市场主流的BIMFace、盈嘉互联、葛兰岱尔和易景空间等4 个品牌等进行了定量比较,基于原始大小118.6M 的模型文件,从轻量化结果、前端加载大小、加载渲染时间和压缩比率4 个维度进行了分析统计。本次实现的轻量化成果均占据明显的优势,优化后模型文件相比原始文件减少 92%,优化后模型前端加载量相比原始文件减少 98.5%,模型加载渲染仅耗时1.9 s,比较结果如图13 所示。
图13 与市场主流品牌定量比较
4 总结与展望
本文提出的CIM 数字底座轻量化关键技术已经在多个项目中实际落地,具有很大的应用价值,主要归纳为三个方面:
(1)完善了CIM 数据融合机制。模型治理优化工具将常用三维模型格式统一为CIM 标准模型文件格式(.cim) ,为CIM 提供完整的模型数据融合机制;
(2)提高了CIM 模型加载渲染效率。轻量化模型在保证模型精度、构件属性不丢失的情况下,能够基于多源引擎平台大幅提高模型渲染效率。为CIM+应用、智慧园区、智慧工地等应用场景提供从宏观到微观、从室外到室内不同空间场景中无缝衔接、切换和浏览;
(3)实现了模型在几何实体、承载信息等方面的精简、转换、缩减的过程。减少重复性人工模型简化工作,加快项目交付。