问题标签 [simplex-noise]

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 回答
560 浏览

python - 为球体上的 UV 映射转换 Simplex Map

我想动态生成一个基于单纯形的图像,该图像可以很好地映射到三个.js 中的球体上,但是我遇到了两极失真的问题。这是初始地图代码:

这会生成创建地图的数据,该地图横向平铺,但不在顶部和底部(这是理想的)。

世界地图

当它被映射到三个.js 中的球体上时,就会出现问题:

由于发生 UVMapping,您最终会在两极附近夹住:

映射在球体上.

我怀疑解决捏合问题的最简单方法是在源图像上使用墨卡托变换,但对于我的生活,我无法弄清楚如何实现它。

有没有人有什么建议?如果您想尝试一下,可以在此处找到该项目的完整源代码。

更新:结合Three.JS 球体映射示例查看维基百科上方便的UV 映射图,我认为这些是一个很好的起点......

0 投票
1 回答
149 浏览

javascript - Perlin Noise、Erlang 和 javascript

给定 perlin/simplex 噪声生成算法的相同种子,是否可以在两种不同的编程语言中生成相同的噪声图?

我的用例:程序生成的多人游戏世界 - 使用 javascript 客户端,erlang 服务器生成相同的噪声图来管理世界同步和其他与服务器相关的事情

而不是服务器生成噪声图并将生成的值传输给客户端

问候

0 投票
2 回答
3610 浏览

java - 从哪里开始使用体素引擎?

我从事体素游戏已经有一段时间了,但我真正完成的只是主菜单和项目系统。现在是时候制作体素引擎了。我一直在寻找一些教程或电子书来教我这些,但我能找到的最好的是某人的 c++ 教程,但我正在用 Java 制作我的教程。我过去曾涉足c++和c#,但翻译起来太难了,即它依赖于java没有的类。我所知道的是体素引擎有不同的方法,它们都从渲染单个立方体开始,而 Perlin 和 Simplex 噪声可用于随机生成地形。

如果有人能指出我正确的方向,将不胜感激。我将至少每小时检查一次,以防有人觉得这个线程已经死了。

0 投票
1 回答
170 浏览

opengl - 从噪声纹理中得出不确定性值?

我正在尝试实现Sketchy Drawings。我在这个过程的一部分,它要求使用噪声纹理来导出不确定性值,这将为边缘图提供偏移量。

这是我的圆环边缘图的图片:

在此处输入图像描述

这是我按照建议使用 Perlin 函数得到的噪声纹理:

在此处输入图像描述

我将它们分别保存为edgeTexture纹理noiseTexture

现在我被困在你必须通过从噪声纹理导出的不确定值来偏移边缘贴图的纹理坐标的部分。这张图片来自书中:

在此处输入图像描述

我暂时忽略了 2x2 矩阵。这是我当前的片段着色器尝试及其产生的结果:

在此处输入图像描述

显然,我的补充是vTexCoords很遥远的,但我不明白为什么。我尝试了其他几个湍流函数定义,但没有一个接近所需的输出,所以我认为我的整体方法在某个地方存在缺陷。非常感谢这里的任何帮助,如果我不清楚,请发表评论。环面所需的输出看起来就像我想象的一个粗略绘制的圆圈。

0 投票
1 回答
318 浏览

3d - 连接两个程序生成的景观片段

我正在研究一个连续世界的程序生成。
最近有人建议我使用高度图组合对我的景观应用一些限制。

下一步是将两个程序生成的片段相互连接,以便过渡平滑。
更准确地说,这一切都是关于根据前一个片段生成下一个片段。我想知道最好的方法是什么(无论是通过组合高度图还是以其他方式)。
如果我一直使用 Diamond Square 或 Mid Displacement 或任何基于封闭点的算法来生成高度,我会考虑将第一片边缘值分配给第二片边缘并将它们用作这些点的“随机”值。通过这种方式,过渡将是平滑的,因为第二块中的所有其余点都已经考虑了从第一块中提取的边缘点。
不幸的是(或幸运的是)我正在使用 Simplex 噪声算法来生成高度,并且如您所知,这是一种基于梯度的算法。

那么你会推荐什么?

