问题标签 [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 投票
0 回答
620 浏览

opengl - 纹理 lwjgl/opengl 高度图?

如何为高度图添加纹理?我按照 TheCodingUniverse 的教程 #36(我认为这是数字)创建高度图,他介绍了使用着色器为 X 高度设置 X 颜色,但是我想为 X 高度设置 XX 纹理,而不是为每个高度设置颜色。我该怎么做呢?

我尝试在绘制三角形条带时绑定纹理(就像我在 GL_QUADS 的 3D 正方形上所做的那样),但是高度图无法渲染。然而,世界上的所有其他事物都在继续渲染。

StackOverflow 抱怨我提供的信息太少,但我不确定除了代码示例之外我还能告诉你什么。

当前高度图代码:

0 投票
1 回答
3451 浏览

c++ - opengl纹理高度图

我似乎找不到任何关于如何正确纹理从高度图生成的地形的教程或信息。

纹理映射不是问题,我想知道的是如何对具有不同纹理的不同海拔的整个地形进行纹理处理。

我想出的是一个看起来像这样的纹理:

在此处输入图像描述

根据三角形的高度,为其分配不同的纹理。

结果: 在此处输入图像描述

我想做的是创造一个像天际这样的环境,纹理不需要不断重复,一个令人信服的景观!

问题是我如何创建这样的东西: 在此处输入图像描述

纹理在不同的高度无缝地融合在一起!这是怎么做到的?使用的技术是什么?

示例视频:http ://www.youtube.com/watch?v=qzkBnCBpQAM

0 投票
1 回答
288 浏览

three.js - Three.js r60 高度图

所以我有一个运行良好的高度图系统,但是由于 THREE.js 已更新到 r60,它删除了 Face4 对象,所以我遇到了问题。

我的代码是这样的:

};

这很好用,因为一个像素代表每张脸。既然所有的脸都是三角剖分的,那么这是怎么做到的呢?

同样,我也使用图像映射来进行模型定位。每个像素都与各自的 Face4 匹配,并且所需的网格被放置在其质心处。现在怎么能做到这一点?

