在引入Mars3D SDK后正常可以在F12打印的信息中可以看到Mars3D和Cesium版本信息。
# Mars3D对Cesium版本对应关系
正常情况下mars3d依赖的cesium均是最新版本,并且对cesium版本无特殊要求,版本间均是兼容的,因为cesium本身的变更造成一些版本间不兼容情况,目前版本依赖关系如下:
mars3d版本 | Cesium版本 | 说明 |
---|---|---|
v3.5 - 至今 | v1.107及之后,如果版本不匹配F12会打印提示 | 重写glTF架构、改用WebGL2渲染 |
v3.3 - v3.4 | v1.92 至 v1.96 | 改为原生Promise |
v3.0 - v3.2 | v1.91 及之前 | |
v1.0 - v2.0 | v1.91 及之前 | 老版本 |
当npm环境使用mars3d时需要指定mars3d-cesium的版本,可以这样操作: 搜下 package.json 中 "mars3d-cesium" 后 ,改下
"mars3d-cesium": : "~1.95.0",
【注意不要^】,删除node_modules后重新npm install安装即可
# Ceiusm 1.102+ 与之前版本不兼容 - 2023-02-01
Cesiumv1.102
(2023-02-01)默认改为 WebGL2 渲染,与之前版本的shader语法部分不兼容。
具体详情参看1.102更新日志 (opens new window),
相关版本依赖关系是:
- 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
参数。
# Ceiusm 1.97+ 与之前版本不兼容 - 2022-09-01
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
参数
# 处理方式
无法兼容,但您如果对模型编辑等功能没有特殊要求,可以混用。
# Ceiusm 1.92+ 与之前版本不兼容 - 2022-04-01
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",
]
2
3
4
5
6
7
8
# Ceiusm 1.83+ 仅支持KTX2纹理的模型 - 2021-07-01
Ceiusm在1.83版本(2021-07-01)中正式放弃对 KTX1 和 Crunch 纹理的支持,仅支持KTX2 , 所以在用1.83+版本加载KTX1材质的模型时会出现模型无法展示的问题。
# 处理方式
需要将Cesium版本切到1.79版本进行加载KTX1纹理的模型,或者使用最新版本的相关数据处理工具重新转换处理数据。
mars3d: [
"Cesium-1.79/Widgets/widgets.css", //cesium 1.79版
"Cesium-1.79/Cesium.js",
"mars3d/plugins/compatible/cesium-version.js", //cesium版本间兼容处理
"mars3d/plugins/compatible/cesium-when.js",
"mars3d/mars3d.css", //mars3d 最新版
"mars3d/mars3d.js",
]
2
3
4
5
6
7
8
# Mars3D V3.x与之前老版本间不兼容 - 2021-03-01
v3.x
版本与v1.x
和v2.x
之前老版本之间是不兼容(API结构不同),无法兼容平滑的升级,因为v3所有代码是按最优雅的方式从零开始编写设计进行搭建的,不是基于之前的老版本修改的。
老版本所有功能在新版都支持,并且v3版增加了很多新功能。
# 处理方式
二者不兼容,需要升级到V3后,使用V3的功能,替换mars3d+cesuim和依赖的库,参考v3功能示例代码,对运行报错处按示例代码进行修改处理,通用性修改可以批量替换处理。