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

本文主要是介绍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 三维可视化平台 | 火星科技 | 地图开发

这篇关于Mars3D与mars3d-cesium版本间兼容造成3dtiles和gltf数据处理相关记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/588513

相关文章

MySQL重复数据处理的七种高效方法

《MySQL重复数据处理的七种高效方法》你是不是也曾遇到过这样的烦恼:明明系统测试时一切正常,上线后却频频出现重复数据,大批量导数据时,总有那么几条不听话的记录导致整个事务莫名回滚,今天,我就跟大家分... 目录1. 重复数据插入问题分析1.1 问题本质1.2 常见场景图2. 基础解决方案:使用异常捕获3.

Java使用SLF4J记录不同级别日志的示例详解

《Java使用SLF4J记录不同级别日志的示例详解》SLF4J是一个简单的日志门面,它允许在运行时选择不同的日志实现,这篇文章主要为大家详细介绍了如何使用SLF4J记录不同级别日志,感兴趣的可以了解下... 目录一、SLF4J简介二、添加依赖三、配置Logback四、记录不同级别的日志五、总结一、SLF4J

在Spring Boot中浅尝内存泄漏的实战记录

《在SpringBoot中浅尝内存泄漏的实战记录》本文给大家分享在SpringBoot中浅尝内存泄漏的实战记录,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录使用静态集合持有对象引用,阻止GC回收关键点:可执行代码:验证:1,运行程序(启动时添加JVM参数限制堆大小):2,访问 htt

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE