为了改进我的程序地图生成,我一直在学习更多关于生成噪声的实际工作原理。
考虑到这一点,我一直在对本教程系列进行关于噪声和噪声导数的 Python 改编。所以我想我会构建一个基于ANL和libnoise的节点/模块系统,当我完成后至少可能对其他人有用。
我一直在将这个Javascript 版本的 libnoise翻译成 Python,因为我以前使用过它并且熟悉它,并将其改编为 1D 和 4D 噪声(除了它已经做过的 2D 和 3D)和衍生产品。
原始教程中使用的导数加法、减法和乘法涵盖了很多模块功能,但我已经介绍了更复杂的功能,我正在努力弄清楚我应该如何处理导数。
我在 Blend 模块,它接受三个不同的噪声输入,并用第三个作为 lerp 函数中的 alpha / time 值对其中两个进行插值,如下所示;
def get1D(self, x):
a = self.sourceModules[0].get1D(x)
b = self.sourceModules[1].get1D(x)
alpha = self.sourceModules[2].get1D(x)
return lerp(a, b, alpha)
我有点迷茫,不知道该怎么办。我是否应该丢弃噪声的导数并根据插值计算新的导数?对于每个轴都有多个导数的更高维度,这将如何工作?
或者我是否将旧的噪声导数插入到新的导数中?
原始版本还对 alpha 噪声变量进行了某种缓和,我从计算噪声导数中的理解是,这肯定需要有一个导数版本,但是该噪声的导数是否应该在最终混音中发挥任何作用?