我们正在尝试使用2d 柏林噪声(使用还原/分形技术)生成3d世界。我们已经很好地生成了山脉和山谷,但现在我们在沙漠和沙丘上遇到了问题,因为我们只在持久性和八度音阶上工作,我们无法制作沙丘的经典形状。有人经历过吗?任何解决方案,可能仍然使用柏林噪声,或者其他算法允许你这样做?
你可以试试马斯格雷夫脊形多重分形。它给出了很好的脊状结构,你可以使用你现有的噪声算法。
它的C参考实现在这里
沙丘是倾斜的:.='横截面…您可能想使用这种初始形状
它们是有规律的,就像海里的波浪。不完全噪音
它们朝向风被拉长
我没有使用第一个条件,但我通过将2个1d perin噪声相乘,甚至2个sin/抛物线函数(它们都对齐到一个轴),制作了很棒的沙丘。也就是Z,它们有一个小的低频Sin或噪声使它们沿着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倍,就像两个直水波以几乎相同的角度相遇,加上一个使用噪音的不确定性变量。
也许气流已经足够满足你的需要了…尝试使用你的八度返回值的绝对值而不是正常值来玩湍流。您也可以单独评估,并将噪声和湍流结合起来,在某些区域混合两者的影响。