【问题标题】:Space between 2 vertices on a heightmap高度图上 2 个顶点之间的空间
【发布时间】:2012-12-16 16:17:44
【问题描述】:

我正在研究一个由 Perlin Noise、Java 和 LWJGL 生成的无限世界。但是我有一个问题,有点难以解释,所以我做了一个视频:http://youtu.be/D_NUBJZ_5Kw 显然问题是所有地面之间的黑色空间。

我已经尝试将所有值设为双精度而不是浮点数,但这并没有解决问题。

这是我正在使用的一段代码:

float height2, height = (float)getHeight(x, y);

height2 = (float) ((getHeight(x-1, y+1) + height) / 2);
vertexhelper.addVertexColorAndTexture(x, height2, y+1, r, g, b, a, 0f, 1f);

height2 = (float) ((getHeight(x+1, y+1) + height) / 2);
vertexhelper.addVertexColorAndTexture(x+1, height2, y+1, r, g, b, a, 1f, 1f);

height2 = (float) ((getHeight(x+1, y-1) + height) / 2);
vertexhelper.addVertexColorAndTexture(x+1, height2, y, r, g, b, a, 1f, 0f);

height2 = (float) ((getHeight(x-1, y-1) + height) / 2);
vertexhelper.addVertexColorAndTexture(x, height2, y, r, g, b, a, 0f, 0f);

我在初始化一个带有 x->16 和 y->16 的块时循环遍历这个。 vertexhelper 是我创建的一个类,它只是将所有内容放在一个数组中。

(我在这里使用浮点数,但那是在做数学之后,所以这应该不是问题)

【问题讨论】:

  • 如果您将瓷砖涂成绿色并且不使用任何纹理,是否也会发生这种情况?
  • @Matthias 是的,没有纹理我也有同样的问题。

标签: java opengl lwjgl


【解决方案1】:

我必须在高度图上占据 4 个位置而不是 2 个。所以不是

height2 = (float) ((getHeight(x-1, y-1) + height) / 2);

我不得不使用

height2 = (float) ((getHeight(x, y-1) + getHeight(x-1, y) + getHeight(x-1, y-1) + height) / 4);

这样就解决了。

【讨论】:

  • 请记住,您可以接受自己的答案(不会获得代表),将其标记为已回答。
  • @datenwolf 我知道,但仅在 2 天后。谢谢
猜你喜欢
  • 2018-10-24
  • 1970-01-01
  • 2014-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多