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

c# - 期望来自单纯形噪声或其他算法的锯齿状结果同样快

我想根据游戏/技术演示的地形对树木等物体进行一些放置。

我以前使用过价值噪声,我相信我对柏林噪声的理解已经足够好了。然而,单纯形噪声很好地避开了我(目前只是有点过头了)。

我在 C# 中实现了单工噪声,但是,它几乎完全是从这里偷来的。它工作得很好,但我对它的理解还不够好,无法为自己的目的进行修改。

它非常快,但它也给出了相当平滑的结果。我实际上想要一些锯齿状的东西,比如当我在做值噪声时会给出简单的线性插值。我的问题是,由于我要为这些对象放置和使用分形布朗运动进行大量调用,算法的速度变得非常重要。

关于如何使用比值噪声更快的算法获得更多“锯齿状”结果(如线性插值)的任何建议?

0 投票
1 回答
301 浏览

scala - 使用 BufferedImage 时单纯形噪声显示不正确

经过大量工作,我终于得到了一个可以工作的 Simplex 噪声的平铺版本,但在使用 BufferedImage 时,我似乎无法让它正确记录和显示。每当我尝试创建图像时,最终都会出现黑白带或环,而不是平滑的阴影变化,这正是我所期待的。我猜我没有做一些简单的事情,但对于我的生活,我找不到它。

这是我的代码(其中相当一部分来自 Stefan Gustavson 的 Simplex 噪声实现):

我已经检查了我正在使用的噪声函数的输出值,它还没有返回除 (-1, 1) 独占之外的任何内容。对于单个八度音阶,我提供给图像 ( total) 的值也没有超出 (0,1) 的独占性。

我唯一能看到的问题是 BufferedImage 类型设置不正确,或者total在设置图像中的值时乘以错误的十六进制值。

我查看了 BufferedImage 上的 Javadocs 以了解有关它们接受的类型和值的信息,尽管我发现的任何内容在我的代码中似乎都不合适(不过,我通常对使用 BufferedImage 相当陌生)。而且我尝试过更改十六进制值,但似乎都没有改变任何东西。我发现唯一有影响的是如果我将该(total * 0xffffff).toInt值除以 256,这似乎会使波段变暗,并且在应该的区域上出现轻微的渐变,但是如果我将除法增加太多,图像只是变成黑色。因此,到目前为止,我一直在纠结可能是什么问题。

0 投票
1 回答
385 浏览

java - How could I draw an Outlined Mesh like this?

