Houdini 中的 Noises 概念
Houdini 中有各式各样的 Noise 生成器。这些 Noise 通过不同的算法实现,在性能和表现上也有不同的差异。
在 Houdini 中我们可以通过 Random 和 Noise 来生成一些不规则的效果。但这两者最大不同之处在于,Random 采用了伪随机过程来生成结果,该结果通过 seed
来控制,生成的结果是不可预测的。从图像上来说,Random 呈现的曲线是一条充满着断点的,不光滑的曲线。对于我们来说,Random 是非常难以控制的,因此 Random 应该使用在需要完全随机的地方。
Houdini 中的 Random 大致有三种:
[0,1]
之间的数。该方法并不使用 seed,因此不能重现之前的结果。因为这种特性,n-random 被称为不确定随机数生成方法(non-deterministic random number generator)。比起 Random,在实际生产中我们更倾向使用 noise,因为 noise 自身带有非常高的可控性。以 Perlin Noise 作为例子来说一下为什么是可控的。来看一看 Perlin Noise(1D) 的简单产生过程:
通过以上的步骤,我们发现我们可以得到一种整体上平滑,但在局部上又有类似“分型(Fractal)” 形状的曲线。这样的曲线之所以易于控制,是因为其总体上来说可以看做是一种“波”,换句话说,我们可以通过频率(Frequency)、位移(Offset)、粗糙度(Roughness)等等来控制 Noise 的大致分布和细节。因此,对于某些需要一定的随机结果,但在大体上又应该有总体趋势的特效场景来说(比如城市里的汽车,有各种不同的车,但大部分都是本田和丰田),Noise 是非常有用的。
以 VOP 节点为例,Houdini 中有这么几个参数:
Houdini 中的 Noise 大致分为两个部分:连续的 Noise 和 非连续的 Noise.
连续的 Noise 分为如下几类:
sin
, cos
等等。非连续的 Noise 分为如下几类:
Noise type | Relative cost |
---|---|
Perlin noise (noise) | 1.0 |
Original perlin noise (onoise) | 1.1 |
Worley noise (wnoise) | 1.8 |
Sparse Convolution noise (snoise) | 2.1 |
Alligator noise (anoise) | 2.3 |