0 投票
3 回答
618 浏览

opengl - 沙漠分形 OpenGL

我们正在尝试使用 2d perlin 噪声(使用 recorsive/fractal 技术)生成 3d 世界。我们已经很好地生成了山脉和山谷,但是现在我们遇到了沙漠沙丘的问题,因为我们只处理了持久性八度音阶,我们无法制作出沙丘的经典形状。有人已经经历过吗?任何解决方案,可能仍然使用柏林噪声,或者其他允许你这样做的算法?

0 投票
1 回答
1234 浏览

c# - 具有单纯噪声的流星发生器

我尝试制作像这个视频一样的流星,但我只能这样:

http://johannes.gotlen.se/blog/wp-content/uploads/2011/07/MarchingTetrahedonsSimplexNoise.png

这是我的单纯形噪声:

这是我的实现:

我在各种页面、博客和这里找到了信息,但没有发现任何对我有用的信息。如果有人有信息,我将非常感谢您的帮助。

感谢你们对我的帮助。

0 投票
1 回答
1723 浏览

opengl - 用单纯形噪声置换的球体的解析法线

我想渲染一个像球体一样的行星。大体思路如下:

  • 生成一组构成球体的单位长度顶点。
  • 在渲染球体时,着色器会评估单位球体上的点处的 3D 单纯形噪声。
  • 结果用作“高度”以沿其方向移动当前顶点。

到目前为止,一切都按预期进行。

现在我想添加光照,因此需要表面的法线。

在实现照明相关部分时,我快速添加了一种方法来使用片段着色器中的偏导数来估计地形的法线,如下所示:

ins.position插值的世界位置在哪里。

虽然这可行,但它看起来不是很好,因为它本质上会产生每个面的法线。

不好的正态近似

现在到实际问题:

  • 与图片不同,计算每个顶点的法线会产生平滑的法线,对吗?
  • Simplex Noise 优于 Perlin Noise 的优点之一是它具有“可以非常便宜地计算的所有地方的定义明确且连续的梯度”(引用优秀的Simplex Noise demystified)并且使用梯度应该能够计算正常,对吗?

如果第二个问题是“是”,我有两个问题:

  • 单纯形噪声算法取自一个流行的来源,遗憾的是它不包括梯度计算。我将在下面发布我添加它的尝试,但我不知道它是否正确。
  • 即使我有渐变,我也坚持从那里推导出法线。

任何帮助是极大的赞赏!

我对渐变实现的看法(替换了最后几行snoise):

更新:

关于从梯度计算表面法线的部分已在此处得到解答: 表面法线到位移球上的点

现在剩下的问题是如何将梯度计算实现到 3D Simplex Noise 的 GLSL 版本中,因为我的实现似乎有问题。

更新 2:

梯度计算似乎几乎是正确的,只是缩放似乎关闭了。
不是乘以 42,而是除以 5 会得到很好的结果,但这是通过反复试验发现的。适当的比例因子会很好。

0 投票
1 回答
1168 浏览

c# - MonoGame 中的 SimplexNoise 地形

我正在 MonoGame 中制作一个随机生成的瓷砖游戏,并且我正在尝试使用 Simplex Noise 来生成地形。问题是,我以前从未使用过 Simplex Noise,所以您可能会猜到,我的代码不起作用。它只创建草瓷砖。这是我尝试过的代码:

我正在使用这个实现来产生噪音。

0 投票
1 回答
79 浏览

java - 单工噪声调整仅在一个方向上起作用

我正在使用单纯形噪声制作高度图。我在调整它以稍微倾向于形成一个岛屿时遇到了问题。在实际渲染生物群落和其他特征之前,我正在努力让这些值正确。我遇到了一个问题,即我的代码应该能够产生这种在中间形成孤岛的趋势,但它似乎只在一个方向上起作用。

如果有什么特别的原因?我处理地形平滑的课程在 x 和 y 方向上做同样的事情,但只有一个有效。

}

白噪声的图像:

使用 X 和 Y:

只有 X(Y 被注释掉):

[只有Y(X被注释掉):](类似于X和Y,由于声誉问题,无法发布链接。)

[没有X和Y:](类似于只有X,因为声誉问题不能发布链接。)