我最近读了一篇论文《多层B样条插值的散乱数据》,链接为http://www.postech.ac.kr/~leesy/ftp/tvcg97.pdf。 考虑一个表面z(x,y),xmin≤x≤xmax,ymin≤y≤ymax。接下来考虑一个4x4的“控制”点网格(黑色):P0使得表面覆盖中央单元格: 任何表面(黄色)上的任意点(红色)的z值可以近似为控制点中的值的加权和。权重是到控制点的距离。 接下来将中心单元格分成2x2个单元格,并在表面周围添加1个单元格边框。结果是控制网格P1(蓝色)。通过将P1中最接近红色点的4x4个控制点的加权距离总和添加到上述初始近似值中,可以找到更准确的红点的z值近似值。 同样,我们可以反复减半单元格的大小并创建新的控制网格:P2、P3、...Pn。每个网格都是一个新的“级别”。 每个新网格都会增加表面的更多细节。控制网格变得越来越稀疏;只有当表面相对于其周围点发生突然变化时,值才与0不同。 结果是可能存储方案,应该能够使用相对较少的内存存储具有大量细节的表面。 如何在LOD算法中使用它? 对于每个表面的LOD瓦片,我想在GPU上(最好使用OpenGL)使用控制点进行三角剖分,该级别由瓦片距离相机的远近确定。 希望能够以最小的内存存储非常详细的表面,并且可以从不同角度快速缩放和查看。 有任何关于如何做到这一点的想法或指针吗?
你正在寻找一个视角相关的LOD选择因子,David Luebke 的 书中介绍了几种技术。 你使用的算法是渐进式的,适用于经典技术(如渐进网格)的任何LOD都适用于你的算法。 请注意,如果你用这个渐进重建算法来进行纹理映射而不是网格操作,你将面临与Perlin 噪音相同的滤波情况。