Cesium地图某级别的Tile可见性判断

本文详细介绍了Cesium中瓦片可见性的判断原理,涉及到地图级别精度计算、相机与瓦片间动态精度的确定以及屏幕空间误差分析。通过相机视锥高度、瓦片几何误差和最大屏幕空间误差的比较,决定瓦片的显示。同时探讨了瓦片面积、几何误差和内存占用之间的关系,以及在不同级别的瓦片切换时的平衡策略。
摘要由CSDN通过智能技术生成

Cesium中瓦片的可见性判断

        瓦片可见性判断是根据“地图切片时切片的精度”和“调度时瓦片与相机之间计算出来的精度”比较来判断的。

1、Cesium 地图某级精度

关于地图某级别的精度值是多少,在Cesium中的相关计算是

某级别精度 = 地球的短半轴周长 / ( 地图某一级别瓦片数量 * 瓦片的分辨率) ;

 2、相机与瓦片之间动态精度计算

3、原理分析 

   sseDenominator代表的是相机视锥近裁剪与相机能看见的视口高度之间的比例;

   设hs,ds为相机视角近裁剪处的比值hs/ds = 2*tan(fovy*0.5); s代表屏幕空间。

   设A = height / distance*sseDenominator代表着相机在瓦片处的视锥高度范围;

   设screenSpaceError = geometricError * A

                                     = geometricError * height/(distance*sseDenominator);

   如果设置了maximumScreenSpaceError = 16;

   如果screenSpaceError = geometricError * A  > maximumScreenSpaceError ;其中A代表了1米的几何在屏幕上占的像素数量,16代表了,1米的几何在屏幕上投影为16个像素,此处猜测最大屏幕误差为16,也就是说相机到达最精细的一级瓦片时1米大小的模型在屏幕上的投影大小。

screenSpaceError = geometricError * A  > maximumScreenSpaceError,如果相机不是在最精细的一级瓦片处应该怎么办呢,就是要降低A的大小,同时提高geometricError的大小,也就是相机在远处像近处移动时,A会变大,同时geometricError会变小,当geometricError * A的乘机达到均衡geometricError * A  > maximumScreenSpaceError时当前级别可见。

在考虑一下瓦片级别之间切换的情况,瓦片的面积一般会变小,按照常规的理解面积的大小与geometricError之间应该存在某种关系,

不妨设geometricError = S * X;其中S为面积,X不知道代表什么。

那么S * X * A > maximumScreenSpaceError;的过程代表1米几何体在屏幕上投影出16像素的范围;A在相机运动过程中是实时确定的,S面积是实时确定的,此处可以想象成1米的瓦片放大了S倍后变成了S大小的瓦片,针对比较大的瓦片geometricError相应也会比较大,因为大块的瓦片距离相机比较远就可以看清。不妨假设X为1米的大小的瓦片,S为将1米的瓦片放大了S倍。

在比较粗的一级向比较细的一级过度的时候,均衡每个细分瓦片的内存占用大小是比较合理的考量,所以细分后的子瓦片面积大小一般不痛,导致了几何误差一般也不同。

总结:瓦片在相机中投影成16像素的大小决定了,最终的显示,瓦片的面积大小决定了几何误差,瓦片占用内存的大小决定了子瓦片面积的大小。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值