我真的很怀念能够更新库并且不想再被困在 r59 =[

0 投票
1 回答
685 浏览

c++ - 高度图的正常平均

我有以下代码用于计算高度图法线

我知道代码获取三角形的三个顶点,计算其法线,然后将它们相加并将它们归一化以获得平均法线。但我不知道如何获得其他三种可能性,我一直在做如下事情:

但我不认为它给了我想要的结果,我得到了正常平均的概念,但无法弄清楚代码。

0 投票
1 回答
749 浏览

java - 如何从高度图扰动表面法线

我正在自己的 3D 跟踪器中实现凹凸贴图。真的很短 - 我想要这个结果:

想要的结果

我一直在阅读关于凹凸贴图、高度贴图、法线贴图等的页面和页面,我想我理解了大部分主题,以及以上所有内容之间的区别等等。(我得到了 perlin-bumpmapping 的工作 -结果)唯一我不明白的是如何从给定纹理图像的对象中实际扰动表面法线。大多数论文和页面在该主题上都非常模糊。

首先,我认为您只需向对象添加图像纹理,对于给定的像素,您将根据纹理计算 rgb 颜色,然后根据 rgb 值计算亮度因子(类似于灰度值,... ) 并在添加灯光效果之前用它扰乱法线。- 我想(ed)即时计算法线。

问题:如果上述情况甚至可能:在给定亮度因子的情况下如何扰动法线?如果我在这里错了,任何可以帮助我达到给定结果的提示/链接将不胜感激。

问题 2:如果以上对于任何给定的 rgb 图像都不可能,任何人都可以解释如何在给定高度图的情况下扰动图像?就像维基百科上的第一张图片 非常感谢。

PS:我正在/必须用 Java 实现。

0 投票
1 回答
83 浏览

c# - 纹理的大端转换

我正在尝试从这样的文件中提取高度:http: //visibleearth.nasa.gov/view.php?id= 73934

像素被加载到 Int32 数组中

我不知道为什么,但高度不正确......我认为大端转换是错误的,你能帮帮我吗?

这是结果,高度比预期的要高...... http://i.imgur.com/FukdmLF.png

编辑:

这个可以吗?我不知道为什么,但它仍然是错误的......

0 投票
1 回答
241 浏览

javascript - Three.js 场景在第一次通过后似乎没有渲染

我目前正在使用 Three.js 开发基于 Web 的高度图生成器。我使用一个画布来显示实际生成的高度图,其他几个用于显示高度图所包含的单独八度音阶,另一个用于演示高度图“正在运行”,它直接应用于平面网格。

到现在为止还挺好。使用所有预定义的参数(波长等),整个东西也可以完美呈现。实际的问题是,在初始渲染传递之后画布没有更新,这使我的程序完全无用,因为我的程序的目的是能够使用滑块操作高度图的几个参数并查看真实效果时间。

遗憾的是,唯一完全更新的画布是具有平面网格的“真实”3D 场景的画布。但同样在这里,似乎第一次渲染过程中的数据从未被清除,但至少噪声参数的制服似乎已正确更新 - 这显然不是所有其他画布的情况。

在我最终渲染一个场景之前,我总是将needsUpdate网格材质的字段设置为true,但它似乎只适用于最后初始化的那个画布。我在这里完全迷失了,也找不到有关该问题的任何信息。

0 投票
1 回答
838 浏览

c++ - OpenGL glVertexPointer 返回 1281 - 不知道为什么

我创建了一个类来从高度图文件加载地形点;但绘制它们会导致崩溃。我已将错误范围缩小到返回 1281 的 glVertexPointer() 函数(我被认为是无效值)。我已经完成了完整的 65k 点,似乎找不到问题。在此之前在渲染循环中发生的唯一其他事情是设置 GL_PROJECTION 和 GL_MODELVIEW 以及 glClear() (显然是在此绘制调用之后的交换缓冲区)。

0 投票
0 回答
166 浏览

c++ - OpenGL **有时**渲染一个点(共 65,000 个)

我正在加载一个高度图并尝试将结果呈现为一系列 GL_POINTS,因为目前的代码有时会在我的屏幕中心呈现一个点(无论相机位于何处 - 我已经尝试展开进一步指出它们是否堆叠在一起)。尽可能最小化 Visual Studio 并再次最大化它可能会停止或开始渲染点。你会注意到我有这行:

注释掉 - 这是因为这条线将完全停止我的“地形”的所有渲染。我的渲染循环的其余部分纯粹包括设置 PROJECTION 和 MODELVIEW 矩阵并调用 clear() 和 swapbuffers() - (这一切都正常工作,因为我从一本书中获取信息并使用通用的多色三角形对其进行了测试) .

地形等级:

注意:有些人可能会注意到这与我的上一个问题有关;但我的最后一个问题是正确回答的错误(并且我将其标记为这样),因此该线程没有受到太多关注。非常多的无意垃圾邮件。

编辑::我的渲染循环的其余部分::

编辑:我的更多代码:

主.CPP

引擎.H:

0 投票
2 回答
1257 浏览

c++ - OpenGL纹理采样因相机位置而异

我正在从加载的高度图数据中渲染基于点的地形 - 但这些点会根据相机位置的位置改变它们的纹理。为了演示这个错误(以及这不是由 z 缓冲问题引起的事实),我截取了从非常轻微不同的相机位置(相同角度)以固定 5 像素大小呈现的点的屏幕截图,如下所示:

PS:如果您将图像拖到新选项卡中,图像就足够大了,没有意识到堆栈会将它们缩小这么多。

状态 1: 状态 1 图像

状态 2: 状态 2 图像

生成点的代码相对简单,所以我发布这个只是为了排除选项 - mapArray 是一维浮点数组并复制到 VBO:

我发现我更有可能需要调整我的片段着色器,因为我不擅长着色器——尽管我不确定这样简单的代码在哪里可能出错,并且猜测它可能只是不适合目的(基于点渲染)。贝娄是我的碎片着色器:

编辑(要求的信息):OpenGL 4.4 版没有使用纹理标志。

TexCoordA 直接从我的顶点着色器传递到着色器,根本没有任何改变。使用以下方法自行计算 UV: