2026/10/11 12:14:37

Material Maker 噪声节点完全指南:13 类程序化噪声生成器的参数、原理与实战用法

Material Maker 噪声节点完全指南:13 类程序化噪声生成器的参数、原理与实战用法 桌面应用图形学3D渲染图像处理【免费下载链接】material-makerA procedural textures authoring and 3D model painting tool based on the Godot game engine项目地址https://gitcode.com/gh_mirrors/ma/material-maker点击查看免费下载Material Maker 是一套基于 Godot 引擎的过程化纹理创作与 3D 模型绘制工具其噪声Noise节点家族提供了从纯随机白噪声到分形布朗运动FBM、Voronoi、小波噪声等十余种程序化纹理生成能力。本文以 nodes_noise.rst 为主线完整覆盖官方文档定义的 13 个噪声节点并结合 addons/material_maker/nodes 目录下的.mmg节点源码逐项讲解每个节点的输入输出、参数范围、底层着色器实现与典型应用场景。读完本文你将能够根据瓷砖、动物皮肤、污渍、裂纹、云朵、毛发等具体纹理需求在 Material Maker 中快速选出合适的噪声节点并调出理想参数。噪声节点家族总览官方文档 nodes_noise.rst 对噪声节点给出了精确定义The noise nodes are nodes that do not accept any input and generate one or several images made from random patterns.噪声节点是不接受任何输入、由随机图案生成一张或多张图像的节点。这是噪声家族区别于其他节点的核心特征它们是纹理图的起点源头不需要上游输入直接产出黑白、灰度或彩色随机图案供后续 node_filter_math.rst 等数学/滤镜节点组合使用。依据官方文档的 toctree完整清单如下节点官方文档类型输出Noisenode_noise.rst黑白网格随机单输出White Noisenode_noise_white.rst灰度白噪声单输出Valuenode_noise_value.rst值噪声叠加单输出Colornode_noise_color.rst彩色噪声单输出Voronoinode_noise_voronoi.rst泰森多边形4 输出Triangle Voronoinode_noise_voronoi_triangle.rst三角 Voronoi5 输出FBMnode_noise_fbm.rst分形布朗运动单输出Shard FBMnode_noise_shard_fbm.rst碎晶 FBM单输出Anisotropicnode_noise_anisotropic.rst各向异性噪声单输出Waveletnode_noise_wavelet.rst小波噪声单输出Crystalnode_noise_crystal.rst晶体复合噪声单输出Dirtnode_noise_dirt.rst污渍复合噪声单输出Cloudsnode_noise_clouds.rst云朵复合噪声单输出Directional Noisenode_noise_directional_noise.rst方向性复合噪声单输出从结构上可以分为三组简单随机噪声Noise、White Noise、Color、数学噪声Value、Voronoi、FBM、Anisotropic、Wavelet、Shard FBM 等单节点实现、以及复合噪声图Crystal、Dirt、Clouds、Directional Noise——它们自身就是由 FBM、Tiler、Math 等节点拼装成的子图。这些节点在节点库 base.json 中统一归类到Noise/树形分组如Noise/Value、Noise/Value/Color、Noise/Anisotropic等并各自携带预置的默认参数与图标。简单随机噪声Noise、White Noise 与 Color NoiseNoise 节点Noise节点输出一张随机生成的黑白纹理官方文档 node_noise.rst。它有两个参数Grid Size纹理的行列数即把 UV 空间划分为多少行多少列的网格。源码 noise2.mmg 中参数范围first: 2, last: 12默认值 8Density每个格子为白色的概率范围为min: 0, max: 1默认 0.5。0 表示全黑1 表示全白。它还有一个可选输入Density Inputdensity_in可以用上游纹理逐像素驱动 Density 值默认$density。其核心着色器实现非常简单见 noise2.mmgvec2 $(name_uv)_uv floor($uv*$size); // 输出 step(rand($(name_uv)_uvvec2($seed)), $density_in($(name_uv)_uv))即先用floor把 UV 切成网格再对每个格子用rand()取随机数与密度阈值比较大于阈值输出白、否则输出黑。官方文档特别强调虽然它有网格大小参数但它生成的是与分辨率无关的纹理Although this node has a grid size, it generates a resolution independant texture——因为随机数完全由格子坐标决定放大缩小后每个格子依然保持一致。这是黑白像素化随机图案如马赛克、散布点阵的基础。White Noise 节点White Noise节点输出随机生成的灰度纹理见 node_noise_white.rst。与 Noise 节点不同它不产生网格方块而是每个像素级随机独立的灰度值Grid Size纹理的分辨率行列数源码 noise_white.mmg 中范围为first: 4, last: 13默认 11。它的 GLSL 实现位于节点自身的global段float white_noise(vec2 uv, float size, float seed) { vec2 seed2 rand2(vec2(seed, 1.0-seed)); uv / size; vec2 point_pos floor(uv)vec2(0.5); float color rand(seed2point_pos); return color; }同样地由于随机值来自floor(uv)0.5的格子坐标输出也是分辨率无关的文档在 Notes 中重申了这一点。白色噪声的典型用途是作为盐与胡椒类随机干扰或配合后处理做颗粒/噪点效果。Color Noise 节点Color Noise节点输出随机生成的彩色纹理node_noise_color.rst可以看作 Noise 节点的 RGB 版本。它只有一个参数Grid Size范围 2~12默认 8并通过引入公共函数color_dots实现// noise_color.mmg 输出定义 rgb: color_dots($(uv), 1.0/$(size), $(seed))每个格子被填充一个随机 RGB 颜色同样与分辨率无关。文档 node_noise_color.rst 的参数说明里沿用了 Density 的描述the likelihood for each cell to be white但从实现看 Color Noise 节点实际只暴露 Grid Size 一个参数注释继承自 Noiste 节点模板使用时以源码为准。经典数学噪声Value、Voronoi 与 Triangle VoronoiValue 节点Value节点node_noise_value.rst生成多个频率递增、振幅递减的 Value 噪声函数之和即多倍频叠加值噪声。官方文档给出的典型应用包括污渍stains、木纹wood、灰尘dust。参数如下Scale X / Scale Y第一次迭代第一个倍频的细分数量即网格分辨率Iterations迭代次数叠加的倍频数量Persistance相邻迭代之间振幅的比率值越低生成的纹理越平滑。文档原文Lower values of persistance generate smoother textures.其在节点库 base.json 中注册为Noise/Value类型perlin默认参数iterations: 3, persistence: 0.5, scale_x: 4, scale_y: 4与 node_noise_value.rst 的示例一致。该类型对应的倍频叠加逻辑每层频率翻倍、振幅乘 persistence、最后除以归一化系数可见于 fbm.mmg 中的oldfbm_value与$(name)_fbm循环实现。文档还列出两个变体Color Value由 3 张灰度 Value 噪声图像合成 RGB 图像节点库中为Noise/Value/Color类型perlin_colorValue Warp 1 / Value Warp 2带域变形domain warping的 Value 噪声即先用噪声扰动采样坐标再求噪声。Voronoi 节点Voronoi节点node_noise_voronoi.rst输出 Voronoi 噪声纹理官方文档列出的用途包括不规则瓷砖irregular tiles、动物皮肤或鳞片animal skin or scales、裂纹cracks。它有 4 个输出Nodes节点距离到特征点feature point距离的灰度图Borders边界距离到所有特征点对的最近中垂线距离的灰度图即晶胞边界Random color每个晶胞填充随机颜色的彩色图Fill单元格信息输出必须连接到 Fill 伴生节点Fill companion node。第四个输出的设计是 Material Maker 的独特之处文档 node_noise_voronoi.rst 说明它可以与Fill To系列节点配合生成随机颜色、自定义 UV 等从而制作不同颜色的砖块这类复杂材质。参数来自 voronoi.mmg参数含义范围默认Scale X / Scale Y定义特征点的数量网格细分1 ~ 324Stretch X / Stretch Y施加在距离函数上的拉伸系数0.01 ~ 11Intensity作用于第一个输出距离图的强度因子0 ~ 10.75Randomness特征点位置随机程度0 ~ 11实现上voronoi.mmg 的全局函数iq_voronoi明确注释Based on https://www.shadertoy.com/view/ldl3W8 / Inigo Quilez经典的 IQ Voronoi 算法先在第一遍 3×3 邻域内找到最近特征点再在第二遍 5×5 邻域内求最近边界距离最终返回vec4(随机色坐标, 节点距离×intensity, 边界距离)。由于特征点坐标通过mod(n g size, size)取模整张图是**可平铺tileable**的。Triangle Voronoi 节点Triangle Voronoi节点node_noise_voronoi_triangle.rst输出到细胞边界的三角距离Voronoi 纹理特点是用三角形六边形晶格度量距离场。它有 5 个输出源码 voronoi_triangle.mmgNodes到单元格中心距离的灰度图length(m3[0].yz)Border到特征点边界距离的灰度图m3[0].xRandom color每个晶胞随机颜色的彩色图UV Map把每个晶胞映射为局部 UV 的贴图可连接 Custom UV 节点node_transform_custom_uv.rst使用Normal Map指向细胞边界的法线贴图。参数与 Voronoi 相似Scale X/Y1~32、Stretch X/Y0~1与 Randomness0~1。实现基于三角形 SDFsdTriEdges、sdTri、sdgBorder等函数其tri_voronoi返回一个mat3依次编码节点距离/位置、边界法线、三角坐标并以rand3(...)生成每格随机颜色、以法线向量构造 Normal Map。相较普通 VoronoiTriangle Voronoi 的输出通道更丰富尤其适合需要每格独立 UV 与法线的场景如鳞片状表面。分形噪声FBM 与 Shard FBMFBM 节点FBMfractional Brownian motion分形布朗运动节点node_noise_fbm.rst通过以越来越小的细节重复一种噪声图案得到 FBM 纹理。它有一个可选输入Offset Input用于驱动 Offset 值。参数源码 fbm.mmg参数含义范围默认Noise基础噪声类型value、perlin、cellularcellular 2~6 变体枚举Value(0)X / Y Scale第一倍频噪声的尺度1 ~ 324Folds折叠次数把噪声负向偏移后取绝对值0 ~ 50Iterations迭代倍频数1 ~ 103Persistance每个后续迭代的强度0 ~ 10.5Offset采样点偏移可用于动画噪声—0文档 node_noise_fbm.rst 中提及的Lacunarity后续迭代的尺度在 fbm.mmg 中由循环内size * 2.0固定为 2.0而 fbm2.mmg即节点库中fbm2类型被 Dirt/Clouds 等复合节点大量复用额外提供 offset 参数并在 value/perlin 基础噪声中加入sin(p * 6.2831... offset * 6.2831...)的相位偏移从而实现随时间或外部输入动画的能力。FBM 的倍频叠加核心逻辑在 fbm.mmg 的$(name)_fbm中for (int i 0; i octaves; i) { float noise oldfbm_$noise(coord*size, size, seed); for (int f 0; f folds; f) { noise abs(2.0*noise-1.0); // fold折叠使噪声出现脊状细节 } value noise * scale; // 每层按 amplitude 累加 normalize_factor scale; size * 2.0; // 频率翻倍 scale * persistence; // 振幅按 persistence 衰减 } return value / normalize_factor; // 归一化到 [0,1]其中noise枚举展开为oldfbm_value、oldfbm_perlin、oldfbm_cellular以及 cellular2~6两倍最近距离差、曼哈顿距离、切比雪夫距离等变体这也是文档中value, perlin, simplex, cellular types, voronoise or gabor noise的具体实现范围——当前仓库中实际内置的是 value/perlin/cellular 家族。Shard FBM 节点Shard FBM Noisenode_noise_shard_fbm.rst同样输出 FBM 纹理但基于碎晶噪声shard noise风格更尖锐、更具结晶感。它有 2 个输入Offset Input可选驱动 Offset 值Sharpness Map一张影响 sharpness 参数的贴图默认$sharp可用上游纹理逐像素调节尖锐程度。参数源码 shard_fbm.mmg参数含义范围默认Sharpness噪声的尖锐度0 ~ 10.7Scale X / Scale Y第一倍频尺度1 ~ 327Folds折叠次数0 ~ 50Iterations倍频数1 ~ 84Persistence相邻倍频的强度0 ~ 10.5Offset采样点偏移可用$time做动画0 ~ 10实现上shard_fbm.mmg 的全局代码注释Adapted from https://www.shadertoy.com/view/dlKyWw by ENDESGA其shard_noise用三维 hash 与高斯径向权重exp2(-6.283185*dot(r,r))叠加各特征点贡献并用sharpness * dot(r, hash(...)-0.5)配合tanh分解注释提到优化来自 Xor控制锐利程度。输出调用中sharpness 被动态计算为pow(2, $sharp_in($uv)*$sharp*8.0)——输入贴图可以在 2 的幂次范围内实时改变尖锐度这是 Shard FBM 区别于普通 FBM 的最大特色。特殊噪声Anisotropic 与 WaveletAnisotropic 节点Anisotropic noisenode_noise_anisotropic.rst输出沿 X 轴插值的噪声纹理产生沿单一方向拉伸的条纹状随机图案适合纤维、拉丝、丝绸等方向性纹理。参数源码 noise_anisotropic.mmg参数含义范围默认Scale XX 方向细分1 ~ 324Scale YY 方向细分1 ~ 1024256Smoothness沿 X 轴的模糊量0 ~ 11Interpolation平滑插值方式0 为线性插值1 为 hermitesmooth插值0 ~ 11文档 node_noise_anisotropic.rst 中的描述是0 is linear interpolation, 1 is hermite interpolation与源码一致anisotropic()函数先用rand在每行产生随机偏移然后计算mixer clamp((fract(uv.x*size.xoffset.x)-0.5)/smoothness0.5, 0.0, 1.0)分别做线性混合与smoothstep混合最后mix(linear, smoothed, interpolation)。Scale Y 默认 256 而 Scale X 默认 4正是为了把随机点沿 Y 方向拉长成条纹。注意 Scale Y 上限为 1024可产生极细的方向性细节。Wavelet 节点Wavelet noisenode_noise_wavelet.rst输出小波图案重复生成的纹理视觉上表现为规则排列的、带方向旋转的正弦波包络。参数源码 wavelet_noise.mmg参数含义范围默认Type定义倍频octave如何推进Add 1/2/3加法型或 Mult 2/3乘法型枚举Add 1Scale X / Scale Y噪声细分1 ~ 324Iterations迭代次数越多越耗性能1 ~ 103Persistence后续迭代的强度0 ~ 10.5Frequency每个小波图案的频率0 ~ 21Offset每个小波图案的相位-1 ~ 10wavelet_noise的核心实现wavelet_noise.mmgfloat wavelet(vec2 uv, vec2 size, float s, float frequency, float offset) { ... return (0.5*sin(ruv.x*6.28*frequencyoffset)0.5)*max(0.0, 1.0-2.0*length(uv-vec2(0.5))); }即每个晶格内放一个旋转后的正弦波并乘以圆形衰减包络叠加循环中每个迭代再采样一次偏移 0.5 的副本并按 Type 决定尺度推进方式type0时 UV 与尺寸做加法增长否则做乘法放大以及每层 persistence 衰减。Iterations 参数注释明确higher values might affect performance在大尺寸输出时应酌情降低。复合噪声图Crystal、Dirt、Clouds 与 Directional Noise这四类节点与前述单节点不同它们的.mmg文件是type: graph的子图——由 Voronoi、FBM、Tiler、Math、Switch、Buffer 等基础节点拼装而成通过gen_parameters的remote节点把内部参数如 Type 的config_control配置、Scale、Resolution暴露到外部面板。Crystal 节点Crystalnode_noise_crystal.rst输出基于组合 Voronoi 噪声的晶体状图案。参数只有Scale X / Scale Y默认 16通过linked_control同时绑定内部两个 Voronoi 节点的 scale_x/scale_y。从 crystal.mmg 的子图结构看两个种子不同的 Voronoi 节点scale 16、randomness 1、stretch 0.85分别经数学运算op 19/13/14/1/3/2 等做距离场的组合与差值、乘法处理再经一个default_in2: 1.45的缩放后输出。内部完全由math、voronoi与ios构成无外部输入。Dirt 节点Dirtnode_noise_dirt.rst输出多种污渍噪声参数Type污渍类型三档可选源码中config_control定义 Dirt 1 / Dirt 2 / Dirt 3内部通过 Switch 节点切换三个分支Scale输出噪声的尺度1 ~ 8默认 1内部以$d_scale驱动 FBM 与 Tiler 的 scale/tx/ty 等表达式Resolution输出灰度图的分辨率通过linked_control绑定内部buffer_2的 size默认 11。从 dirt.mmg 的子图可见它组合了多个shape六边形、tiler随机散布瓦片带随机偏移/旋转/缩放/明度变化、fbm2Perlin FBM 经 colorize 渐变着色与rotate、math运算最终经switch选择后由buffer输出。这解释了 Dirt 输出为何是污渍斑点而非纯数学噪声——它本质上是把 FBM 底色与随机摆放的六边形污渍瓦片叠加的结果。Clouds 节点Cloudsnode_noise_clouds.rst输出多种云状噪声参数与 Dirt 完全同构Type云朵类型三档可选config_control定义 Noise 1/2/3 三套配置Scale噪声尺度1 ~ 8Resolution输出分辨率绑定内部 buffer 的 size。clouds_noise.mmg 的子图规模很大内部使用多个tiler将六边形 shape 随机平铺、fbm2、noise_white、fast_blur、brightness_contrast、tones、invert、buffer等数十个节点经math合成多层云雾密度后由 Switch 选择输出。Tiler 的scale_x/scale_y等参数以$n_scale表达式联动 Scale 参数实现整体缩放。Directional Noise 节点Directional Noisenode_noise_directional_noise.rst输出多种方向性噪声参数同样是 Type三档Noise 1/2/3、Scale、Resolution。从 directional_noise.mmg 的子图看它大量使用长宽比例悬殊的 FBM 与 Perlin如scale_x: 4.0*$n_scale、scale_y: 72.0*$n_scale、32.0*$n_scale×256.0*$n_scale配合brightness_contrast做对比度调整、tones做色调映射从而把各向同性的噪声沿单一方向拉长形成方向性明显的纹理。三档 Type 分别对应子图中 Noise 1 / Noise 2 等注释分组内不同的分支组合。噪声节点的组合实战建议综合官方文档与源码可以给出如下选型与调参建议像素风/点阵→ Noise、White Noise、Color Noise调整 Grid Size 与 Density或直接连 Density Input输出可直接做二值掩码或随机色块三者都是分辨率无关的适合任意输出尺寸。污渍、灰尘、木纹→ Value 节点按文档 node_noise_value.rst 的指引用低 Persistance0.3~0.5获得平滑渐变用高 Iterations 增加细节层次需要彩色时改用 Color Value 变体需要扭曲变形时用 Value Warp 1/2。裂纹、瓷砖、鳞片→ Voronoi用 Nodes 输出做距离衰减裂纹、用 Random color Fill 输出接 Fill To 节点做异色砖块需要每格独立 UV 与法线时选择 Triangle Voronoi并把 UV Map 接到 Custom UV 节点。地形起伏、大理石、山脉→ FBM / Shard FBMFolds 从 0 增至 3~5 可把平滑噪声折成山脊状abs 折叠Shard FBM 的 Sharpness Sharpness Map 能逐像素控制锋利度Offset 可配合$time做流动动画源码 shard_fbm.mmg 的 offset 说明。布料纤维、拉丝金属、水流→ Anisotropic默认 Scale Y 远大于 Scale X 即可得到方向性条纹Smoothness 控制模糊跨度Interpolation 选择线性或平滑过渡。晶体、污渍、云朵、方向纹理→ Crystal / Dirt / Clouds / Directional Noise直接选用复合节点并切换 Type用 Scale 控制整体尺度、Resolution 控制输出分辨率由于这些节点内部含 Buffer 节点Resolution 直接决定最终渲染精度需与最终导出分辨率匹配。小结Material Maker 的 14 个噪声节点覆盖了程序化纹理生成中最常用的三类需求纯随机Noise/White Noise/Color Noise、可平铺数学噪声Value/Voronoi/Triangle Voronoi/FBM/Shard FBM/Anisotropic/Wavelet与即用型复合噪声Crystal/Dirt/Clouds/Directional Noise。其核心实现全部以 GLSL 形式保存在 addons/material_maker/nodes 下的.mmg定义中多数节点Voronoi、Shard FBM 等明确标注了算法来源Inigo Quilez、ENDESGA 等社区经典实现并经过平铺取模与归一化处理可直接用于无缝纹理。配合 node_factory.gd 与 base.json 中的节点注册表这些节点在编辑器内以Noise/分组呈现。实际创作时只需按上述选型表在 nodes_noise.rst 的 13 个节点间选择、微调参数即可快速搭建出各类材质的随机底图。赞分享桌面应用图形学3D渲染图像处理【免费下载链接】material-makerA procedural textures authoring and 3D model painting tool based on the Godot game engine项目地址https://gitcode.com/gh_mirrors/ma/material-maker点击查看免费下载相关推荐Material Maker TEX3D FBM 节点完全指南3D 分形布朗运动噪声的原理、参数与 Godot 着色器实现Material Maker TEX3D FBM 节点完全指南3D 分形布朗运动噪声的原理、参数与 Godot 着色器实现 本文基于 Material Mak桌面应用图形学3D渲染图像处理DeepSeek-Reasonix新手避坑指南7个常见误区与正确打开方式DeepSeek Reasonix新手避坑指南7个常见误区与正确打开方式 DeepSeek Reasonix 是一款 DeepSeek 原生的终端 AI 编码人工智能AI 应用AI Agent代码智能体CLIMaterial Maker 3D SDF FBM 节点完全指南为有符号距离场添加分形噪声Material Maker 3D SDF FBM 节点完全指南为有符号距离场添加分形噪声 SDF FBMSigned Distance Field Fra桌面应用图形学3D渲染图像处理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考