Generating Procedural Materials from Text or Image Prompts
Yale University; Adobe Research
一句话总结
本文提出首个”条件式”程序化材质节点图生成模型:给定文本或图像提示(也可无条件、或补全部分图),用三个 CLIP 条件化的 Transformer 依次生成节点、边、参数序列,产出可编辑、可平铺、任意分辨率的材质节点图。
研究背景
- 领域现状:节点图系统(如 Substance Designer)是工业界做材质设计的主流可视化编程界面,程序化材质天然具备可平铺、任意分辨率、参数可编辑等优点。近期在”逆向拟合”上进展不少——参数估计与优化、基于用户分割的图结构拟合,以及 MatFormer 首次用 Transformer 做节点图的无条件生成。
- 核心痛点:高质量节点图的编写门槛极高,需要专业训练与大量时间。已有逆向方法要么依赖固定的一小组图、要么依赖用户手工分割出的通用结构;而 MatFormer 只能”随机”无条件采样,无法朝着某个具体目标外观去生成。
- 本文 idea:构建一个多模态条件生成模型,让用户用文本描述、参考图、甚至一段”半成品”节点图作为提示,模型据此生成多张语义/结构/颜色都贴合提示的节点图,从而大幅降低探索特定设计空间的门槛。
方法
整体框架:把一张节点图线性化为三条序列——节点序列 \(S_n\)、边序列 \(S_e\)、参数序列 \(S_p\),分别用三个自回归 Transformer 建模。核心目标是条件分布
\[p(g \mid y) := p_\theta(S_n \mid y)\, p_\phi(S_e \mid S_n, y)\, p_\psi(S_p \mid S_e, S_n, y)\]
其中 \(y\) 是文本或图像提示的条件向量。相比 MatFormer 的无条件生成,这里每一步都被 \(y\) 引导,且参数生成额外条件于边序列。
flowchart LR
A["文本 / 图像提示 y"] --> B["CLIP ViT-L/14 编码"]
B --> C["可学习 MLP 映射"]
C --> D["节点 Transformer 生成 Sn"]
D --> E["边 Transformer 生成 Se"]
E --> F["参数 Transformer + GCN 生成 Sp"]
F --> G["反序列化为节点图"]
G --> H["语义校验 + 排序 + 可微优化"]
关键设计:
-
CLIP 多模态条件化。用冻结的 CLIP(ViT-L/14)统一编码文本与图像到同一空间。训练时只用”图像→图”的对应关系,因此网络实际只见过 CLIP 图像空间嵌入;推理给文本时,借鉴 DALL·E 2 的做法,用一个 prior 网络把 CLIP 文本嵌入转换成 CLIP 纹理图像嵌入,再经可学习 MLP 映射到 Transformer 隐藏维度,加到每个编码层(层归一化之后)。另提供一个可选的图像编码方案(Ours (VGG)):叠加 VGG 特征统计量捕捉细尺度纹理、16×16 缩略图概括主色,数值误差略低但无法编码文本。
-
图结构感知的参数生成。不同于 MatFormer 每个节点一条参数序列且参数与边独立,本文把整张图的参数生成为单一序列,并同时条件于节点与边序列。为每个参数 token 附上其所属节点的上下文感知嵌入(per-node attention),该嵌入用 Transformer 编码器计算,再用 6 层 GCN 融合邻域连通性:\(\tau_i = \tau'_i + h(S_n, S_e, i)\),从而捕捉最远 6 条边范围内的边结构。此改动带来约 1.5× 训练加速。
-
数据集清洗与增强。基于 Substance Source 构建新数据集:统一图格式、聚焦标准 PBR 工作流(albedo/normal/roughness/metallic),从后往前剪掉无用输出分支;把含 switch 节点的图按分支拆分为多张小图;过滤过长图(>80 节点 / >200 边 / >210 槽),得到 4667 张有效图(MatFormer 为 2820 张)。再按数据集统计分布对每张图采样 100 组参数(高斯 \(G(\mu^g_p, \beta\sigma_p)\),统计不可靠时退化为缩放均匀分布),最终得约 466,700 张干净图。参数量化用 128 个 bin(MatFormer 为 32),显著降低重建误差。
-
采样、排序与可微优化。采样过程中做语义有效性校验(而非事后处理),只在合法 token 中选择,保证生成即有效;生成后去除孤立节点做正则化。由于参数空间距离不等于图像/文本空间距离,模型会反序列化并渲染出材质图,用 CLIP 余弦(或 sliced Wasserstein 距离)度量与提示的差异,对 top-k(k=5)样本再做可微优化以细化参数(尤其颜色与粗糙度)。单张图推理约 1.32 秒,若加优化约 2~3 分钟(RTX 3090)。
实验结果
在 48 张真实照片的测试集上,与两个基于 CLIP 检索的强基线对比:Ours Uncond(在本文无条件模型预生成的 102,400 张图库中检索+优化)与 Dataset(直接在 466,700 张增强数据集中检索+优化)。指标为 style loss(VGG Gram 矩阵 L1 差 + 16×16 缩略图 L1 差,权重 0.1),报告 top-5 中的 Best-of-5 与 Avg-of-5,越低越好。
| 方法 | Best-of-5(未优化)↓ | Avg-of-5(未优化)↓ | Best-of-5(优化后)↓ | Avg-of-5(优化后)↓ |
|---|---|---|---|---|
| Ours (CLIP) | 0.0314 | 0.0346 | 0.0218 | 0.0242 |
| Ours (VGG) | 0.0300 | 0.0329 | 0.0199 | 0.0221 |
| Ours Uncond(检索) | 0.0382 | 0.0539 | 0.0194 | 0.0227 |
| Dataset(检索) | 0.0384 | 0.0499 | 0.0191 | 0.0237 |
本文条件生成在未优化时明显优于两个检索基线,优化后与之相当;关键优势在于存储:模型仅 15 MB,而预生成图库需 115 GB(差三个数量级)。90% 以上生成图有效。此外还支持文本条件生成、无条件生成(多样性优于 MatFormer)、以及部分图自动补全(自动可视化编程),并与需要用户分割的逆向建模方法对比,本文无需分割、可产出多个变体、覆盖的材质范围更大。
亮点与局限
- 亮点:
- 首个面向程序化材质节点图的条件生成模型,单一架构统一支持图像、文本、无条件、部分图补全四种模式。
- 用 15 MB 模型达到甚至超过 115 GB 检索库的匹配质量,存储优势显著。
- 采样期语义校验保证生成即合法(>90% 有效),配合可微优化弥补参数空间与图像空间的度量鸿沟。
- 系统性的数据清洗/拆分/增强策略,把稀缺的艺术家节点图放大成可训练规模。
- 局限:
- 数据规模仍远小于大语言/生成模型的训练数据,且基础图均由艺术家手工制作、难以廉价扩充,模型能力被限制在艺术家认为有用的材质子集内。
- 只支持标准 PBR 工作流的四类贴图(Base Color / Normal / Roughness / Metalness)。
- 参数量化仍会引入误差;失败案例中整体结构对但细节难以精确匹配,真实照片尤其难以被程序化模型精确复现。
- 参数空间损失与图像/文本空间匹配误差之间存在鸿沟,目前只能靠事后优化缓解。
延伸思考
- 论文把”生成材质”重新定义为”生成程序(节点图)”而非”生成贴图纹素”,这与 StyleGAN inversion 一类图像域反演形成鲜明对比,保留了可控性、可平铺与任意分辨率——这条”生成程序而非结果”的思路对其它图形资产(着色器、几何 CSG 树、L-系统)同样适用。
- 作者提出的未来方向很有价值:现有艺术家图并不遵循编程复用原则,若能挖掘可复用子图/子函数、构建分层模块库,既能缩短序列长度又能引入更强结构先验,本质上是把”程序综合”里的抽象与复用带进材质生成。
- 参数空间训练 vs 图像空间匹配的鸿沟是核心痛点,当前靠 top-k 可微优化打补丁;若能在训练/推理阶段直接可微地评估并最小化图像/文本空间误差(如把渲染与感知损失端到端接入),有望摆脱昂贵的后处理优化。
- 用 DALL·E 2 式 prior 把文本嵌入迁移到”纹理图像嵌入”以弥合训练/推理模态差,是一个可迁移的工程技巧,值得在其它”只有图像监督却想支持文本条件”的任务中借鉴。