FabricGen: Microstructure-Aware Woven Fabric Generation¶
会议: CVPR 2026
论文: CVF Open Access
代码: 未开源
领域: 扩散模型 / 材质生成
关键词: 织物材质生成, 微结构, 程序化几何, WeavingLLM, 文本到材质
一句话总结¶
FabricGen 把织物材质的生成拆成「宏观纹理」和「微观织造结构」两路——前者用微结构-free 数据微调的扩散模型生成无微结构的 albedo 图,后者用一个 LLM(WeavingLLM)从文本直接设计织造草图与纱线参数、再驱动增强版程序化几何模型合成纱线级微结构,最终融合渲染出比以往方法细节远更丰富、且符合织造规则的逼真织物。
研究背景与动机¶
领域现状:织物材质(窗帘、衣物、室内布料)在渲染中无处不在,但传统制作要分多步——先在 Substance Designer 之类工具里造织造图案,再做纹理、调着色参数,即便熟练美术师也耗时。近期大家用扩散模型(DressCode、FabricDiffusion、MatFuse、ControlMat 等)把这条流程压成"文本/图像 → PBR 贴图",门槛大降。
现有痛点:预训练扩散模型是在自然图像上训的,分辨率和结构约束都不够,生成的织物经常出现人为条纹、物理上不可能的图案,或干脆丢掉微结构——远看还行,一旦贴到布料上做近景渲染,纱线级细节糊成一团、出现假阴影。根因有两点:扩散模型本身画不出纱线级微结构;而且很难对生成过程施加"必须遵守织造规则"这类硬约束。
核心矛盾:织物的真实感同时来自两个尺度——宏观的颜色/图案纹理和微观的纱线交织几何。把这两者塞进同一个扩散模型里一起学,分辨率天花板会让微结构必然被牺牲;而程序化几何模型虽能精确刻画微结构,却需要专家手工设计织造草图和参数,普通用户用不了。
本文目标:让没有任何纺织知识的普通用户,只凭一句文本(可选配一张图)就端到端生成既符合织造原理、又有纱线级细节的高质量织物材质。
切入角度:作者的关键观察是——宏观纹理和微观织造图案本就是两类信息,应该解耦。宏观纹理交给扩散模型(它擅长画颜色和图案),但要逼它只画"干净的、不含微结构的" albedo;微观结构交给程序化模型(它能在任意分辨率下精确表达纱线几何),但用一个领域 LLM 替代"专家"去设计草图和参数。
核心 idea:用「微结构-free 扩散模型画宏观纹理 + LLM 驱动的程序化模型造微观结构」两路解耦,再融合渲染,绕开"单模型既要画图案又要画微结构"的分辨率死结。
方法详解¶
整体框架¶
FabricGen 接收一句文本提示(可选再加一张织物图像),输出可直接用于物理渲染的织物材质,整条流水线分成两条互不干扰、最后在渲染处汇合的支路:
- 宏观支路(macro-scale):一个在"微结构-free 织物纹理"数据集上微调过的扩散模型,从文本(和可选图像)生成纯 albedo / 颜色贴图,只管颜色和图案、刻意不含任何纱线起伏。
- 微观支路(micro-scale):WeavingLLM 先从文本生成一张二进制织造草图(weaving draft)和一组纱线参数(层数、粗糙度、飞絮强度等),再把它们喂给一个增强版程序化几何模型,按需生成纱线级的法线、朝向、高度场等几何数据。
两路产物(宏观 albedo + 微观几何)最后送进 SpongeCake 分层着色模型做融合渲染。因为微观结构是"按需查询"(on-demand query)而非预先烘焙成固定分辨率贴图,所以近景可以无限放大而不糊。两支路用的提示词是分开的——宏观支路喂颜色/风格描述,微观支路喂织法描述。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["文本提示<br/>(可选图像)"] --> B["微结构-free 宏观纹理生成器<br/>微调 FLUX 出纯 albedo"]
A --> C["WeavingLLM<br/>文本→织造草图+纱线参数"]
C --> D["增强程序化几何模型<br/>曲线螺旋多股+滑移+飞絮"]
B --> E["SpongeCake 融合渲染"]
D --> E
E --> F["高细节织物材质"]
关键设计¶
1. 微结构-free 宏观纹理生成器:逼扩散模型只画颜色、不画纱线
以往方法(DressCode、FabricDiffusion)让扩散模型一次性吐出"纹理 + 微结构",结果受分辨率所限要么违反织造规则、要么干脆丢细节。本文反其道而行:把扩散模型约束成只生成不含微结构的纯 albedo 图,把微结构这件难事整个外包给微观支路。具体做法是收集 600 张"微结构-free 织物纹理 + 描述"的数据集,用 LyCORIS 微调 FLUX.1-dev,把一个通用图像生成器改造成"织物专用 albedo 生成器";同时引入 noise rolling 机制保证贴图可无缝平铺(tileable)。它还支持多模态条件——输入一张织物照片(平铺或带褶皱的都行),经 VAE 编码成 latent 后作为扩散初始化条件,引导生成时抑制几何褶皱、但保留原图案风格。消融里可以看到,原始 FLUX 即便被明确指示"no microstructure, no folds, no wrinkles",仍会偶尔画出 3D 物体或隐式条纹,导致烘焙阴影和视觉混乱;微调后才能稳定产出干净的 albedo。
2. WeavingLLM:把"设计织造草图"这件需要专家的事交给 LLM
有了程序化模型,仍有个空缺:怎么自动设计织造图案和几何参数?传统上这要熟练美术师来定。本文训了 WeavingLLM——从 Qwen2.5-14B-it 用 QLoRA 微调而来,训练数据是从 Handweaving.net 收集的 1,142 张标注织造草图(全部限制在 16×16 以内,因此理论上一台 16 综框/踏板的织机就能物理织出模型的任意输出)。它的工作分两步:给定文本提示,先用 LoRA adapter 生成一张二进制矩阵作为织造草图;然后关闭 LoRA adapter,让基座 LLM 按"织物专业知识"预测纱线参数(粗糙度、股数等)。除了 SFT,还做了 prompt tuning——把领域织物先验注入提示,让 LLM 学到"不同织法各有什么特征参数"。消融显示这步很关键:没有 prompt-tuning 的基座 LLM 预测的参数会违背日常经验(比如复现不出斜纹的粗糙感、缎纹的各向异性光泽),有了先验才能给出合理参数。因为只在一个 repeat unit 内生成织造图案,模型天然遵守基本织造原理、且细节丰富。
3. 增强程序化几何模型:曲线螺旋多股 + 全局不规则效应
已有 surface-based 程序化模型(Jin 等)只支持单股纱、且忽略全局不规则性,造出来的织物太"规整"不真实。本文的程序化模型 \(F=\{n(p), t(p), h(p)\}\)(\(p=(x,y)\in[0,1]^2\),分别是法线、切向/朝向、相对高度场)在两方面增强:
其一是曲线螺旋(curved helix)多股纱模型。以往把纱线建模成弯曲圆柱,只能表示单股;本文把每股(ply)建模成绕纱线中心线的螺旋,支持多股配置,且通过把 UV 坐标 \(x,y\) 线性映射到纱线空间弧坐标 \(u,v\),解析地给出几何量而无需显式存储曲线:
其中 \(R\) 是纱线弧半径、\(r_{ply}\) 是股半径、\(\varphi(u)=\varphi(0)+uR\alpha\) 是股沿轴的旋转相位、\(\alpha\) 是螺旋旋转速度;纤维朝向 \(t\) 由股朝向 \(o_{ply}\) 绕法线按捻角 \(\psi\) 旋转得到。这些函数定义了纱线级微结构在 UV 域上的参数化,可按需直接导出法线/高度/朝向贴图。
其二是全局不规则效应,补上以往方法忽略的两种真实现象:
- 纱线滑移(yarn sliding):真实织物的纱线排布并非严格规则。用连续程序噪声扰动纱线位置——沿轴向(x)取 1D Perlin 噪声 \(P(x)\),再对径向(y)施加扰动:\(y_s = 0.5+(y-0.5)(1-k_{sliding}|P(x)|)\),\(y_r = y_s\,e^{k_{sliding}P(x)}\),\(k_{sliding}\) 控制滑移强度。这个双射映射 \(f:y\to y_r\) 可通过逆查询从不规则空间取回规则坐标,效果是露出本被遮挡的下层纱线、产生纱线间的条状缝隙。
- 飞絮纤维(flyaway fibers):指逸出织物表面的纤维。在 SpongeCake 模型里加一个额外纤维层,3D 纤维朝向场 \(o_{flyaway}(p)\) 由两张 2D Perlin 噪声 \(N_1, N_2\) 构造——\(N_1\) 控制纤维位置和水平朝向、\(N_2\) 控制竖直朝向,从而得到连续、类纤维的随机分布,表现为不规则高光。
实验关键数据¶
实验全部在单张 RTX 4090 上完成训练/推理/渲染。对比对象是两个代表性文本到材质方法:DressCode(专做织物)和 MatFuse(通用材质);FabricDiffusion 因未完全开源未纳入对比。
主实验¶
| 条件 | 指标 | MatFuse | DressCode | 本文 |
|---|---|---|---|---|
| 文本条件 | CLIP Score ↑ | 0.240 | 0.307 | 0.317 |
| 文本条件 | 用户研究偏好 ↑ | 1.43% | 16.02% | 82.55% |
| 文本+图像 | CLIP-I Score ↑ | 0.722 | N/A | 0.827 |
CLIP Score 是在 100 个多样文本提示生成的材质上、prompt 与平面渲染之间的平均值;用户研究 12 个 case、64 名参与者选"最符合提示且最真实"的结果。本文在语义对齐、感知质量、视觉真实感上全面领先,尤其用户研究 82.55% 的压倒性偏好说明近景细节的差距非常直观。
消融:WeavingLLM 必要性¶
把 WeavingLLM 与基座 Qwen2.5-14B、GPT-5 对比(COSSIM = 生成草图与参考草图傅里叶谱的余弦相似度,PREF = 60 名参与者的用户偏好率,LPIPS = 渲染图感知差异,渲染统一用纯灰 albedo):
| 案例 | 模型 | COSSIM ↑ | PREF ↑ | LPIPS ↓ |
|---|---|---|---|---|
| herringbone twill | Qwen2.5-14B | 0.583 | 16.9% | 0.183 |
| herringbone twill | GPT-5 | 0.582 | 11.9% | 0.245 |
| herringbone twill | 本文 | 0.701 | 71.2% | 0.125 |
| spot bronson, lace | Qwen2.5-14B | 0.35 | 1.7% | 0.385 |
| spot bronson, lace | GPT-5 | 0.726 | 18.6% | 0.19 |
| spot bronson, lace | 本文 | 0.912 | 79.7% | 0.152 |
即便是 GPT-5 这种强通用 LLM,在"设计织造草图"上也明显不如经过织造数据 SFT 的 WeavingLLM——说明这是个需要领域先验、而非靠通用能力就能解决的专门任务。
关键发现¶
- 解耦是性能主因:把微结构从扩散模型里剥离、外包给程序化模型,是近景细节质量碾压 baseline 的根本——baseline 远看尚可、近看必糊,正是因为微结构被分辨率天花板压死。
- prompt-tuning 决定参数合理性:去掉 prompt-tuning,LLM 预测的纱线参数会违背日常经验(复现不出斜纹粗糙感、缎纹各向异性光泽),说明草图(结构)和参数(外观)两件事都需要领域先验。
- 不规则效应让织物"活"过来:滑移制造纱线间缝隙、飞絮制造不规则高光,加上后渲染与真实拍摄照片的 LPIPS 明显下降(⚠️ 图 11 中各子项 LPIPS 数值与标签的精确对应在原文图注里较难逐一锁定,以原文为准),定性上去掉不规则后织物会显得过于"规整假"。
亮点与洞察¶
- "解耦尺度"的思路很通用:当一个生成任务里"低频内容"和"高频结构"对模型有矛盾需求(这里是颜色 vs 纱线几何),与其指望单模型两头兼顾,不如各用最擅长的工具分头做、最后融合。这个分而治之的范式可迁到其他多尺度材质(皮革、编织、木纹)生成。
- 用 LLM 当"领域设计师"而非"文本生成器":WeavingLLM 输出的不是自然语言,而是结构化的二进制草图 + 参数表,本质是让 LLM 替代需要专家的"设计"环节。这种"LLM → 结构化控制信号 → 程序化引擎"的接法,比让 LLM 直接画图更可控、且天然满足硬约束(16×16 草图必然可织)。
- on-demand 查询替代烘焙贴图:程序化几何不预生成固定分辨率贴图、而是渲染时按需解析求值,使近景可任意放大不糊——这是它相对扩散贴图的结构性优势。
- LoRA 开关的两段式推理:草图阶段开 LoRA、参数阶段关 LoRA 用基座,是个轻巧的工程 trick,让同一个模型分别承担"学到的织造结构"和"通用常识参数"两种角色。
局限与展望¶
- 未开源:代码与训练细节(不少在补充材料里),复现门槛较高。
- 草图受限 16×16:为了可织性把织造草图限制在 16×16 repeat unit,超大或非周期的复杂图案可能表达不了。
- 依赖收集的小数据集:宏观支路仅 600 张微结构-free 纹理、WeavingLLM 仅 1,142 张草图,覆盖的织法/风格广度受数据集限制;罕见织法可能泛化不佳。
- 不规则效应的消融数值含糊⚠️:图 11 的 LPIPS 标注与子项对应关系在 OCR 文本里不够清晰,定量结论需谨慎,建议以原文图为准。
- 评估偏主观:主指标是 CLIP/CLIP-I + 用户研究,缺乏与真实织物的物理量级(如 BTF/反射率)客观对齐。
相关工作与启发¶
- vs DressCode / FabricDiffusion:它们都用微调扩散模型一次性出 PBR 贴图(diffuse/normal/roughness),把纹理和微结构耦在一起,受分辨率限制近景模糊、有结构伪影。本文把两尺度解耦、微结构交给程序化模型,近景细节质量明显更高。
- vs MatFuse / ControlMat(通用材质):它们面向一般 SVBRDF,无法施加"织造规则"这类领域结构约束,也画不出纱线级微结构。本文通过 WeavingLLM + 程序化模型显式注入织造先验。
- vs Jin 等 surface-based 程序化模型:它们假设单股纱、忽略全局不规则(滑移、飞絮)。本文用曲线螺旋支持多股、并补上两类不规则效应,且保持 surface-based 的高效与可解析导出贴图的优点。
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ 首个"文本→程序化微结构"织物生成,宏微解耦 + LLM 当织造设计师的组合很新
- 实验充分度: ⭐⭐⭐⭐ 主对比 + 多组消融到位,但偏主观评估、不规则消融数值含糊、未开源
- 写作质量: ⭐⭐⭐⭐ 动机清晰、方法分层讲透,公式与图配合好
- 价值: ⭐⭐⭐⭐ 给非专家用户造高保真织物的实用工具,解耦范式可迁移到其他多尺度材质