500 + 模型文件,2000 + 图纸文件,每天超过 100 万次的操作请求,超过 2000 个业务流程。

    这样的数据,您是觉得陌生还是熟悉?夸张还是真实?

    一个真实的万达广场 BIM 模型,比你想象的可能还要多!

    BIM模型轻量化核心技术解析 - 刘晓栋 - 图1

    面对这样众多的数据模型,错综复杂的业务流程,需要投入多少时间?多少办公设备?又需要投入多少人力?进行多少变更?

    像万达这样千亿级的企业,能够将 BIM 和大数据做到这样的程度,是件非常了不起的事情。这样一个具备行业影响力的公司,在 BIM 应用落地上始终是走在行业前列的,同时,也呈现出了如今 BIM 模型逃不开的大趋势:

    ▶ BIM 模型太大,硬件要求苛刻

    ▶ 移动办公,模型加载困难

    BIM 的最大价值在协同,不同岗位间、不同专业间、多参与方间都需要协同,将多个专业的模型整合为一个全专业的模型是最基础的工作。

    原始设计模型保留很多设计过程中的信息,模型体量大,整合多个专业的模型后,体量会呈数量级的增大,对硬件的要求将会非常苛刻。

    随着智能手机、平板电脑的全面普及,移动办公的基础硬件条件已经具备,BIM 模型的体量却尚未跟上,如果 BIM 模型动辄几百 M,几个 G,对移动设备的处理能力和网络流量都是一个巨大的考验,轻量化是唯一出路。

    建筑行业的轻装上阵,从 BIM 轻量化开始。


    一、轻量化原理及核心技术

    简单讲,BIM 轻量化要解决的核心问题就是:缩小 BIM 模型体量,让它轻、显示快。

    从数据维度看,设计模型包含几何信息和非几何信息两部分。几何信息即我们能看到的二维、三维模型,非几何信息通常指一些属性数据、建模相关的其他数据等,非几何信息的轻量化技术难度较低,按需提取存储即可,几何信息的轻量化技术难度较高,下面主要针对几何信息的轻量化展开。

    (一)BIM 模型处理全流程

    BIM模型轻量化核心技术解析 - 刘晓栋 - 图2

    如上图所示,从设计模型转换到 BIM 模型,再到我们最终在电脑或者移动终端看到的模型,中间经历了两个处理过程,一个是几何转换,一个是渲染处理,这两个处理过程的好坏直接影响到最终轻量化的效果,因此我们也称其为 BIM 模型轻量化的关键环节,这两个环节是真正考验各个 BIM 软件厂商技术实力的关键点。

    (一)BIM 模型轻量化的关键环节

    1、几何转换

    几何转换过程就是将设计模型转换到 BIM 模型的过程,这个过程是整个轻量化的源头,也是核心。我们从微观和宏观两个方面来优化,实现轻量化。

    微观层面的优化: 从技术角度来看,业内目前存在两种处理方式,分别是参数化几何描述和三角化几何描述。

    参数化几何描述:

    用多个参数来描述一个几何体,我们称之为参数化几何描述。

    例如:我们画一个圆形柱子,可以使用 3 个参数:

    参数 1:底面原点坐标(x、y、z,3 个小数)

    参数 2:底面半径(r,1 个小数)

    参数 3:柱子高度(h,1 个小数)

    这样,我们使用 5 个小数即可完成一个圆柱体的搭建,非常精简,参数化几何描述可以将单个图元做到最极致的轻量化。

    BIM模型轻量化核心技术解析 - 刘晓栋 - 图3

    2、三角化几何描述

    用多个三角形来描述一个几何体,我们称之为三角化几何描述。

    三角形可以拼接成任意的平面或者曲面,多个面最终拼接成三维体,这是现代计算机图形处理的基础。我们在屏幕上看到的任何一个三维模型,都是由一个一个的三角形拼接而成的。

    一个三维模型,三角形越多,模型看上去越精细,反之则越粗糙,这也是 LOD(Levels of Detail)的基本原理。

    还是用圆形柱子举例,我们可以使用 n 个三角形来拼接成圆柱的顶面、底面、圆形曲面,最终合成整个圆柱。n 越大,柱子越光滑,否则圆柱的圆形曲面将会是有棱角的。

    如下图所示,随着 n 的增大,模型的精细度越来越高:

    BIM模型轻量化核心技术解析 - 刘晓栋 - 图4

    那么,是不是 n 越大越好呢?聪明的你一定想到了,n 越大,模型越精细,但是模型体量也越大,这和轻量化的初衷是背道而驰的。

    那么 n 到底设置多少合适呢?这个问题没有答案,不同的应用场景对模型精细度的要求是不一样的,远距离查看全场景的模型,需要的精细度比较低,近距离查看单个图元,需要的精细度比较高,所以 n 设置多少都不合适,这也是三角化几何描述的弊端。

    因此,同样画一个圆柱,三角化的几何描述需要至少数十个以上三角形来描述,比参数化描述方式大了很多,轻量化效果并不好。

    BIM模型轻量化核心技术解析 - 刘晓栋 - 图5

    3、两种描述的对比

    BIM模型轻量化核心技术解析 - 刘晓栋 - 图6

    参数化几何描述需要解析设计模型的原始几何信息,然后转换为自有的几何描述,这个过程需要几何算法库的支撑,技术难度比较高,但是轻量化效果好,后期使用的灵活度很高,可以根据不同应用场景的精度要求,生成对应精度三角形数据来显示,能很好解决三角化几何描述的弊端。另外,参数化几何描述还有很多优点,比如:在精确测量,布尔运算(流水段切割图元)等方面的良好支持。

    三角化几何描述只需要将设计模型转换为三角形数据保存即可,主流的设计软件一般都提供相关的二次开发接口或者 SDK 来获取三角形数据,技术难度比较低,但是轻量化效果不佳,后期的某些应用场景会受限。

    宏观层面的优化:

    前面我们了解到,使用参数化几何描述方式,可以有效减少单个图元的体量,但是如果是一个大规模甚至超大规模的工程,数据量还是很可观的,这个时候的优化策略必须从宏观层面去考虑。

    相似性算法减少图元数量

    在一个工程中,有很多图元长得一模一样,比如很多桩的形状一模一样,只是位置不一样,这个时候我们可以做图元合并,即:只保留一个桩的数据,其他桩我们记录一个引用 + 空间坐标即可。通过这种方式我们可以有效减少图元数量,达到轻量化的目的。

    BIM模型轻量化核心技术解析 - 刘晓栋 - 图7

    如何判断两个图元是一模一样呢?相似性算法能有效判断两个图元能否合并,用专业术语来说,就是判断两个图元是否经过刚体变换,包含平移变换、旋转变换和镜像变换三种情况。

    相似行算法能有效减少图元数量,尤其在基础工程、结构工程、钢结构工程等领域,能大幅度减少图元数量,轻量化效果非常明显。

    渲染处理

    为了达到流畅、实时的显示,通常绘制需要达到 15-30 帧 / 秒。如果模型数据量比较大,尤其是建筑模型,汇集了各专业的数据,模型的三角面片数会达到数千万,内存的开销在 20-30G 以上。在常规的绘制流程下系统无法装载整个数据,绘制也非常卡顿,这时需要通过各种手段加速场景的绘制,并精简、控制内存的开销。

    下面我们分别从微观和宏观两个角度对渲染处理做优化,由于篇幅所限,我们只介绍几种核心优化策略,而不是全部。

    微观层面的优化

    多重 LOD(Levels of Detail),加速单图元渲染速度

    多重 LOD 基本上是 3D GIS 领域的必备技能,在 BIM 领域也有广泛的应用。

    当场景中的一些物体距离视点较远、或者物体本身比较小时,最终投射到屏幕上的像素并不多。如果用过多的几何图元来表示这些物体会浪费存储并影响性能。

    多重 LOD 用不同级别的几何体来表示物体,距离越远加载的模型越粗糙,距离越近加载的模型越精细,从而在不影响视觉效果的前提下提高显示效率并降低存储。

    BIM模型轻量化核心技术解析 - 刘晓栋 - 图8

    单次渲染体量 = 图元数量 * 图元精度。

    视点距离远的情况下,图元数量虽然多,但是图元精度比较低,所以体量可控。

    视点距离近的情况下,图元精度虽然高,但是图元数量比较少,体量依然可控。

    因此,使用 LOD 技术可以确保在大场景和局部场景下的都能流畅的显示模型。但是,LOD 技术是一柄双刃剑,其可以有效控制单次渲染体量,但是多重 LOD 会导致模型文件变大,因为同一个图元可能会有多个几何形体表示,因此需要根据实际情况灵活使用。

    LOD 技术的应用有许多技巧,譬如按照室内、室外区分模型数据,或者按照远近、楼层、甚至建筑的专业与细节层次分类处理大小不同的建筑构件等。另外,应用 LOD 技术时通常也需考虑用户体验,以避免明显的显示效果跳跃。

    宏观层面的优化

    遮挡剔除,减少渲染图元数量

    遮挡剔除是将无法投射到人眼视锥中的物体裁剪掉,从而带来显示效率上的提升。遮挡剔除技术是在场景绘制中剔除当前视点下被遮挡的对象、只绘制最前面的对象,从而达到提升性能的目的。

    如下图所示,被观察物由于被遮挡,所以不会被绘制,从而减少绘制量,提升性能,但是使用者的感知是一样的。

    BIM模型轻量化核心技术解析 - 刘晓栋 - 图9

    通常的做法是对图元做八叉树空间索引,然后根据视点计算场景中要剔除掉的图元,只绘制可见的图元。

    批量绘制,提升渲染流畅度

    为了将一个物体绘制到屏幕上,需要发起一次图形 API 绘制调用。绘制调用非常耗费 CPU、并且通常会造成 GPU 时间闲置。为了优化性能、平衡 CPU 和 GPU 负载,可以将具有相同状态(例如相同材质)的物体合并到一次绘制调用中,这叫做批次绘制调用。批次绘制调用通过合并物体来减少绘制调用,从而带来性能的优化。批次绘制可以预先处理,形成静态的批次,或者绘制每帧时进行动态调整,这时称为动态批次合并。有时也结合动态和静态的批次合并策略,达到渲染流畅度的提升。

    二、理想的轻量化技术方案

    前面我们了解到,轻量化主要从几何转换和渲染处理两个环节着手进行优化,权衡技术利弊及应用需求,笔者认为理想的技术方案如下:

    轻量化模型数据 = 参数化几何描述 (必须) + 相似性图元合并;

    提升渲染效果 = 遮挡剔除 + 批量绘制 + LOD(可选);

    BIM模型轻量化核心技术解析 - 刘晓栋 - 图10

    三、广联达 BIM 轻量化技术方案

    众所周知,BIM 领域的设计软件众多,而且绝大多数都是国外的设计软件,不同设计软件的数据描述各不相同,并且数据的开放程度也各不相同,从设计端承接模型并轻量化是一个复杂的过程,尤其是参数化几何描述,难度更大,但是参数化几何描述恰恰是 BIM 模型轻量化的核心,要做到这一点需要有强大的图形技术做支撑,广联达很早就意识到这

    一点,并持续投入大量的研发资源,到现在已经有近 10 年的沉淀,上面提到的理想的技术方案也是公司不断摸索总结出来的。

    广联达 BIM 轻量化技术可以把 99% 以上的 Revit 几何体转换为自有的参数化几何体,从而达到极致的轻量化,那么最终效果怎么样呢?针对不同专业效果也不一样,土建专业的模型平面居多,压缩率比较高,基本能达到 1:10 以上,机电专业曲面较多,压缩率低一些,尤其机电设备较多的情况下,压缩率会更低一些,基本在 1:5 以上,综合来看,一个项目全专业模型的压缩率在 1:5 到 1:10 之间。

    在渲染阶段,我们除了采用 LOD、遮挡剔除、批量绘制手段外,还采用了很多其他优化手段,比如多线程调度、动态磁盘交换、首帧渲染优化等手段,大大加速了渲染效率。据统计,100 万构件、3000 万三角片的超大规模土建模型,渲染数据峰值内存占用不超过 3G,并能流畅显示。20 万构件,4500 万三角片的机电模型,渲染数据峰值内存占用不超过 2.5G,并能流畅显示。

    路漫漫其修远兮,BIM 轻量化,广联达一直在砥砺前行。
    http://xjz.glodon.com/f/view-11-17dae10a022e4a15b509dbc9839e97cb.html