CesiumLab V2.3.0 - 通用模型处理工具
2020-08-22 16:42:08
4120次阅读
1个评论
最后修改时间:2020-08-22 16:55:29

今年过的如此艰难,曾经计划好的事情,大都难以实施。北京这次疫情反扑彻底把所有人圈在北京了,哪都不能去,那就安心做产品吧。自从V2.2.0发布已经有四个月,甚至距离V2.2.4的版本更新都2个多月了,这么久我们到底在干啥?
要说CesiumLab里最古老的工具是哪个,就要数 人工模型切片里的小场景切片工具了,这个工具自从2018年4月发布以来,几乎没有做大的修改。

小场景切片工具


为什么这么久不更新,因为太难难了。

其实对于三维模型的处理,我们从来没有停止过研究,从小场景切片到bim处理工具,再到建筑外壳模型切片做了好多了。工具是越来越多,用户也是越来越混乱,这么多工具怎么选?其实工具本质上是算法的差异,采用不同算法应对不同的模型,注意不是不同格式。这里建议大家搞清楚 格式 和 模型内容的区别,举个形象化的例子:模型内容就像饮料,格式就像瓶子。饮料有酸甜苦辣,瓶子有塑料玻璃金属的。我们处理模型如同我们喝饮料,其实外包装不是最关键的,而是里面的内容。我们能用玻璃瓶装牛奶,装纯净水,装汽水,就如同我们可以用 fbx格式来存储建筑白模,bim模型,室内外效果模型等。所以记住我们第一个结论:模型的处理算法 不是依赖模型的格式,而是模型的内容模型的内容的差异在于两个方面:一,三维几何体的复杂度,个数,是否有内外结构。二,纹理的多少,纹理的大小,以及纹理的贴图方式。内容上的差异就会要求我们的算法上要不要做几何体精简,采用什么样的精简算法。要不要做纹理合并,采用什么样的纹理合并算法。我们再说第二个结论:模型的格式会限制模型的处理算法。比如obj没有几何体实例的概念,所以我们就不好做i3dm优化,再比如我们定义的bim导出clm格式实际可以自带多级lod,辅助我们更好的做lod。扯了这么多,其实就是想给大家推出我们的新版模型处理工具,目前的命名是:通用模型处理

通用模型处理


就是因为我们的模型处理工具太多了,每种都一些局限性,对我们未来的系统维护带来压力,用户使用也不够灵活,所以我们希望做一个通用的模型处理工具,集成所有算法,用户根据自己模型的内容来选择处理算法,以达到最佳的处理结果。这个工具的出现将逐步替换Lab中的四个工具:
1,矢量楼块切片
2,人工模型-> 小场景切片
3,人工模型-> 建筑外壳模型切片
4,BIM模型切片

通用模型处理工具


继续揭开新版模型处理工具的神秘面纱:

通用模型处理工具


做为一个合格的码农,需要我们的客户跟上我的思路,所以设计了这样一张图,可能大家有点懵,我给大家解释下,就会豁然开朗。

我们把整个数据处理流程大概分为五个部分:1,输入过程。2,数据缓存。3,处理算法。4,效果、压缩、属性参数。5,存储过程

1,输入过程,我们既然要替换老版本的四个工具,那么也就是说这块必须支持多种输入形式:常规模型形式的fbx,obj,bim导出clm,ifc,甚至是建筑物矢量面shp。所以这块是插件式结构,支持多种输入,未来会扩展更多。

2,数据缓存其实是把各种输入的数据给统一化,暂存起来,这样就把后续的处理算法和输入阶段完全隔离开,后续的处理算法根本无需考虑到底是何种输入形式。

3,处理算法:这个就很有意思了,我们目前分了两种算法,一种是 小场景处理,一种是八叉树处理,这是处理的岔路口,目前是二选一的形式。

小场景 顾名思义,就是处理小量数据的,这个是我们这次更新模型工具的最大心得,我们原来的目标总想着城市级,国家级,世界级,可奈何其实大部分项目的数据量都很小,一般是一个园区,一个学校,一个工厂等等,这些数据真的需要做LOD吗?真不见得,LOD的设计初衷是为了解决总量超过一般系统承载量的数据显示问题,数据总量没那么多,做了LOD反倒要承担:显示效果损失,由于LOD调度带来的额外系统负担,用户的抱怨。为了最快速加载整个数据,我们舍弃了LOD,直接加载最高精度数据,那很多人觉得这还需要你的工具干啥,直接导出gltf就好了,我建议大家尝试之后再说,我们还是有很多优化在里面的,绝对不是常规导出gltf可以胜任的。

八叉树处理,这就是我们最初的设想了,标准的严格的八叉树层级结构,带LOD,当然这块迄今为止,我们也还做的不够好,主要是卡在一些底层的核心算法上,我们会努力,还是我们很早之前说的我们工具解决不了所有问题,能解决一部分问题就行。

4,效果参数,这里基本没什么说的,大家都见识了。

5,存储过程,这就是我们原来的紧凑和散列输出,也没什么。


这次的模型处理有两个亮点,给大家先说下:

1,i3dm优化,现在的程序我们内部会对共享的几何体(实例)进行i3dm优化尝试。小场景处理器上有一个i3dm优化的阈值。这个值表示实例共享的次数,如果高于设定的值,才会做i3dm优化。很多人费解,i3dm优化会减少数据量,为何要加这个限制,但是我想说减少数据量不表示你渲染效率高,这个我们回头再讨论,所以大家可以拿自己模型测试。


i3dm优化个数

2,新增了跨平台的纹理压缩优化。这种压缩经我们测试,速度比原来的综合优化(crn)的压缩速度更快,而且支持pc,android,iphone多平台使用,这个真的是一次处理,多平台省心。只是可惜的是目前cesium还不支持这种格式,如果要体验只能用earthsdk来加载数据了,因为我们预计cesium迟早支持,所以我们预先把它做为付费项目了,哈哈,不喜勿用。


跨平台纹理压缩

完整参数列表:


参数介绍


放几张效果图(截图来自一些热心用户发来的数据,如有不妥,联系我删除)来吸引点人气:




为了降低用户学习成本,其实大家在工具里看到的参数只很少的一部分,代码里的参数真的太多了。如果有一些模型您处理总是不满意,发给我,我用代码跑一下,也许有不一样的效果。


再次感谢长久以来支持cesiumlab的各位用户,没有你们的鞭笞和鼓励,我们没有进步,哈哈。




收藏 0 0
    2021-04-09 18:43:04

    你好,我用这个功能,把fbx转 3dtitles ,加载的的时候一直报 Expected width to be greater than 0, actual value was 0,加载的时候没有贴图,就可以正常加载,有贴图的就不行,有什么解决方案


    回复 |  引用
共1条 1

登录 后评论。没有帐号? 注册 一个。

西部世界

VIP会员 工作人员
  • 0 回答
  • 0 粉丝
  • 0 关注