Mars3D与mars3d-cesium版本间兼容造成3dtiles和gltf数据处理相关记录

说明:

1.在引入Mars3D SDK后正常可以在F12打印的信息中可以看到Mars3D和Cesium版本信息。

2.在项目的package.json文件中同样可以看到安装后的版本号。

Mars3D对Cesium版本对应关系:

1.正常情况下mars3d依赖的cesium均是最新版本,并且对cesium版本无特殊要求,版本间均是兼容的,因为cesium本身的变更造成一些版本间不兼容情况,目前版本依赖关系如下:

2.Cesiumv1.102(2023-02-01)默认改为 WebGL2 渲染,与之前版本的shader语法部分不兼容。 具体详情参看1.102更新日志 (https://github.com/CesiumGS/cesium/blob/1.102/CHANGES.md),

相关版本依赖关系是:

Mars3D v3.4.x及之前 版本,须使用 mars3d-cesiumv1.96及之前的版本 (mars3d-cesium 1.97-1.100 未做发布)

Mars3D v3.5.x及之后 版本,须使用 mars3d-cesiumv1.104及之后的版本
处理方式☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

无法兼容,3.4之前版本需要用1.102之后版本mars3d-cesium时,需要shader需要改写为 WebGL2 语法,或者构造Map时scene参数下加requestWebgl1: true参数。

3.Cesiumv1.97(2022-09-01)的gltf/3dtiles与之前版本完全不兼容,采用了新的glTF架构代码重写,影响3dtiles部分功能无法使用和部分gltf/3dtiles数据报错。 具体详情参看1.97更新日志 (opens new window),

相关版本依赖关系是:

Mars3D v3.4.x及之前 版本,须使用 mars3d-cesiumv1.96及之前的版本 (mars3d-cesium 1.97-1.100 未做发布)

Mars3D v3.5.x及之后 版本,须使用 mars3d-cesiumv1.104及之后的版本

如果使用其他版本会造成的问题(除此之外不影响)

模型裁剪、压平等功能无法使用;

建筑物特效等涉及3dtiles模型的地方可能无效。

部分shader需要改写为 WebGL2 语法,或者构造Map时scene参数下加requestWebgl1: true参数
处理方式☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

无法兼容,但您如果对模型编辑等功能没有特殊要求,可以混用。

4.Cesiumv1.92(2022-04-01)的Promise与之前版本不兼容,具体可以参考其官方说明 (opens new window),

与之对应的是Mars3Dv3.3.x(内部依赖Cesiumv1.92+),所以针对不同情况的处理方式不同。

#出现不兼容的场景

Mars3D v3.2.x及之前 版本如果需要使用 Cesiumv1.92及之后版本时

Mars3D v3.3.x及之后 版本如果需要使用 Cesiumv1.91及之前版本时

运行后浏览器提示找不到Cesium命名空间之类错误时
处理方式☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

可以在引入Cesium后,引入/mars3d/plugins/compatible/目录下的2个兼容处理文件cesium-version (opens new window)和cesium-when (opens new window)即可, 如下所示:

mars3d: [

"Cesium/Widgets/widgets.css", //cesium

"Cesium/Cesium.js",

"mars3d/plugins/compatible/cesium-version.js", //cesium版本间兼容处理

"mars3d/plugins/compatible/cesium-when.js",

"mars3d/mars3d.css", //mars3d

"mars3d/mars3d.js",

]

5.加载3dtiles数据的时候,发现存在报错:

message: 'The tileset must be 3D Tiles version 0. or 1.0., stack: 'Error,提示是3dtiles数据数据的版本原因。

此时查看了cesium版本是1.83 mars版本3.0.38,那么就需要在使用cesiumlab处理数据的时候勾选tilset1.0,因为cesium版本用不了1.1版本的3dtiles数据。

cesium用1.91版本之前使用cesiumlab处理3dtiles数据的时候都需要勾选tilset1.0。

3dtiels数据在使用cesiumlab处理的时候,都需要与cesium版本相匹配。

Mars3D 三维可视化平台 | 火星科技 | 地图开发

相关推荐
IT_陈寒2 小时前
Java中equals方法比了个寂寞?原来这才是正确的重写姿势
前端·人工智能·后端
默_笙2 小时前
🚓 分诊台与拆题术:让 RAG 学会判断和规划
前端·javascript
CopyCode2 小时前
用 AI 迁项目有多爽?我把 Webpack 迁 Vite 的全过程记下来了
前端·架构
去伪存真2 小时前
Electron 自动化发布指南:GitHub Actions 跨平台打包全纪录
前端·electron
计算机魔术师2 小时前
OpenAI智能体失控闯进美国政府网站,53张用户图片外泄背后
前端
颜进强2 小时前
14 · NestJS ExecutionContext 执行上下文:守卫、拦截器、过滤器拿到的"同一个 context",为什么能力不一样?
前端·后端·ai编程
程序员Flycan2 小时前
🚀 跨域终结者:前端代理服务器(Proxy)原理解析与配置总结
前端
怕浪猫2 小时前
顶级模型一句话,AI 写出了能玩的 QQ飞车
前端·面试·github
huakoh2 小时前
MCP 报错分不清?先看响应里是 result 还是 error
前端
呃呃呃呃ex2 小时前
10. 现代前端工程化:ES6 React 项目实战与原理解析
前端·javascript