本节摘要:噪声是程序化自然的"随机语法":白噪声无记忆、值噪声连续、分形噪声叠加多个倍频呈现自然细节。本节用 Wrangle 逐一可视化几种噪声的断面波形,讲清频率、倍频、粗糙度三个参数的视觉意义,以及 Voronoi 与噪声的分工。
最直观的观察法——造一条线,把噪声值当高度。Grid 换成 Line(或 Curve 拉直),撒 500 点后接 Wrangle:
// 沿 x 轴展示一维噪声断面 float x = @P.x * chf('freq'); // freq 默认 1 @P.y = noise(x); // 值噪声:连续、平滑
把 noise 依次换成 rand(x)(白噪声)与手写分形(下文),同一条线上对比三种波形。

Houdini 噪声类节点(以及多数软件的分形噪声)共用的三个旋钮:
noise(@P * 2) 频率翻倍。地形上:低频造大山势,高频造碎石感;手写一遍分形,三个参数的作用立刻具体化:
// 分形布朗运动的等价实现(教学版) vector p = v@P * chf('freq'); float amp = 1.0, sum = 0.0, norm = 0.0; for (int oct = 0; oct < chi('octaves'); oct++) { sum += amp * noise(p); norm += amp; p *= 2.0; // 频率翻倍 amp *= chf('roughness'); // 幅度衰减 } f@fuzzy = sum / norm; // 归一到约 -1~1
| 类型 | 特征 | 典型用途 |
|---|---|---|
| 均匀随机 rand | 无连续性 | 抖动、抽样、打乱 |
| 值噪声 noise | 连续、 blobby | 位移、密度调制 |
| 柏林系(新版本可选) | 连续、方向性自然 | 地形大势 |
| Simplex/Aalligator 等变体 | 特征纹路不同 | 皮肤、矿物纹理 |
| Voronoi | 细胞状、硬边 | 龟裂、鹅卵石、细胞图案 |
| curl noise | 旋度场,无散度 | 烟、流体风场驱动的粒子 |
Voronoi 与普通噪声的分工:连续渐变用噪声,离散区块用 Voronoi。第 5 章破碎(刚体裂块)正是 Voronoi 的另一面——同一数学,两个用途。
⚠️ 常见坑:直接
noise(@P)不加缩放就当位移用——默认频率下噪声跨度与场景尺度不匹配,位移看起来像随机疙瘩。先问场景尺度,再定频率;10 单位宽的地形,基础频率通常在 0.05~0.3 之间起步。
💡 关键直觉:噪声是场的语言。你几乎从不直接"看"噪声,而是把它采样成位移、密度、遮罩、颜色。学噪声=学"把场映射到几何属性"这件事。
下一章把噪声放到它最大的舞台上:高度场地形。
Houdini 噪声函数有四个旋钮,各管一个维度:频率(特征尺寸)、倍频 octaves(细节层数)、粗糙度 lacunarity/roughness(层间幅度衰减)、种子(相位)。做一次系统对拍,把四张截图钉在工位上:
// Anechoic 风格的地形噪声: ridged 分形 + 域扭曲 vector q = @P * ch("freq"); float warp = aanoise(@P * ch("warp_freq")) * ch("warp_amt"); float n = ridgednoise(q + warp); n = fit(n, -1, 1, 0, 1); @P.y = pow(n, ch("gamma")) * ch("height"); // gamma 控制山峰锐度
warp 域扭曲是噪声进阶的分水岭:它把"格子的随机"变成"流体的随机",岩石纹理、河道走向都靠它摆脱数字感。调参口诀——先定 freq 再加 octave,warp 最后上且从 0.1 起步。
// Solver 内 (Run Over: Points): 一维元胞自动机向图案的迁移 int state = i@s; int left = point(1, "s", (@ptnum - 1) % npoints(1)); int right = point(1, "s", (@ptnum + 1) % npoints(1)); int rule = chi("rule_number"); // 0-255 = 全部一维规则 int idx = left*4 + state*2 + right; i@s = (rule >> idx) & 1; // 查表演化 // 规则30 => 混沌纹理; 规则90 => 谢尔宾斯基三角
噪声管"自然的随机",模式管"规则的涌现";两者相乘(噪声控制图案的位置权重)是程序化表面细节的万能配方。
最后提醒噪声使用的法律边界式纪律:凡是用在最终交付物上的噪声,参数(含种子)必须登记进资产的参数面板而非留在 Wrangle 字面量里。原因很实际——艺术总监说"这片山的感觉对了,换到那边去"时,你要做的是复制一条已参数化的噪声管线,而不是在代码里翻找硬编码的 0.37。噪声是程序化的"指纹"来源,指纹必须可查档;养成把每个 magic number 提升为 ch() 的反射,是第三章所有技术的共同卫生要求,也是最便宜的专业化步骤。
噪声章的最后一条实战经验:永远保留一份"参数对照截图墙"。把你的项目用过的每种噪声配方(函数、参数、效果截图)归档成图库,标注适用场景——山脊用 ridged+warp、云海用Worley 膨胀、木纹用各向异性拉伸的简单噪声。这份图库的价值在于沟通:艺术总监指着截图说"要这种"的时刻,你能直接落到具体配方而非重新摸索。程序化团队的风格资产,一半在 HDA 里,另一半就在这类对照档案里。