我知道Cesium提供了几种不同的插值方法,包括线性(或二维双线性)、Hermite和Lagrange。可以使用这些方法对点集进行重新采样和/或创建近似采样点的曲线等。
然而,我的问题是当Cesium渲染3D场景并且用户在全屏缩放/平移时,它内部使用的是哪种方法?这不是程序员可以访问光栅等的情况,因此不能直接调用插值函数。Cesium正在尽快响应用户控制而做自己的事情。
我猜测默认是双线性,但我不确定,也找不到明确说明使用了什么的文档。此外,是否有一种方法可以强制Cesium在这些活动期间使用特定的重采样方法,例如Lagrange重采样?实际上,这就是我需要做的:强制Cesium在场景渲染期间使用Lagrange重采样。任何建议将不胜感激。
编辑:以下是问题的更详细描述…
假设我使用Cesium设置地球的3D模型,包括其正确位置上的灰度图像芯片,然后在Cesium窗口中显示结果。如果视点距离地球表面足够远,则窗口中显示的图像芯片部分的像素数量将少于图像芯片源中实际可用的像素数量。将发生一些下采样。同样,如果用户反复放大,则会出现跨越图像芯片的显示像素比图像芯片源中实际像素数量更多的情况。将进行一些上采样。通常,每次Cesium绘制包含像素数据源的帧时都会进行重新采样。它可以是最近邻(不太可能),线性(可能),立方体,Lagrange,Hermite或许多不同的重采样技术之一。在我们公司,我们正在使用Cesium作为一个大型政府项目的一部分,该项目要求使用Lagrange重采样来确保图像质量。 (NGA认为这是其计划和分析师工具的最佳选择,并将其作为合规要求。所以我们别无选择。)
因此,问题在于:当用户与模型交互时,例如缩放时,绘图过程不在程序员的控制下。重采样要么发生在Cesium层本身(希望如此),要么甚至在更低的层(例如,Cesium可能依赖的WebGL函数)。因此,我不知道用于此重采样的技术是哪种。更糟糕的是,如果该技术不是Lagrange,则我不知道如何更改它。
然而,我的问题是当Cesium渲染3D场景并且用户在全屏缩放/平移时,它内部使用的是哪种方法?这不是程序员可以访问光栅等的情况,因此不能直接调用插值函数。Cesium正在尽快响应用户控制而做自己的事情。
我猜测默认是双线性,但我不确定,也找不到明确说明使用了什么的文档。此外,是否有一种方法可以强制Cesium在这些活动期间使用特定的重采样方法,例如Lagrange重采样?实际上,这就是我需要做的:强制Cesium在场景渲染期间使用Lagrange重采样。任何建议将不胜感激。
编辑:以下是问题的更详细描述…
假设我使用Cesium设置地球的3D模型,包括其正确位置上的灰度图像芯片,然后在Cesium窗口中显示结果。如果视点距离地球表面足够远,则窗口中显示的图像芯片部分的像素数量将少于图像芯片源中实际可用的像素数量。将发生一些下采样。同样,如果用户反复放大,则会出现跨越图像芯片的显示像素比图像芯片源中实际像素数量更多的情况。将进行一些上采样。通常,每次Cesium绘制包含像素数据源的帧时都会进行重新采样。它可以是最近邻(不太可能),线性(可能),立方体,Lagrange,Hermite或许多不同的重采样技术之一。在我们公司,我们正在使用Cesium作为一个大型政府项目的一部分,该项目要求使用Lagrange重采样来确保图像质量。 (NGA认为这是其计划和分析师工具的最佳选择,并将其作为合规要求。所以我们别无选择。)
因此,问题在于:当用户与模型交互时,例如缩放时,绘图过程不在程序员的控制下。重采样要么发生在Cesium层本身(希望如此),要么甚至在更低的层(例如,Cesium可能依赖的WebGL函数)。因此,我不知道用于此重采样的技术是哪种。更糟糕的是,如果该技术不是Lagrange,则我不知道如何更改它。
那么问题就是:Cesium是否在显式地进行重采样?如果是,那么它使用的技术是什么?如果不是,那么Cesium依赖于哪些绘图包和函数来将图像文件渲染到地图上?(我可以尝试深入挖掘并确定这些图层可能正在使用或可用的技术。)