当前位置: 首页 > article >正文

CesiumLab和CIMRTS的尝试融合

CIMRTS上周的版本中增加了自定义3dtiles导出增加模型结构树和原始坐标参数。在上周的文章CIMRTS v1.0.9 新增功能解析里已经解释过了--设置自定义3dtiles导出其实是为了完全兼容CesiumLab模型处理的参数的。

那么就有已经习惯了使用CesiumLab的用户会有疑问?既然CIMRTS里已经能够兼容CesiumLab的处理参数,那么CesiumLab中可不可以也兼容CIMRTS呢?经过仔细的考虑后,也决定了在CesiumLab中融合CIMRTS的功能,在最新版本的CesiumLab v4.0.7中就已经在通用模型切片工具中增加了CIMRTS处理器,可连接CIMRTS服务进行切片。

1 需求分析

在CesiumLab中加上CIMRTS处理器,最直接的目的是减少直接使用CIMRTS的操作步骤,更容易上手,对于之前已经熟练使用CesiumLab的用户来说相当友好。其次,如果不需要做数据的分析,比较简单的数据,几何包括纹理没有那么复杂,反而使用CesiumLab的CMRTS处理器来处理还更为方便。

2 使用步骤

2.1 安装CIMRTS

在使用CesiumLab中的CIMRTS处理器的前提一定是要在CesiumLab的同一台电脑上安装CIMRTS,CIMRTS安装过正式授权,并且启动CIMRTS服务。

2.2 输入文件

对于熟悉使用CesiumLab的通用模型切片的方式的用户来说,CesiumLab支持的格式有obj,fbx,shp,clm,datasmith,skp这6种已经非常熟悉了,如果有更多其他的格式需要处理,还是要去CIMRTS中去操作,这里多说一句,如果大家有更多其他的格式(开源,CIMRTS也还未提供导入方式),也非常欢迎大家反馈给我们,我们可以尽力加上。

点击需要添加的格式,选择文件,点击打开

这里注意模型处理时的空间参考一定要设置为投影坐标,实在不知道的就设置为EPSG:4547即可。否则就会不能处理,报错。

2.3 资源库

资源库对于选择CIMRTS的处理不适用,这里就不做解释了。

2.4 CIMRTS处理器

CesiumLab提供了3种处理器--小场景处理器,八叉树处理器,CIMRTS处理器。点击中间的切换按钮就可以切换3种处理器了。

小场景处理和八叉树处理器是CesiumLab原有的两种处理方式,在这里就不做过多的说明了,有兴趣大家可以看一下CesiumLab帮助文档或者我们的视频教程。着重讲解一下新增的CIMRTS处理器

2.4.1 服务端口

这个就是CesiumLab安装所在的电脑中CIMRTS的服务端口,默认是9009,如果CIMRTS自定义了端口号,那么这里记得更改。

2.4.2 几何粗糙度

几何粗糙度里给了五种级别--非常粗糙,粗糙,正常,细致,非常细致。这里对应的就是CIMRTS中数据集->配置->几何管理->LOD计算。

CesiumLab这里默认的是正常。这里如何选择就要看数据具体的情况以及您对处理出来的效果的接受度的要求了。

2.4.3 纹理清晰度

纹理清晰度里给了五种级别--过度清晰,清晰,正常,模糊,非常模糊。默认是正常。这里如何选择就要看数据具体的情况以及您对处理出来的效果的接受度的要求了。

2.4.4 最大级别

最大级别这里给了1-24级。这里对应的就是CIMRTS中切片服务->配置->缓存分析->缓存计算。

按照目前绝大模型设置到 20 级就基本可以了,所以我们默认是20。

实在不知道如何选择这个级别,我们就给一个参考给大家:

  • 对于单体化 obj 模型等:一般我们设置到 20 级就足够。

  • 对于手工建模的数据:为了达到更高的纹理精度,设置到21 或者22 足以。

  • 对于到工程级 BIM:一般设置到 20 级就够。

  • 对于零件级 BIM:一般设置到 22 级别足够。 当然如果数据量不大,对于精度要求高,可以设置到 24。

  • 对于 24 级以上我们认为太精细了,超过咱们做大范围可视化(3DGIS)必要的精度了,绝大部分情况下视角都拉不到这么近去观察,那么这些级别也没有存在的意义。

