大家好,今天我为大家讲解分形噪音的基础:分形布朗运动曲线的绘制。噪音在图形学领域非常受欢迎,特别是在复杂场景的应用,能在低消耗的情况下模拟出许多传统的欧式几何难以刻画的场景。例如使用perlin噪声可以模拟山脉地形,天空云层等等。这是本人的第一篇博客,后续本人将引领大家一起走进计算机图形领域!
布朗运动是1827年英国植物学家R.Brown发现的,它是一种随机运动,粒子的运动方向随时改变,其运动轨迹是一条无规则的折线,不受什么约束和支配。
1968年1968年Mandelbrot和Ness两人提出分形布朗运动FBM(Fractal Brown Motion),它主要用于描述自然界的山脉、云层、地形地貌以及模拟星球表面等不规则形状阶。
以下为我在MFC上实现的FBM直线类所绘制的分形布朗曲线:
FBM实际上是一种策略,其目的是为了让普通的噪声有更多的细节,可以看成是不同位置,不同比例,不同频率的同一个噪声函数的叠加。实现代码如下:
其中octaves为倍频,即噪音叠加的次数,影响着噪音的自然性。frequency为噪音的频率,amplitude为噪音的振幅,控制着噪音的极大值与极小值。一般在[0,1]之间,值越大则代表噪音波动越大。下图是H=0.8与H=0.2的比较。
其中的noise函数为噪音函数,噪音函数返回的是一个伪随机数,即每次输入的值一定,则结果一定为某个值。例如:我们假设这个函数为取圆周率π的小数点后几位。则次函数就是一个伪随机函数。因为每次输入的值一定则结果一定。取第一位必定是1,然而每个数之间又相互随机。不同的伪随机函数会产生截然不同的结果。此处我选择的伪随机函数如下: