沙漠分形OpenGL

4
我们正在尝试使用2D的Perlin噪声(使用递归/分形技术)生成3D世界。我们已经成功生成了山和谷,但现在我们在沙漠和沙丘方面遇到了问题,因为我们只关注了持续性和八度,并且我们无法制作出沙丘的传统形状。是否有人已经经历过这种情况?是否有任何解决方案,最好仍然使用Perlin噪声,或者使用其他算法来实现这一点?
3个回答

1

沙丘是不对称的:它们的横截面像一个“\”,你可能需要使用这种初始形状

它们像海浪一样规则,但并非完全没有噪音

它们朝着风向延伸

我没有使用第一个条件,但通过将两个1d perlin噪声相乘,或者甚至是两个正弦/抛物线函数,在它们都与一个轴(即Z轴)对齐,并且它们有一个小的低频正弦或噪声沿X轴摆动,所以它们不是对齐的,我制作了很棒的沙丘。

试试这个:

dunes = sin ( X + 1dperlin(Z) *.2 ) * sin ( X + 1dperlin(Z+432) *.2 );

otherwise to test it:

dunes = sin ( X + sin(Z) *.2 ) (plus or times or devided by) sin ( X + sin(Z+432) *.2 );

0.2使沙丘的长度比宽度长10倍,就像两个几乎以相同角度相遇的直线水波一样,加上使用噪声作为角度的不确定性变量。


1
你可以尝试使用Musgrave ridged multifractal。它提供了漂亮的崎岖结构,并且您可以使用现有的噪声算法。它的C语言参考实现在这里

0

也许湍流对你的需求已经足够了...尝试使用八度返回值的绝对值而不是正常值来玩弄湍流。您还可以分别评估并组合噪声和湍流,以在某些区域混合两种效果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接