geometric error 计算
参考文章:简单粗暴计算公式
链接: 简单粗暴计算公式
链接: 原理介绍
链接: 原理介绍
内容总结
error = (geometricError * height) / (distance * sseDenominator);
瓦片的渲染时error = geometricError * 渲染窗体高度 / (瓦片中心到相机距离 * sseD)
-
sseD视锥体的垂直角度系数,一般根据屏幕宽高比计算赋值,我们可以暴力固定为0.5
height是窗体高度,现在屏幕一般是1920 * 1080,高分是2560 * 1440,实际上chrome里不是全屏,我们可以先固定为1024,或者1000吧 -
error > _maximumScreenSpaceError 则渲染,否则进入下一层级
-
_maximumScreenSpaceError默认为16,是可传参数
-
最终 error = (geometricError * height) / (distance * sseDenominator);
-
当 (geometricError * height) / (distance * sseDenominator) < 16则进入下一层级
geometricError可以与distance做方程
geometricError = 16 * distance * sseDenominator / height
= 16 * distance * 0.5 / 1024
≈ distance * 8 / 1000
≈ distance * 0.008
≈ distance / 125.0
即125.0是一个geometricError与相机到瓦片中心距离的系数
即我们如果使用574.4880608119186瓦片的包围直径,则在
distance = 574 * 125 = 71,750 的距离就显示该瓦片了(7万米高空看600米还是多了)
当两千米我们想进入下一个精度,则tileset的root的geometricError设置为
geometricError = 2000 / 125.0 = 16.0
children为叶子不分裂则geometricError = 0.0,