我正在尝试设计一个“低多边形”地形渲染器,它接受高度图并为每个点(而不是像素/顶点)绘制一个图 block /四边形。
我在寻找一种将四边形“缝合”在一起以使四边形的中心位于高度图中指定的高度的方法时遇到了一些麻烦。
到目前为止,我所做的只是简单地将一个顶点设置为“当前”四边形的高度,并将其余顶点设置为相邻四边形的高度,例如:
四边形 @ (x, y),高度图的高度为“height(x,y)”:
B C
|---| y
| | ^
|---| |
A D --> x
顶点高度:
heightA = height(x, y)
heightB = height(x, y + 1)
heightC = height(x + 1, y + 1)
heightD = height(x + 1, y)
虽然这确实将四边形连接在一起,但这意味着四边形的右上角顶点 (A) 具有指定的高度而不是中心高度。
tl;dr:当前四边形的顶点有一定的高度,我希望四边形的质心具有这个高度。
最佳答案
设置
heightA = (height(x-1, y-1) + height(x-1, y) + height(x, y-1) + height(x, y))/4
heightB = (height(x-1, y) + height(x-1, y+1) + height(x, y) + height(x, y+1))/4
heightC = (height(x, y) + height(x, y+1) + height(x+1, y) + height(x+1, y+1))/4
heightD = (height(x, y-1) + height(x, y) + height(x+1, y-1) + height(x+1, y))/4
即使用双线性插值在半像素位置对高度图进行采样。这与对高度图进行框模糊具有相同的效果,这并不是一件好事。您可能会使用不同的内核,但本质上您无法做得更好。
典型的解决方案是将网格顶点放置在高度图纹理像素的中心,这样您就可以保留高度图分辨率而无需任何空间偏移。
关于opengl - 使用四边形渲染高度图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44476312/