# 流式加载

# 什么是流式加载

通俗来讲,流式加载指的是依据模型的视觉贡献度、属性、重要性等因素,划分不同加载优先级,从而进行不同精度轻量化展示的技术。

当模型的体量比较大时,高精度加载显示会对网页造成巨大压力,导致浏览器加载速度慢、操作卡顿,甚至崩溃。事实上,在某一个相机视角 (opens new window)下,只有一部分模型是我们能在屏幕上看见的,另外的模型可能落在屏幕外,或被遮挡(例如,当我们在建筑外部观察时,建筑内的场景是会被挡住看不见的),这部分模型不加载不影响显示效果;还有一部分模型的距离十分遥远,视觉贡献度不高,就算高精度加载也看不清,没有必要耗费过多资源进行高精度加载,可进行适当简化。

基于此,BIMFACE团队针对大场景加载时间长、操作卡顿的痛点,研发了流式加载技术。在加载过程中,对模型状态进行自动识别,依据展示优先级进行不同精度的展示,大大降低了模型加载时间;在操作模型时,依据视角的变化,进行实时动态调度,保证模型高优先级部分高精度展示,从而拥有良好的显示效果,同时简化/不加载低优先级部分,从而节约浏览器资源,保证操作的流畅性。

# 流式加载的优势

流式加载相比较传统的加载方式,在保证同样优秀的显示效果下,具备优异的性能和操作体验,在各类大场景下(如GIS场景、智慧工地、基建、数字城市等)得到了广泛应用。

经过团队内部测试,应用普通商务轻薄本(配置为i5-11代低压CPU,8G内存,核显),可实现对某基建模型(模型大小约9G,三角面片1200w+)进行快速加载与流畅展示;对于某大规模建筑(如下图,三角面片数2300w+)可实现5s内加载完毕并流畅展示。这证明了流式加载方式可以有效提升加载性能与用户体验,拓展了轻量化模型的应用场景。 广联达二期流式加载

# 流式加载与全量加载和按需加载的区别

全量加载方式在加载时,对模型所有部分都进行加载渲染,势必会造成浏览器资源的浪费,降低了用户体验。按需加载方式则是有选择性的加载有需要的局部模型并进行展示,该方式的缺点是,如果你需要加载其它部分模型时,需要进行重新转换。流式加载不存在上述问题。

# 应用于流式加载的全新数据格式——bimtiles

BIMFACE团队研发了新的数据格式bimtiles,应用于流式加载,成功解决了大规模模型展示时存在的海量数据、多源异构数据融合、在线快速渲染等复杂问题。bimtiles依据模型的建模与分类标准,结合模型视觉贡献度和重要性,应用了多种数据优化算法(如HLOD、mesh化简与压缩、几何重组与合并、批次合并等算法),成功实现了模型的动态加载与调度,使大规模模型的轻量化性能与展示效果更上一层楼。

注:

  • 多源异构数据融合指的是对BIM数据、卫星影像资源、数字高程模型、倾斜摄影和SHP等多来源,结构不同的数据进行融合,并进行后续应用。这也是目前大场景轻量化展示亟待解决的问题。
  • HLOD(Hierarchical Level of Detail)指的是多层次、多方式、多细节加载,通过应用抽壳、构件LOD、批次优化、实例绘制、视锥裁剪、遮挡/分层剔除等算法,将数据划分至多层次递进结构。

# 如何实现流式加载

相比较全量加载的文件(.bmd格式),流式加载的文件应用新的数据格式(.bimtiles格式),故如果想应用流式加载,需在模型转换/集成时进行配置。

# 控制台实现流式加载

在控制台界面,当你需要对模型进行流式加载时,需要在转换的设置中配置流式加载选项。 流式加载配置页 在模型集成时,需要配置流式加载选项。 流式加载集成配置页 在转换完成后,控制台页面有此标识的模型,即为应用流式加载配置产生的bimtiles文件。 bimtiles标识

# 调用后端接口实现流式加载

在文件转换时,为实现流式加载,需在调用文件转换接口 (opens new window)时,在body请求体中的config配置项内设置toBimtiles选项,示例如下:

{
  "source":{
    "fileId":1938888813662976,
    "compressed":false
  },
  "callback":"http://www.app.com/receive",
  "config":{
      // 是否选择流式加载
    "toBimtiles" : true
  }
}

在文件集成时,为实现流式加载,需在调用文件集成接口 (opens new window)时,在body请求体中的config配置项内设置toBimtiles选项(参见模型集成 (opens new window)):

{
  "config":{
      // 是否选择流式加载
    "toBimtiles" : true
  }
}