3

我最近阅读了论文Scattered Data Interpolation with Multilevel B-Splines

考虑一个曲面 z(x,y),xmin<=x<=xmax,ymin<=y<=ymax。接下来考虑一个 4x4 的“控制”点(黑色)网格:P0 使表面覆盖中心单元:

在此处输入图像描述

表面(黄色)上任何点(红色)的 z 值可以近似为控制点中值的加权和。权重是到控制点的距离。

接下来将中心单元格分成 2x2 单元格,并在表面周围添加 1 个单元格边框。结果是控制网格 P1(蓝色)。通过将 P1 中 4x4 最近控制点的距离加权和与上述初始近似值相加,可以找到红点中 z 值的更准确近似值。

同样,我们可以重复将单元格的大小减半并创建新的控制网格:P2、P3、...Pn。每个网格都是一个新的“级别”。

每个新网格都会为表面添加更多细节。控制网格变得越来越稀疏;这些值仅与 0 不同,其中表面相对于其周围点突然变化。

结果是可能的存储方案应该能够以相对较少的内存存储具有大量细节的表面。

这如何用于细节级别算法?

对于表面的每个 LOD 瓦片,我想使用 GPU 上特定级别的控制点进行三角测量(最好使用 OpenGL),级别由瓦片与相机的距离决定。

希望这样;可以使用最少的内存存储令人难以置信的详细表面,并从不同角度查看并快速放大/缩小。

关于如何做到这一点的任何想法或指示?

4

2 回答 2

1

您正在寻找依赖于视图的 LOD 选择因子,David Luebke 的LOD书中描述了几种技术。

您使用的算法是渐进式的,任何适用于渐进式网格等经典技术的 LOD 都适用 于您的算法。

请注意,如果您将这种渐进式重建算法用于纹理映射而不是网格,您将拥有与 Perlin噪声完全相同的过滤情况。

于 2013-08-10T03:26:38.267 回答
1

OpenGL 4.0 及更高版本,支持几何着色器。它们可用于动态生成镶嵌图元。因此,您会将平铺和控制点信息信息传递给着色器,在那里您将进一步细分您的图元。

于 2013-08-16T16:59:19.103 回答