问题标签 [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.

0 投票
1 回答
483 浏览

c - 如何将地形写入 .raw 文件?

我想通过 Perlin 噪声生成地形并将其存储到 .raw 文件中。

Nehe 的 HeightMap 教程中,我知道 .raw 文件的读取方式如下:

}

pHeightMap是一维的,所以我不明白如何将 x,y 对应于高度值。我打算在 Ken Perlin 的页面上使用libnoise或noise2 函数,使 1024x1024矩阵中的每个值对应于点的高度,但是 .raw 文件存储在一个维度中,我该如何制作 x,你的通信工作在那里?

0 投票
1 回答
695 浏览

xna - 从高度图渲染的地形大小

我对 XNA 很陌生,所以如果我问了一个“愚蠢”的问题,但我找不到答案,请原谅。

我对从高度图渲染的地形有问题:我得到的地形太小,我的游戏需要更大的东西,但我想保持高度 tdata 更新 - 所以我可以稍后检查碰撞。(高度数据是一个二维数组,它保存每个点的高度 - 在我的程序中它被称为“dateInaltime”)。

问题是,如果我修改地形的比例,碰撞检查器将使用旧值(来自原始/小地形),所以我会得到错误的碰撞点。

我的地形类看起来像这样

如何使地形更大,同时扩展高度数据数组?

0 投票
1 回答
1334 浏览

2d - 将高度图映射到基于网格的等高线格式

我有以下格式的二维高度图

而且我需要将其重新映射为基于 grin 的轮廓格式(因此它可以进一步映射到精灵中)

这里.的意思是平坦的区域,|笔直-的悬崖/\悬崖角落(每个代表两种不同的可能性)。

我尝试了标准的行进广场方法,但​​发现仅对 3 个邻居进行抽样会导致很多问题,因为相邻案例超载。(注意下面额外的不合适的直悬崖)

我想要的是对有助于处理这类事情的算法/方法的一些参考。我知道带有某种深度优先搜索的轮廓行走是一种选择,但尚未尝试过,并且宁愿将其作为最后的手段。还有一些特征的表示问题,例如是否包括 1 个元素厚的悬崖脊或忽略它们。另一种选择是通过生成的轮廓并更改它们,以便它们平滑地组合在一起,但这看起来真的很hacky......

0 投票
1 回答
2542 浏览

c++ - 如何读取高度图值以生成地形?

我正在尝试使用 OpenGL 中的高度图图像制作地形。作为实验,我使用 4x4 像素图像。这是放大的屏幕截图。所以你可以看到像素。

在此处输入图像描述

这是我的代码的一部分。

然后,我得到以下结果。

在此处输入图像描述

我期待(0,0),(1,1),(2,2)和(3,3)的零值(对于y坐标)。但结果不同。为什么我没有得到预期的结果?

0 投票
2 回答
6595 浏览

glsl - 使用 GLSL 着色器从图像生成高度图

最近我一直在玩 webGl,我在这里偶然发现了一个很酷的小演示来源在这里),我想稍微改变一下以获得一些很酷的结果。

我对改变地形的生成方式很感兴趣。而不是分层 10 个八度的单纯形噪声(位于 simplex3d.shader 中):

我希望能够将自定义的黑白高度图图像加载到场景中并从中生成地形。我对 GLSL 还很陌生,在网上找到合适的资源并从这里开始时遇到了麻烦。

任何帮助将不胜感激!

编辑:

编辑2:

0 投票
1 回答
838 浏览

c++ - 柏林噪音问题

我创建了一个 Perlin 噪声函数。我的问题是,当我从噪声中生成地形图时,它最终会变成块状,与我见过的云状图像完全不同。我很好奇我做错了什么(如果有的话)。这是我的代码:

主文件

perlinnoise.cpp

0 投票
3 回答
7334 浏览

c++ - 使用 C++ 和 Qt 如何将 16 位原始文件显示为图像?

