一拿到三维模型,“各路神仙”都会要求先进行轻量化。但我发现很多人其实对轻量化的目的,及应用场景是没有概念的。因此本文以我自己数据处理的角度,来说说三维模型要加载到渲染平台,围绕轻量化方面,它该做什么,不该做什么。
1、三维模型为啥会卡
三维模型就是一个文件,文件大了自然卡。当然,三维引擎并不是把模型存放到内存就完事,它还需要渲染出来。在渲染侧,有实例化渲染、背面剔除、缓存交换等多种技术。因此要想把三维模型进行高效展示,不能盯着文件这一端。要从文件格式、文件组织、加载组织、渲染组织等多个流程来进行考虑。对了,还需要考虑三维模型处理成本。
2、轻量化的目的
如果是为了看个形状,那么轻量化是值得的。这里的轻量化包括三角网简化、删除小的构件、移除属性。这种场景包括宣传建筑成品、宣传城市风貌等。观众一般看个大的概念。另外很多三维展示平台操作并不是完美,很难进入室内或者构件细节去观察。因此轻量化技术是一种比较经济的手段。
但如果是面向精细化管理或者需要物理级、实体级分析的场景,比如工业制品,建筑室内设计、施工管理、地下设施养护,那么丢失精度就不合适了。因此针对这种应用场景,就要从模型加载策略——即LOD技术来进行考虑了。
3、LOD不是轻量化,它采用了轻量化技术
LOD也是一种技术,它可以不采用轻量化技术,比如我可以在远处给你呈现影像、照片,近处再给你看三维模型(百度、高德的地图三维也是这样的)。另外,LOD技术一般也伴随着瓦片(Tile)切片这个技术。轻量化技术一般用于构建低精度模型的一种技术策略。
有了LOD及切片技术,轻量化技术可以“天马行空”的使用。比如,我可以在最后一级(最高清级别)完完整整的展示所有信息。这时候视野小、可见数据量小。在这种情况下,用户提交的模型可以不用做(或者说不必做)任何处理。低精度数据也可以采用任意的轻量化技术,包括但不限于蒙皮(提取外壳)、点云重建。
4、并不是所有轻量化方法都需要给模型来一刀
现在很多招标说明书或用户需求都要求各类轻量化算法,比如图元合并、背立面移除、参数化重建。其实这些方法大多有应用场景。如果分不清楚应用场景,那么不仅折腾自己,而且还折腾模型。
比如图元合并算法(工具),其目的是把减少实体数量,因此算法一般会合并类似属性的实体(比如墙体)、或向上抽象实体(比如桌子和椅子合并成办公桌)。图元合并等于干掉细分实体,因此该功能要让用户交互选择哪些实体可以被合并。要承担合并后无法查询属性、简化失败(简化时没有选择【保留拓扑】)等风险。
还有一个比较悲观的情况是,一般BIM模型体量大并不是因为墙多,而是栏杆、门把手、消防栓、穿孔铝板等,这些带有异构特征的模型复杂。因此图元合并、背立面移除等等算法应用在这里模型上,就等于曹操剪了一撮头发,耗时耗力,到头来模型差异不大。
类似的,边坍塌算法等三角面简化算法并不是所有构件都合适,在某些特殊构件上,采用参数化重构、图形模拟等技术有时候更有效。
5、什么时候可以说“我要对模型单体化”
有些作者把文件格式进行了转变,就大幅提升了渲染效率,这是存在的。但应用场景应该仅限单个模型的浏览。如果是城市级三维模型的展示,那么非上多级LOD+切片服务不可,即必须转换为3D Tiles这样的瓦片服务。
在独立场景或小场景,希望一次性全量加载模型,不需要太多的分析,那么轻量化是可以作为必选项。现在有些平台限定用户查看单个模型的体量为15M,这个奔点还是需要的。
标签:场景,LOD,模型,技术,三维,轻量化 From: https://blog.csdn.net/htsitr2/article/details/142406501