问题标签 [heightmap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
shader - 漫射光的 HLSL 高度图地形法线重新计算
我需要将漫反射光应用于基于高度图的地形,但我不知道如何重新计算法线。着色器代码: http: //pastebin.com/S8hQm67D
c# - 如何匹配连续二维数组的边缘并平滑它们(高度图)
这个问题让我发疯,我已经搜索并加厚但无法解决。我有一些 2D 浮点数组 [,] (顺便说一句,我使用的是 C#),并且总是放在一起形成一个正方形。有 1,4,9,16... 数组。每个二维浮点数组都代表一个高度图,因此它们是 129x129、513x513、1025x1025 ......并且它们都是相同的。我通过高度图文件中的算法将一些值导入数组。高度图是 8 位原始的,所以我在高度图中得到了一个阶梯状的外观,因为只有 256 种灰色阴影。现在我在每个数组中使用平滑算法(这里的算法:http: //nic-gamedev.blogspot.com.es/2013/02/simple-terrain-smoothing.html) 看起来不错,但是,它应用于每个数组,因此它们之间的边界不匹配,并且在将数组实现到地形时,它们之间存在间隙。
我已经考虑过各种解决方案,其中一种是将阵列连接成一个大阵列并对其进行平滑处理,但我不想使用这种技术,因为我可能拥有大量地形,而且我需要一个 gigantinc 阵列。
所以......关于如何做到这一点的任何想法?请这是我的第一个问题,因为我不知道该怎么做。问我是否需要更多信息,对不起我的英语。
编辑:
插图:
java - Lwjgl 如何简化高度图以获得更高的 fps?
我对我的游戏的fps有点失望。我还处于游戏开发的初期。当我第一次开始游戏时,我得到了大约 350 fps。在我向程序添加了高度图和更多代码之后,fps 下降是否合乎逻辑。现在我得到了 39 fps。我还处于起步阶段,fps已经很低了。我想知道当我完成项目后会发生什么,我认为 fps 会太低以至于令人恼火。我知道我对程序的要求很高,高度图是个大问题。地图的面积为 200 * 200 个顶点,每个顶点都有一个高度。200 * 200 = 40000 个顶点,每帧。我正在考虑简化地图。我的想法是创建一种简化整个高度图的方法。每个 4 个顶点属于一个四边形。当相邻的两个或多个四边形在每个顶点上具有相同的高度时,它们可以合并为一个四边形。关键是应该有更少的顶点。(我认为)
我将展示我的高度图的一些示例代码。
有没有人有这方面的经验?是否有任何想法或改进,我的做法是否正确?提前致谢。
heightmap - 基于高程数据在 C# 中创建高度图
我最近访问了一个网站 http://www.daftlogic.com/sandbox-google-maps-find-altitude.htm
这给了我任何地球位置的每个点的高程数据。现在我想用 C# 构建一个桌面应用程序,使用 google maps api 或其他方式,用户将在其中搜索位置并显示该位置的图像,用户可以在其中放大或缩小并选择所需区域。选择后,该工具将获取所选区域内每个点的高程数据,并在该点创建相应的颜色,使最高点为白色,最低点为黑色,然后将数据转换为图像。格式。所以如果我能做到这一点,我基本上可以在几秒钟内创建高度图。
谁能告诉我如何实现这一目标?我不知道如何获取选定区域中每个点的高程数据,以及如何从该数据计算和创建彩色图像。
谢谢。
opengl - OpenGL:从高度数组中绘制环境的最佳方法?
所以我正在编写一个带有高度映射的openGL程序来制作一个3D户外环境。与所有高度映射一样,每个点在 x&z 轴上与其相邻点的距离相同,但每个顶点的 y 轴不同,具体取决于程序读取的高度图。
到目前为止,我的程序将读取存储在高度图中,并存储在大小等于 (image_width)*(image_height) 的 y 高度数组中。我的问题是,在给定这些数据的情况下,绘制四边形环境的最有效方法是什么?
我认为以某种方式使用 glDrawArrays 是答案,但最初没有任何模式可以处理给定的数据。例如,如果我的数据数组在行之间交替并且如果我在列的末尾停止每个条带,我可以使用 GL_TRIANGLE_STRIP,但是这将需要发送到 glDrawArrays 的数据数组多次存储每行的值。考虑到初始数组仅存储 y 值,它还需要一个数组的大小与我的初始数组相比为 x3。但是,在给定数据的情况下,每帧指定每个四边形肯定不会是有效的吗?
c++ - 基于高度图的地形上的奇怪法线生成
我正在使用 libnoise 和 OpenGL 进行地形生成。我做了一个看起来有点复杂的正常生成算法:
所以,正如你所看到的,我正在生成法线,通过对周围六个面的法线进行平均,从而实现平滑的着色。问题是在某些地方(尤其是地形的较低部分),钻头仍然是黑色的,有奇怪的阴影。这是一张照片:
我的正常一代如何工作:
笔记!!!!我画了Y,我的意思是Z,对不起!
这是一张图片:
绿色是第一个顶点。
红色是第二个顶点(x 轴上的第一个 + 1)
黄色是相邻三角形的点。
X 是外环。
Z 是内环。
由于我使用的是GL_TRIANGLE_STRIP
,所以下一次迭代只需要 2 个顶点来构造一个三角形。
所以...构造每个三角形:
p1 = (x, image height, z)
p2 = (x + 1, image height, z)
并在下一次迭代(z++)
p3 = (x, 图像高度, z + 1)
p4 = (x + 1, 图像高度, z + 1)
...ETC。
3d - 连接两个程序生成的景观片段
我正在研究一个连续世界的程序生成。
最近有人建议我使用高度图组合对我的景观应用一些限制。
下一步是将两个程序生成的片段相互连接,以便过渡平滑。
更准确地说,这一切都是关于根据前一个片段生成下一个片段。我想知道最好的方法是什么(无论是通过组合高度图还是以其他方式)。
如果我一直使用 Diamond Square 或 Mid Displacement 或任何基于封闭点的算法来生成高度,我会考虑将第一片边缘值分配给第二片边缘并将它们用作这些点的“随机”值。通过这种方式,过渡将是平滑的,因为第二块中的所有其余点都已经考虑了从第一块中提取的边缘点。
不幸的是(或幸运的是)我正在使用 Simplex 噪声算法来生成高度,并且如您所知,这是一种基于梯度的算法。
那么你会推荐什么?
mapping - 将高度图映射到四边形球面立方体的“块”
我正在开发一个程序行星生成器,我的设置是我设置了一个四叉树,将立方体的六个面分成更小的、可管理的四边形。当相机接近地形时,这些四边形会分裂,当它远离它们时,地形四边形会“塌陷”——就像任何其他四叉树地形系统一样。问题是,目前,为了置换地形的顶点,我使用 3D 脊形多分形计算顶点高度,并且必须使用算法的输出直接置换顶点。相反,我想生成分辨率更高的高度图比四叉树叶节点中的顶点。也就是说,高度图中的纹素必须比行星四边形中的顶点多得多。每个四边形的顶点密度为 17x17(总共 289 个顶点),而高度图纹理的分辨率为 192x192 纹素(总共 36,864 纹素)。我什至不知道我将哪些位置插入到脊状多分形算法中以生成不会映射到任何顶点的纹素的颜色(因为我插入顶点位置以生成所有高度)。更不用说,我不太明白如何阅读高度图,以便高度正确映射到顶点。我需要高度图具有如此高分辨率的唯一原因是因为我还将它们用于法线贴图。
javascript - WebGL 地形网格在 128 像素后缩小
我正在使用 webgl 研究高度图算法。我以为我让它工作了,但我意识到我的网格生成存在一个关键问题。如果我将网格大小设置为 > 128 次迭代,就会发生一些奇怪的事情:网格在 z 轴上停止增长,我最终得到一个矩形而不是方形网格。
这是我正在使用的代码:
如果我使用 size=128 它工作正常;这是结果(大的垂直“线”代表 0、0、0):
图片1:http : //goo.gl/TxfM0R
当我尝试使用 256x256 或任何更高的图像尺寸时,问题就出现了:
图片2:http : //goo.gl/12ZE4U
注意中间的图像是如何在 z 轴上停止增长的!
经过反复试验,我发现限制是 128。如果我使用 129 或更高,网格将停止增长并开始缩小。
java - GLSL 着色器:在两个以上纹理之间进行插值
我已经在 OpenGL 中实现了一个高度图。目前它只是一个正弦/余弦曲线地形。目前我在白色的“冰”和较暗的“石头”纹理之间进行插值。这样做是这样的:
结果:
它工作正常,但如果我想添加更多纹理,例如草纹理,我该怎么办,以便插值顺序为“冰、石、草”?我想,没有像mix(sampler2D[], percentages[])
? 我怎么能按照这个逻辑编写一个 GLSL 方法?