我希望在我的应用程序中将视频游戏《战地 2》中的高度图显示为图像。
我是 C++ 和 Qt 的新手,它可能很简单,但我遇到的问题是显示灰度16-bit 1025x1025 2101250字节图像。该文件没有标题。我需要访问显示的像素(不必是完美的像素精度),这样我就可以指向一个像素并获取它的值。

我试过的

我已经将二进制数据QByteArray从 QFile 加载到一个 QFile 中,并且我尝试使用该QImage::fromData函数制作图像,但我犯了很多错误并且花了很多时间没有走得很远。我希望在这里发帖能给我提供我需要进步的线索。这是我的代码:

从这里我不知道该怎么办。我已经阅读了一些 Qt 文档,但我是新手,我需要一个正确方向的指南来理解这个问题并获得解决方案。

请注意,我几乎是一个初学者,所以不要忽视我可能没有想到的简单解决方案。我想只使用 Qt 框架来做到这一点。

0 投票
1 回答
1954 浏览

java - OpenGL 高度图加载器

我检查了一个 LibGDX 高度图加载器并找到了一个,但我不太确定 buildIndices() 代码是如何工作的。我也不确定为什么它只生成一个 128*x*128 的高度图块,任何大于 128(例如 1024)的东西都会使加载器像这样混乱:

1024 块 1024 块

如您所见,山上有洞,块形状呈现为 128*1024 网格

128块 128块

128*128 的块完全没问题

这是我的代码:

为什么更大的块不起作用?createIndices()(在 LibGDX 代码中称为 buildIndices())如何工作?

0 投票
1 回答
871 浏览

hlsl - 着色器中的高度图不起作用

我正在尝试实现基于 GPU 的几何剪辑映射,但在将简单的高度图应用于我的地形时遇到了问题。对于高度图,我使用表面格式为“单一”的简单纹理。我从Catalinz 的 XNA 博客中获取了纹理。

我要做的只是从顶点世界坐标的纹理中获取单个浮点值,并将该值应用于顶点的 Y 值。我通过着色器应用高度图,因为没有可以应用的固定网格代码。到目前为止我尝试过的是使用该tex2Dlod函数,但似乎没有输出或输出为 0。Direct X 顶点着色器的代码如下所示:

HeightmapSampler高度图纹理的点镜采样器在哪里。这是输出,我实际上没有得到任何高度:

截屏

这是我正在使用的高度图:

高度图

0 投票
1 回答
606 浏览

c++ - 使用 Directx11 在基于高度图的地形上的孔

我目前正在研究由高度图产生的圆柱状地形。程序中发生的事情很简单,地形颜色的纹理具有区域的 alpha 值,我希望它不可见,另一个纹理 ARGB,A 是高度的灰度,RGB 是光线的正常值。纹理使得 A 值从 1 变为 255,我为有孔的区域保留 0,这意味着我不希望那时存在。所以理论上没问题,我根据第一个纹理使这些区域不可见,但在实践中发生的事情是程序将 0 视为最小高度,即使纹理在顶部,也会为此创建一些线条0的区域, 注意去圆柱中心的线 当我停止使那些顶点不可见时,这就是它的方式

注意去圆柱体中心的线 当我停止使这些顶点不可见时,这就是它的方式

所以,只是说,我在像素着色器上使用了函数 Clip() 使其不可见。

基本上我需要帮助:是否有可能,就像我在像素着色器上使用 clip() 一样,我在顶点着色器上做类似的事情并摆脱不需要的顶点?基本上,是否可以只说忽略值 0?有什么想法可以解决这个问题吗?我想使所有为 0 的顶点成为他邻居的值,这样这些线就不会到中心,而是到与圆柱体本身相同的平面。另一件事是我们可以看到程序正在将值从一个顶点插入到下一个顶点,这就是为什么我在中途切到不可见顶点的原因

我正在使用带有 C++ 的 Directx11 API,并且该程序使用 Tessellation。

感谢您抽出宝贵的时间,如果您对此提出任何意见,我们将非常高兴!