Cesium 中实现影像贴 3Dtiles

Cesium 中实现影像贴 3Dtiles

Cesium 中我们经常使用的图层服务除了常见的遥感影像,还会包括一些矢量数据(如宗地范围、规划用地、道路信息等),这些图层服务通常经过 ArcGIS Server / GeoServer 之类的服务器渲染、切片供 Cesium 展示。

但在实际应用中会发现,这些图层服务的内容会被 3DTiles 遮盖(特别是渲染大片倾斜数据时),这个时候,如果我们想获取这些图层上面的信息,就必须将上层的 3DTiles 隐藏。如下图所示(没有合适的矢量图层,用 TileCoordinatesImageryProvider 代替)

在这里插入图片描述

影像有贴 3DTiles 选项吗?

在原生的 Cesium 中影像是无法设置贴 3DTiles 的

Cesium 的影像为什么没有贴 3DTiles 选项

如果稍微翻一下源码,可以很容易的发现,影像和地形是交给 Globe 对象去管理的,而 3DTilesprimitiveentity 这类物体则是由 Scene 管理。

Viewer 对象中,GlobeScene 是同级别的存在,所以影像和 3DTiles 根本不属于同一套管理体系,Cesium 自然无法提供影像贴 3DTiles 选项。

实现影像贴 3Dtiles

了解了为什么原生 Cesium 无法实现影像贴 3DTiles 的原因,那么解决的方向就明确了。

做法是在 Scene 中创建一个对象管理影像,使得影像可以和 3DTiles 由同一个对象管理。那么怎么做呢?

翻看源码,可以发现在 Globe 中影像和地形实际上是由 QuadtreePrimitive 对象来进行统一管理的。这是一个复杂的渲染四叉树的 Primitive。详细渲染过程参考文章 最复杂的地球皮肤 影像与地形的渲染与下载过程

因此我们只需要将 QuadtreePrimitive 改写成普通 Primitive 的形式,保留影像操作的部分,并且将地形的部分删除,转而将影像的载体修改为 GroundPrimitive 即可。

简单的效果展示(没有合适的矢量图层,用 TileCoordinatesImageryProvider 代替)

在这里插入图片描述

实际效果展示

Cesium中实现影像贴3Dtiles

原文链接

Cesium中实现影像贴3Dtiles

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值