2.4.5 最大级别原始数据

打个比方,19级别切片里,对于最高精度大于19级别,比如20级别或者甚至26级的构件会怎么样?默认我们就是会加再简化后的数据,但是如果开了这个选项,到了最大级别,都会加载原始数据。

这个参数在CesimLab中是默认开启的,这个参数在CIMRTS中对应的是切片服务->配置->要素筛选->要素筛选列表->编辑->最大级别采用未简化数据

2.4.6 筛选像素

筛选像素的意思是,当要素在当前级别的投影像素小于该值就不可见。我们的所有 LOD 切换,都是指某个 Tile 在投影像素为1024的时候切换。

CesiumLab上的默认值是8,那么就是说在这个Tile级别上,如果某个构件小于块大小的 8/1024=1/128 的时候,要素不会出现。假设块大小是 128 米,那么意味着如果此时要素大小小于1 米,那么不会出现在这个级别上。

这个筛选像素对应的是CIMRTS上的切片服务->配置->要素筛选->要素筛选列表->编辑->最小像素。

2.5 压缩参数

压缩参数主要含有纹理压缩和顶点压缩,这里对应到CIMRTS中切片服务->配置->要素筛选->切片信息部分。

这两个参数在CesiumLab中已经用的很多了。这里再解释一下:

  • 纹理压缩主要就是选择ktx2(其他的纹理格式这里就不多解释了,有兴趣看下CesiumLab的帮助文档),我们推荐这个参数一定要选择到ktx2,这样最终的3ditles 结果里纹理资源量大大减少,对于纹理特别多的单体化模型,这个必须打开。但是如果本身数据纹理不是太多,又想加速数据生成的过程,这个选项可以关闭。纹理压缩还是比较耗时的,可能会把我们单块数据生成时间,从百ms,增加到好几秒。大家根据自己数据选择吧。

  • 顶点压缩勾选后,我们会对3dtiles做draco压缩,这里有低级、中级、高级三种压缩等级选择,可以极大减少存储数据量。但是draco 本身解压缩是要耗时的,比如解压缩耗时 100ms,但是局域网传输 8M 相对 1M 的数据只节省了10ms,那么我们还不如不压缩。所以默认是不勾选的。如果是互联网,带宽压力大,可以开启这个。假设未压缩的数据顶点是 96bit(3 个 float),法向量 96bit (3 个 float),纹理坐标 64bit(2 个 float),总计 256bit,下表中的数字对应该属性选择压缩等级后所压缩后所占的 Bit 数。

    级别

    顶点

    纹理

    法线

    颜色

    属性

    低级

    16

    14

    12

    10

    18

    中级

    14

    12

    10

    8

    16

    高级

    12

    10

    8

    8

    14

颜色转纹理不是这次讲解的重点,有兴趣了解的可以查阅Ceisumlab的帮助文档。

2.6 属性字段

这是CesiumLab一直就带有的功能,不是这次解释的重点。简单解释一下:

当添加 clm、shp 这些自带属性字段的文件,或者添加有属性文件配置的 fbx,obj 的 时候,属性字段列表会列出所有字段。是否存储列通过勾选来选择需要存储到3dtiles里的属性。同时也会增加数据量,根据可视化业务的需要酌情选择。

文件名称开启之后,我们生成的 3dtiles,会多出一个 file 的属 性,该属性保存的是该对象的导入文件名,在 3dtiles 预览的时候点击可以看到该属性。主 要用来区分模型对象的所属文件,方便做业务。

存储未勾选属性开启后,属性表中未被用户勾选的属性会被存储到 一个Json串中,建议用户使用这种方式,不要把属性表的所有属性都勾选上。这种方法能 减少重复数据,及所需存储空间,提升访问效率。

2.7 数据存储

这一部分在上一篇文章CIMRTS v1.0.9 新增功能解析中最后部分已经做过详细的解释,以及CesiumLab的帮助文档里也有详细的说明。这里就不过多赘述,简单解释下:

  • 模型结构树:开启,则模型结构树文件scenetree.json,否则不生成。默认开启,当不需要模型结构树或者处理时间较长时,建议关闭,例如处理大批量白模。

  • 原始坐标:勾选此项,保证输出的3dtiles的原点与原始数据的原点保持一致,否则输出的3dtiles的原点在模型的包围盒的中心。

  • 存储3dtles1.1:控制3dtles的版本,影响cesium版本能否加载

  • 存储类型:目前支持紧凑(clt)、散列、postgres、mongo和minio存储格式。其中minio存储不通过CesiumLab发布服务,而是直接使用minio的http(或https)服务。

  • 输出路径:设置一个本地的存储位置。

2.8 提交处理

设置好全部参数后,点击提交处理,打开CIMRTS的任务队列会有5条新增的任务等待运行。

等待全部任务运行成功。打开输出的3dtiles文件目录查看

在CesiumLab的分发服务->模型切片服务以及CIMRTS的切片服务里都会有一条新的记录,都能够点击预览。

2.9 CesiumLab和CIMRTS处理效果比较

这里为了更直观的让大家感受CIMRTS处理的结果,我们对比一下使用传统CesiumLab处理的效果。下面分别是使用CesiumLab小场景处理器和CIMRTS处理器时设置的参数(除了处理器选择不同,其他参数完全一致)

下面看一下结果的展示

从上面可以看出,处理的结果对比我们能得到结论:

1.两次处理的位置是一致的。

2.两次处理的效果是近似的,这里为什么说近似?之前在cimrts发布的文章里介绍过,cimrts最大的功能就是实时切片,在ceium引擎加载后可以调整材质,保证效果优于传统的切片方式。

3.CIMRTS对于模型优化的效果更好,两次加载的状态下,cimrts处理加载的显存占用(27MB)明显要低于小场景处理加载的显存占用(50MB)。

CesiumLab与CIMRTS的融合是我们降低产品使用门槛的第一步尝试,希望大家试用,遇到任何问题或者有好的建议及时给我们反馈,问题交给我们,我们来优化!希望我们更多的尝试就是让大家越来越便利的开始。


http://www.kler.cn/a/511293.html

相关文章:

  • 【Cadence tip】噪声仿真方法
  • [STM32 HAL库]串口空闲中断+DMA接收不定长数据
  • 考前64天 学习笔记 - 形成“习惯体系”进行最小启动
  • 【论文笔记】SmileSplat:稀疏视角+pose-free+泛化
  • 周末总结(2024/01/18)
  • 蓝桥杯训练—斐波那契数列
  • 学技术学英语:TCP的三次握手和四次挥手
  • 基于PSO粒子群优化TCN时间卷积神经网络时间序列预测算法matlab仿真
  • 代码随想录26
  • OpenCV相机标定与3D重建(60)用于立体校正的函数stereoRectify()的使用
  • 51c自动驾驶~合集48
  • 设计模式:责任链模式——行为型模式
  • 【从零开始入门unity游戏开发之——C#篇46】C#补充知识点——命名参数和可选参数
  • Markdown学习笔记(2)
  • C# 控制打印机:从入门到实践
  • 胶质母细胞瘤浸润的个性化预测:数学模型、物理信息神经网络和多模态扫描|文献速递-视觉大模型医疗图像应用
  • 机器学习——什么是代价函数?
  • BUUCTF_Web(October 2019 Twice SQL injection)
  • 【物联网】ARM核介绍
  • C++实现矩阵Matrix类 实现基本运算
  • Python网络自动化运维---SSH模块
  • 《HTML在网络安全中的多面应用:从防范攻击到安全审查》
  • Tarjan算法笔记
  • Py之cv2:cv2(OpenCV,opencv-python)库的简介、安装、使用方法(常见函数、图像基本运算等)
  • golang 在线词典
  • 【gin】gin中使用protbuf消息传输go案例