我正在尝试设计一个“低多边形”地形渲染器,它采用高度贴图并为每个点(而不是像素/顶点)绘制一个平铺/四边形。
我找不到将四边形“缝合”在一起的方法,以便四边形的中心位于高度图中指定的高度。
到目前为止,我所做的只是将一个顶点设置为等于“当前”四边形的高度,其余顶点设置为相邻四边形的高度,例如:
Quad @(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 :目前四边形的顶点有一定的高度,我希望四边形的质心代替这个高度。
答案 0 :(得分:2)
集
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
即。使用双线性插值在半像素位置处对高度图进行采样。这与盒子模糊高度图具有相同的效果,这不是一件好事。您可能使用不同的内核,但基本上您无法做得更好。
典型的解决方案是将网格顶点放在高度贴图纹理像素的中心,这样就可以保留高度图分辨率,而不会有任何空间变化。