Cesium重采样

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

那么问题就是:Cesium是否在显式地进行重采样?如果是,那么它使用的技术是什么?如果不是,那么Cesium依赖于哪些绘图包和函数来将图像文件渲染到地图上?(我可以尝试深入挖掘并确定这些图层可能正在使用或可用的技术。)

1个回答

2
更新:哇,我的原始答案完全误解了您的问题,因此我从头开始重写。
通过新的编辑,很明显您的问题是关于在渲染时如何对屏幕进行图像重采样。这些图像是WebGL中的纹理贴图,将它们快速地呈现到屏幕上的过程是在图形卡硬件上实现的。CPU上的软件无法执行将单个像素映射到屏幕上的操作,这就是为什么我们需要硬件加速的3D卡的原因。
现在是坏消息:这些硬件支持最近邻、线性和映射映射。就这些了。 3D图形卡不使用任何更高级的插值方法,因为它需要在一秒钟内完成,以使帧率尽可能高。
“Mapmapping”在@gman的文章WebGL 3D Textures中有很好的描述。这是一篇很长的文章,但可以搜索“mipmap”,并跳到他对此的描述。基本上,单个图像在渲染之前被缩小为较小的图像,因此可以在渲染时选择适当大小的起点。但最终仍然需要将其映射到屏幕上,而且可以看到,选择只有NEAREST或LINEAR两种。

引用@gman的文章:

您可以通过为每个纹理设置纹理过滤来选择WebGL的操作方式。有6种模式:
  • NEAREST = 从最大mip中选择1像素
  • LINEAR = 从最大mip中选择4个像素并混合它们
  • NEAREST_MIPMAP_NEAREST = 选择最佳mip,然后从该mip中选择一个像素
  • LINEAR_MIPMAP_NEAREST = 选择最佳mip,然后从该mip中选择4个像素并混合它们
  • NEAREST_MIPMAP_LINEAR = 选择最佳的2个mip,从每个mip中选择1个像素并混合它们
  • LINEAR_MIPMAP_LINEAR = 选择最佳的2个mip,从每个mip中选择4个像素并混合它们
我想我能给你的最好消息是Cesium使用了其中最好的,LINEAR_MIPMAP_LINEAR来进行自己的渲染。如果你有对图像插值更耗时的严格要求,那么这意味着你需要不使用实时3D硬件加速的图形卡,因为在实时渲染过程中无法进行拉格朗日图像插值。

不,我并不关心对象的运动或任何动态的事情。这个问题更基本,涉及到如何渲染单独的帧。我会编辑问题,因为这个评论框太短了... - Randy Thompson
感谢您提供的信息,emackey。这正是我所担心但也有些预料到的。 - Randy Thompson
对我来说,NGA基于这些理由排除所有实时渲染应用程序似乎是难以理解的。我可以想象要求将源图像输入到渲染系统中,但纹理光栅化只是现代图形硬件的一个事实。您确定所阅读的要求明确包括3D光栅化在范围内吗?因为在这种情况下,您被限制使用仅软件渲染,这完全是荒谬的。 - emackey
1
当我说“NGA已经认为这是最适合它的程序和分析工具”的时候,我有点过于概括了“要求”。这个要求是针对一个特定的提案,具有特定的工具和用例,其中没有包括“实时”分析。想象一下图像分析师仔细研究图像内容,查看像素。除了这些工具之外,我们使用Cesium将多个数据源一起显示,以增加上下文。我认为只要我们为2D分析工具提供Lagrange,那么对于3D Cesium多智能体的插值使用什么可能并不重要。 - Randy Thompson
这让人感到宽慰。谢谢! - emackey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接