使用四边形

时间:2017-06-10 17:47:02

标签: opengl geometry

我正在尝试设计一个“低多边形”地形渲染器,它采用高度贴图并为每个点(而不是像素/顶点)绘制一个平铺/四边形。

我找不到将四边形“缝合”在一起的方法,以便四边形的中心位于高度图中指定的高度。

到目前为止,我所做的只是将一个顶点设置为等于“当前”四边形的高度,其余顶点设置为相邻四边形的高度,例如:

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 :目前四边形的顶点有一定的高度,我希望四边形的质心代替这个高度。

1 个答案:

答案 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

即。使用双线性插值在半像素位置处对高度图进行采样。这与盒子模糊高度图具有相同的效果,这不是一件好事。您可能使用不同的内核,但基本上您无法做得更好。

典型的解决方案是将网格顶点放在高度贴图纹理像素的中心,这样就可以保留高度图分辨率,而不会有任何空间变化。