我知道铯提供了几种不同的插值方法,包括线性(或2D中的双线性)、Hermite和Lagrange。我们可以使用这些方法重采样点集和/或创建近似采样点的曲线,等等。
然而,我的问题是,当铯在呈现3D场景时,当用户正在缩放/平移时,铯使用内部的方法是什么?这不是程序员可以访问栅格等的情况,所以我们不能直接进入其中,直接调用插值函数。铯正在尽快完成自己的工作,以响应用户控制。
我的预感是默认是双线性的,但我不知道,也不可能找到任何明确说明使用什么的文档。此外,我是否可以强迫铯在这些活动中使用一种特定的重采样方法,例如拉格朗日重采样?事实上,这就是我需要做的:强迫铯在场景渲染过程中使用拉格朗日重采样。如有任何建议,将不胜感激。
编辑:下面是对问题…的更详细描述
假设我用铯建立了一个三维地球模型,其中包括一个灰度图像芯片,位于模型地球表面的适当位置,然后在铯窗口中显示结果。如果视点离地球表面足够远,则窗口的图像芯片部分显示的像素数将少于图像芯片源中可用的实际像素数。会出现一些下采样现象。同样,如果用户反复放大,则在图像芯片上显示的像素数将超过图像芯片源中的实际像素数。会发生一些新的抽样。一般来说,每当铯绘制包含像素数据源的帧时,就会发生重采样。它可能是最近的邻居(怀疑),线性(可能),立方,拉格朗日,Hermite,或任何一个不同的重采样技术。在我的公司,我们使用铯作为一个大型政府计划的一部分,要求使用拉格朗日重采样,以确保图像质量。( NGA认为这是其程序和分析工具的最佳选择,他们已经将其作为一项合规要求。因此,我们别无选择。
因此,问题是:当用户与模型交互时,例如放大,绘图过程不在程序员的控制范围之内。重采样要么发生在铯层本身(希望如此),要么发生在更低的层(例如,铯可能依赖的WebGL函数)。所以我不知道这个重采样用的是哪种技术。更糟糕的是,如果这种技术不是拉格朗日,那么我就不知道如何改变它。
所以问题是:铯是否显式地进行重采样?如果是,那么它使用的是什么技术?如果不是,那么铯依赖什么绘图包和函数将图像文件呈现到地图上?(我可以尝试挖掘并确定这些层可能使用的技术和/或可用的技术。)
发布于 2015-05-12 18:02:34
更新:哇,我原来的答案是对你的问题完全误解了,所以我从头开始重写。
有了新的编辑,很明显,您的问题是如何重放图像的屏幕,同时呈现。这些图像是WebGL中的文本映射,快速将它们送到屏幕的过程是在硬件上,在显卡上实现的。CPU上的软件性能不足以一次将单个像素映射到屏幕上,这就是为什么我们有硬件加速的3D卡。
坏消息是:这个硬件支持最近的邻居、线性映射和映射。就这样。3D显卡不使用任何花哨的插值,因为它需要在一秒钟内完成,以保持尽可能高的帧速率。
@gman在他的文章WebGL三维纹理中很好地描述了Mapmapping。这是一篇很长的文章,但是要搜索"mipmap“这个词,然后跳到他对这个词的描述。基本上,在渲染之前,单个图像被还原成较小的图像,因此可以在渲染时选择适当大小的起始点。但是总有一个到屏幕的最终映射,正如你所看到的,选择是最近的或者是线性的。
引用@gman的文章如下:
您可以通过设置每个纹理的纹理筛选来选择WebGL做什么。有六种模式
NEAREST
=从最大的mip中选择一个像素LINEAR
=从最大的mip中选择4个像素并将它们混合NEAREST_MIPMAP_NEAREST
=选择最佳的mip,然后从该mip中选择一个像素LINEAR_MIPMAP_NEAREST
=选择最佳的mip,然后从该mip混合4个像素NEAREST_MIPMAP_LINEAR
=选择最佳的2个mips,从每个像素中选择1个像素,将它们混合LINEAR_MIPMAP_LINEAR
=选择最佳的2 mips。从每个像素中选择4个像素,将它们混合起来我想我能给你的最好的消息是LINEAR_MIPMAP_LINEAR
自己做渲染。如果你有一个更耗时的图像插值的严格要求,这意味着你有一个要求,不使用实时3D硬件加速显卡,因为没有办法做拉格朗日图像内插在实时渲染。
https://stackoverflow.com/questions/30194496
复制相似问题