So I saw a blog about parsing OBJ files, but what really caught my eye was the object they were parsing (this question isn't about parsing OBJ files).

enter image description here

I know the mesh was created using a 3D noise algorithm, probably simplex noise, but what I want to know is how I could make a similar line effect to that in LWJGL.

I already have a 3D simplex noise algorithm, and some code that I thought would work but really doesn't do quite the same thing.

The pattern I notice about the mesh is there are rows of lines that start on the outside where the noise density is highest. Those lines then evolve based on the noise density in specific spots, so what I tried to do was make an algorithm to produce those lines and evolve them as well, but that didn't quite so work.

It shouldn't be hard to realize that this doesn't produce anything near the same results. I do not know how to approach or exactly produce the same mesh shape or something similar, so can anyone help me?

0 投票
1 回答
31016 浏览

noise - 任何单纯形噪声教程或资源?

我想创建一个类似地形的 3D 噪声生成器,经过一些研究后,我得出结论,Simplex Noise 是迄今为止最好的噪声类型。

我觉得这个名字很有误导性,因为我很难找到关于这个主题的资源,而且我找到的资源通常写得不好。

我基本上正在寻找的是一个很好的资源/教程,逐步解释单纯形噪声的工作原理,并解释如何将其实现到程序中。

我不是在寻找解释如何使用图书馆或其他东西的资源。

0 投票
1 回答
559 浏览

noise - 单纯形噪声 - 求和

我一直在按照 Nathan Reed在 Programmers.StackExchange 上的要求阅读这篇文章。 经过一番阅读,我偶然发现了一个我真的不明白的段落。谁能用更简单的语言向我解释这一段?(英语不是我的母语)如果你想阅读原文,你可以在“ ”下找到它。Moving from interpolation to summation

单纯形噪声使用来自每个角的贡献的直接总和,其中贡献是梯度斜坡的外推和径向对称衰减函数的乘积。在信号处理方面,这是一个信号重建内核。仔细选择径向衰减,以便每个角的影响在穿过边界到下一个单纯形之前达到零。这意味着单纯形内的点只会受到该特定单纯形角的贡献的影响。

0 投票
2 回答
8221 浏览

algorithm - 为什么单纯形噪声似乎比经典的 Perlin 噪声具有*更多*伪影?

我阅读了Stefan Gustavson 关于单纯形噪声的优秀论文,其中我被承诺:

单纯形噪声没有明显的方向性伪影

与“经典”柏林噪声形成对比。我兴奋地实现了它,发现事实恰恰相反。我确实在经典噪声中看到了伪影,但我在单纯噪声中看到了至少同样多的伪影,与主轴成 45 度角对齐。当您将噪声映射到阶跃函数时,它们尤其明显。

为了确保我的实现没有问题,我使用了别人的 JavaScript 实现。比较一些图像:

这是一个拥有所有这些的画廊。在最后一张图片中,查找与水平/垂直成 45 度角对齐的边框。他们到处都是。如果需要,我可以突出显示其中的一些,但它们对我来说似乎很明显。(再一次,我在经典的噪声图像中也看到了它们。)

编辑:为了更量化,我采样了 100 万个随机点,对于每个点,我数值计算了经典噪声和单纯噪声的梯度,并获取了投影到 xy 平面上的梯度方向的直方图。如果没有方向性伪影,则图形将是平坦的。但是您可以看到经典噪声和单纯噪声每 45 度出现一次尖峰。

这是单纯形噪声算法的问题吗?它是可以修复的吗?还是只有我认为这是一个问题?

0 投票
1 回答
634 浏览

javascript - threeJS程序平面顶点未对齐

我正在使用threeJS 与Simplex 噪声算法相结合来生成50x50 平面的平铺系统。目前,我正在循环 x+y 并添加每个平面。然后我使用 Simplex 噪声算法来计算平面的四个顶点 z 位置。

我使用当前的 x/y 作为左上角的顶点 ([0]),其余的你可以在下面最初生成图块的函数中看到:

好的,这就是循环,然后是 addTile 函数:

(快速说明,我意识到我认为我不需要为每个平面都有一个新的几何图形)

好的,结果如下:

http://i.imgur.com/h4XNEYj.jpg

如您所见,顶点没有对齐。我已经尝试了很多东西,但现在完全被难住了。我很确定我将正确的顶点设置为 TL、TR 等。你能发现为什么顶点没有对齐吗?

谢谢你 :) 杰克

0 投票
1 回答
938 浏览

perlin-noise - Perlin 和 Simplex 噪声有什么区别?

我已经对这两个主题进行了大量阅读,但我仍然无法完全弄清楚。据我了解,Perlin Noise(二维)会生成一个方形网格,您可以通过计算您所在的正方形每个角的贡献来从该网格中获取一个点的值。

据我了解,单纯形噪声也是一个方形网格(二维)。不是通过计算周围四个角的贡献来获取值,而是将正方形分成两部分,并从当前所在三角形的三个角获取贡献。

我理解正确吗?如果是这样,这不只是另一种计算角落贡献的方法,而不是另一种产生噪声的方法吗?

0 投票
0 回答
422 浏览

c++ - How to implement 2D Simplex Noise/ 2D Perlin Noise ( C++11)

My problem is I dont know how to insert the simplex noise/perlin noise values to my world generator to produce a better looking landscape, is there anyone can show simple code showing how to implement it.

BTW, im new at programming, so any answers will be appreciated and it will greatly helps me.

Heres the code:

noise.h

#xA;

noise.cpp:

#xA;

main.cpp

#xA;

Output:

http://imgur.com/dEO5l0p

But I want this kind of output

http://imgur.com/ua3K1Xf

But I want the the soil will be in the topmost layer and generate terrain.

0 投票
2 回答
1099 浏览

noise - 如何制作蜂窝版的柏林噪音?

我希望:

将常规 2d perlin 噪声约束为自身的量化直线版本,其中直线为 60°

也许我可以将柏林噪声函数的输入量化为 3 个 60° 轴?

也许我可以重写 2d 单纯形噪声,以便它从 xz 平面的 3 个轴而不是 xz 轴工作?

一个不太好的解决方案是采用 3 个不规则锯齿波并在 3 个轴上相乘。

目标:我正在测试使用等距 60° 正三角形网格(即六边形)显示的柏林景观。它比方形网格更好,并且更有效地利用空间。使用基于 lofi hex 的 perlin 噪声山峰看起来会非常好,因为例如在 50 度线上,顶点会形成锯齿形,所以如果我可以控制 perlin 噪声的角度,我就可以控制基于六边形的世界的质量.