跳转至

DirectUV: Image-Conditioned UV Texture Generation with Surface-Aware Positional Encoding

会议: NeurIPS2026
arXiv: 2609.34651
领域: 3D 视觉
关键词: UV 纹理生成、表面感知位置编码、多层级注意力、图像条件、整流流

一句话总结

DirectUV 在冻结的 Flux VAE 潜在 UV 空间直接生成网格纹理,把三维表面坐标写入各注意力头的旋转位置编码,并将参考图和粗 UV 仅作为条件,在 GSO 上取得 25.13 PSNR、0.9527 SSIM,同时改善跨 UV 岛的一致性与细节。

研究背景与动机

给已有三维网格贴纹理,常见路线是先用二维扩散模型生成多个视角,再把颜色投影、烘焙到 UV 图。这样的路线能借用强大的图像先验,但每个视角看不到全部表面,斜视区域容易拉伸,不同视角还可能对材质和光照给出冲突答案。投影阶段必须把这些不一致的观测合并,因而遮挡内部、接缝和背面经常出现破碎或模糊纹理。

直接在 UV 空间生成可以避免把多视角图像当作最终纹理来源,却仍有另一个问题:UV 展开只是参数化,不是物体真实的邻接关系。网格上一条连续花纹跨过接缝后,可能分布在相距很远的两个 UV 岛;UV 图上恰好相邻的像素,也可能属于完全不同的表面。TEXGen 等方法用点云注意力补充三维信息,但若主干的位置编码仍来自二维 UV 网格,注意力的空间先验依然与目标表面错位。

DirectUV 的切入点不是再增加一个几何分支,而是修改决定查询与键如何相互比较的位置编码。同时,投影得到的粗 UV 不必成为必须保留的初始化,它可以只提示布局,让生成器在去噪中纠正错误颜色。核心 idea:以三维表面坐标替换 UV 网格坐标,并让不同注意力头读取不同粒度的表面位置,在同一个潜在 UV 生成过程中同时建立跨接缝关联和局部细节。

方法详解

整体框架

输入是一张参考图,以及已有 UV 参数化的网格;输出是可以直接贴回该网格的完整 UV 纹理,而不是新几何。训练时,真实 UV 纹理经冻结的 Flux VAE 编码后加噪,DiT 学习预测整流流方向;推理时从高斯噪声开始生成,再由同一个冻结 VAE 解码。

方法由条件分路、表面感知位置编码和多层级头分配组成。参考图提供全局外观与局部图像特征,粗 UV 提供位置对齐的布局线索;网格预计算的规范坐标图(Canonical Coordinate Map,CCM)只为位置编码提供几何坐标,不进入外观条件包。下面的 SAPE 与多层级头分配都发生在同一 DiT 的注意力内部,不是额外的串行生成器。

%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
    I["参考图 + 粗 UV"] --> C["条件分路"]
    N["带噪 UV 潜变量"] --> C
    C -->|UV token 与图像条件| S["表面感知位置编码"]
    G["网格 → CCM"] -->|几何坐标,不是外观条件| S
    S -->|注意力内部的位置配置| M["多层级头分配"]
    M --> D["DiT 流方向预测"]
    D -->|推理:28 步 Euler 与 VAE 解码| O["完整 UV 纹理"]
    T["训练:真实 UV 潜变量与噪声"] -.->|流匹配监督| D

关键设计

1. 条件分路:让图像语义和 UV 布局各走适合自身坐标的入口

参考图与目标 UV 图不共享像素坐标,因此不能直接逐位置相加。论文把 CLIP 的池化全局特征送入 Flux 原本用于时间步和文本嵌入的调制路径,通过自适应层归一化(AdaLN)影响全部 token,主要表达颜色、材质基调和对象身份。DINOv2 的密集图像 patch token 则替换原架构中的文本 token,进入联合注意力流,让 UV token 能按内容检索参考图中的细节。这里不是简单地把 CLIP 与 DINO 特征都当成同一种交叉注意力输入。

粗 UV 与目标纹理共享 UV 坐标,因而走另一条位置对齐的路径:先用同一个冻结 Flux VAE 编码,再与带噪目标 UV 潜变量沿通道拼接,之后进行 patch 化。实现中 VAE 空间下采样 8 倍、潜变量有 64 个通道,拼接后输入是 128 通道,输出仍是 64 通道。训练集还预计算潜变量逐位置、逐通道的均值和标准差,并在训练、推理中统一归一化。

重要的是,粗 UV 不是生成起点,也不是需要固定的已知像素。整个目标潜变量都从噪声生成,所以模型可以借用投影布局,也可以拒绝错误颜色。附录 A 的键盘例子中,粗 UV 把底面错误地涂成白色,最终结果仍恢复了与参考图和周围区域一致的深色金属外壳。这是定性机制证据,而不是保证所有错误条件都能被纠正。

2. 表面感知位置编码:让跨 UV 岛的关系由三维坐标决定

CCM 是一张 UV 空间图,但每个有效像素存储的是对应网格点的三维坐标,不是 RGB 颜色。基础 SAPE 将它下采样到 token 网格,使每个 UV token 得到一个表面坐标。随后查询、键不再使用二维 UV 网格的 RoPE,而使用这个三维位置进行旋转。头内特征维度按三个坐标轴分组,各轴独立旋转;实现的每头 120 维分为 40、40、40。

对第一个 token 的查询和第二个 token 的键,原文式(1)的机制可写为:

\[ \tilde{\mathbf{Q}}_{i}^{(h)}=\mathrm{RoPE}(\mathbf{Q}_{i}^{(h)};\mathcal{S}_{i}),\qquad \tilde{\mathbf{K}}_{j}^{(h)}=\mathrm{RoPE}(\mathbf{K}_{j}^{(h)};\mathcal{S}_{j}). \]

其中 \(\mathcal{S}_{i}\) 是 CCM 提供的三维表面坐标。旋转引入的相对位置关系取决于 \(\mathcal{S}_{j}-\mathcal{S}_{i}\),不再取决于 UV 展开后的间距,因此在三维空间接近、却被接缝分开的区域有了直接建立关联的空间先验。注意力仍由查询、键的内容共同决定,并不因此变成只按距离计算的邻居平均。

这里的“三维接近”是环境三维坐标的相对偏移,不是沿网格表面计算的测地距离,也不等价于显式拓扑邻接。两片薄表面空间上靠得很近但沿表面很远时,坐标本身无法区分这两种关系。CCM 也不属于条件包 \(\mathbf{c}\),只通过 SAPE 进入模型,不能把它描述成额外的几何特征条件分支。

3. 多层级头分配:每个头读一个位置,整个 token 看见多种粒度

单个 token 覆盖一片 UV 区域,用一个三维坐标代表它可能足以连接不同 UV 岛,却无法表达该 patch 内部的细微位置差异。多层级 SAPE 在同一 patch 中读取逐渐细分的 CCM:层级 \(l\) 对应 \(2^l\times2^l\) 的子网格,共 \(4^l\) 个子单元。它不把所有层级坐标叠加到每个头,而是给每个头分配一个层级中的一个子单元坐标,然后按基础 SAPE 的方式旋转该头的查询和键。

具体实现有 3 个层级、24 个注意力头,分成 4 组,每组 6 个头。每组的一个头读取 level-0 整块坐标,一个头读取该组对应的 level-1 子单元,四个头分别读取其中嵌套的四个 level-2 子单元。于是三个层级的头数为 4:4:16;各头先在自身单一粒度的位置关系下计算注意力,再由输出投影混合。它增加的是已有头之间的位置分工,不新增可学习参数或辅助几何网络。

原文 §3.4 说“每个层级的每个子单元恰好由一个头读取”,但 §4.2 的配置实际上让同一个 level-0 坐标在四组中重复读取。这里保留明确的配置:level-1 与 level-2 分别被四个和十六个头覆盖,level-0 被四个头共享;不把那句概括扩写成全层级无重复的分配规则。

一个完整示例

以附录 A 的键盘为例,输入是参考图和带 UV 的键盘网格。推理时 Kiss3dGen 先产生多视角图,再投影成粗 UV;其中底面虽然被投影覆盖,却被错误标成白色。CLIP 给出整体材质线索,DINOv2 提供图像局部外观,粗 UV 潜变量则告诉生成器相应区域在哪里,而不是要求它复制白色。

假设外壳相邻区域在 UV 展开后分属两个岛,CCM 仍把它们映射到相近的三维位置。SAPE 让相应 token 的查询、键使用这个表面位置关系;多层级头分配进一步区分每个 token 内部的子区域。从噪声经过 28 步去噪后,VAE 解码出完整 UV,底面可以与外壳其余部分保持深色金属外观。这个例子解释的是条件可被修正的流程,不是论文提供了对各注意力头的逐头可视化证明。

损失函数 / 训练策略

训练采用整流流匹配。真实 UV 潜变量记为 \(\mathbf{x}\),高斯噪声为 \(\boldsymbol{\epsilon}\),均匀采样的时间步为 \(t\in[0,1]\);线性插值得到 \(\mathbf{z}_{t}=(1-t)\mathbf{x}+t\boldsymbol{\epsilon}\),目标速度是噪声减去真实潜变量。原文式(2)为:

\[ \mathcal{L}_{\theta}=\mathbb{E}_{t,\mathbf{x},\boldsymbol{\epsilon},\mathbf{c}}\left[w(t)\left\|v_{\theta}(\mathbf{z}_{t},t,\mathbf{c})-(\boldsymbol{\epsilon}-\mathbf{x})\right\|_{2}^{2}\right],\qquad w(t)\equiv1. \]

训练条件来自已知网格的渲染图,而不是每步调用推理时的多视角生成器。每步随机投影 0、1、2 或 4 个渲染视角,0 个对应空白粗 UV;部分视角带光照、部分使用反照率颜色,主动制造不一致,使粗 UV 成为可能缺失、可能有误的提示。参考图使用正面渲染,四个规范视角的方位角为 0、90、180、270 度,仰角为 5 度。

模型包含 6 个 MMDiT 块和 12 个单流块,图像编码器为带 registers 的 DINOv2 ViT-L/14 与 CLIP ViT-B/32。训练使用 8 张 NVIDIA A800,每卡 batch size 16,训练 170K 步;优化器为 8-bit AdamW,学习率 \(10^{-5}\)、权重衰减 \(10^{-4}\),betas 为 0.9 和 0.999,梯度裁剪 1.0,并使用 bf16 与梯度检查点。

推理固定参考图条件、粗 UV 与 CCM,从噪声向真实潜变量方向进行 28 步 Euler 积分,最后冻结 VAE 解码。论文将它称为直接 UV 生成,指最终目标在 UV 潜在空间生成,而不是整个系统完全没有多视角生成和投影:标准推理的粗 UV 仍由 Kiss3dGen 的视角投影得到。

实验关键数据

主实验

训练数据正文列为 TexVerse、PartNext、Objaverse,过滤后约 100K 个带纹理网格,UV mask、真实 UV 与 CCM 的分辨率均为 1024×1024。测试使用与训练数据不重叠的完整 Google Scanned Objects(GSO),所有方法接收相同网格和单张正面参考图;输出纹理用包含顶部、底部的多方向反照率渲染评测。

PSNR 与 SSIM 衡量渲染结果对真实反照率图像的逐像素保真度;FID 与 KID 衡量分布相似性。下表保留原文 Table 1 的数值,KID 的额外缩放约定在提供的正文中未说明,不自行补上倍数。

方法 PSNR ↑ SSIM ↑ FID ↓ KID ↓
TEXGen 24.45 0.9417 44.09 34.32
FlexPainter 23.21 0.9463 47.04 39.25
Hunyuan3D-2.1 24.74 0.9450 39.872 33.34
UniTEX 24.23 0.9504 42.11 39.21
DirectUV 25.13 0.9527 39.17 30.03

DirectUV 在表中四项指标均最佳,但不同指标的最强对照不是同一个模型:PSNR 比 Hunyuan3D-2.1 高 0.39,SSIM 比 UniTEX 高 0.0023。FID、KID 数值不能解释为某个接缝区域的直接误差,也不能仅凭这张表推断端到端推理更快。

消融实验

下表来自原文 Table 2。去掉 SAPE 时,仅将位置编码换回二维 UV-grid RoPE,其余模型保持不变;去掉多层级时,全部头共享 level-0 坐标。

配置 PSNR ↑ SSIM ↑ FID ↓ KID ↓
无 SAPE 23.82 0.9376 58.42 72.36
单层级 SAPE 24.36 0.9462 40.86 36.74
多层级 SAPE(完整模型) 25.13 0.9527 39.17 30.03

关键发现

  • 相比无 SAPE,完整模型的 PSNR 高 1.31、SSIM 高 0.0151,FID 低 19.25、KID 低 42.33。Figure 4 的定性解释是跨 UV 岛出现的颜色错配减少,与位置先验的动机一致。
  • 单层级 SAPE 已明显改善 FID、KID;再加入多层级后,PSNR 从 24.36 到 25.13,SSIM 从 0.9462 到 0.9527。作者将后一步主要解释为子 patch 位置精度改善、模糊减轻,而非新增外观条件。
  • Figure 3 的井、垃圾桶内部和风扇展示遮挡补全与冲突条件下的优势;附录 B 展示 0、1、2、4 个视角的粗 UV 输入仍可生成合理纹理,但没有给出对应的定量完整度曲线。

亮点与洞察

  • 几何不只可以作为特征输入,也可以直接改变注意力比较位置的方式。这样即使二维布局把连续表面拆开,模型仍能在生成过程中使用三维相对位置,而不是事后再修接缝。
  • 多层级被分配到头维度而不是堆叠为一个混合坐标。每个头保持单一粒度的旋转规则,输出投影再整合不同粒度信息,是一个可迁移到其他几何参数化生成任务的结构思路。
  • 把投影结果降为条件,重新生成全部纹理,为纠正错误而不是仅填补空洞留下空间。收益依赖训练中确实见过不完整和不一致条件,不能仅靠“从噪声开始”这句话保证。

局限与展望

  • 作者明确承认依赖 UV 参数化质量。附录 D 的大量细碎 UV 岛和狭长碎片会使 token 的 CCM 表达过粗,多层级也无法完全恢复细节,导致模糊与颜色泄漏;训练又过滤了严重碎片化布局,因此此类输入同时偏离训练分布。
  • 三维环境坐标不是测地距离,几何上近而拓扑上分离的表面仍可能需要额外约束。这是机制层面的潜在边界,论文没有提供专门的薄壳或近接触表面量化实验。
  • 实验主要依赖 GSO 一个定量测试集,生成网格上的 Tripo、Rodin 应用只给定性结果。正文没有端到端时延、显存、重复运行方差,以及按接缝或遮挡区域划分的专用定量指标。
  • 数据身份存在正文与参考文献不一致:§4.1 写 TexVerse,参考文献 [27] 实际列出 Objaverse-XL。笔记保留该冲突,不能据此把训练数据名字或来源自行改成一致。
  • 可进一步测试 UV 重排不变性,并研究 UV 感知预处理或自适应 token 化。对碎片化 UV 的改善应单独验证,而不是把增加子层级当作已被证明的解决方案。

相关工作与启发

  • vs TEXGen / TexGarment:这些方法通过点云注意力或三维特征交叉注意力注入几何;DirectUV 在 UV token 的位置编码中表达三维关系。区别是几何影响交互的入口,而不是本文第一次使用三维信息。
  • vs RomanTex / Hunyuan3D-2.1:两者已使用三维感知 RoPE,但主要作用于多视角图像生成,再投影烘焙纹理;DirectUV 把同类空间思想放到 UV 潜变量注意力中,让跨岛关联参与最终纹理生成。
  • vs UniTEX:UniTEX 将投影的部分纹理与三平面特征空间补全结合;DirectUV 不把投影像素作为必须保留的最终值。其优势是可纠错,代价是已观测区域也不受硬一致性约束。
  • 研究启发:可保持网格和纹理不变,只改变 UV 岛排布或切割方式,比较 SAPE 与二维 RoPE 的一致性,并加入近接触但拓扑分离的表面对照。这能区分“对参数化不敏感”与“真正理解表面拓扑”,是待验证方向而非本文结论。

评分

  • 新颖性: 4/5。将表面坐标位置编码与逐头多粒度分工结合到直接 UV 生成中,贡献边界清晰,但三维 RoPE 已有先例。
  • 实验充分度: 3/5。主结果和两级消融支持核心设计,仍缺多数据集、局部专用指标与资源开销比较。
  • 写作质量: 4/5。条件与位置几何的区分较清楚,但头分配概括和数据集引用存在需要保留的歧义。
  • 价值: 4/5。适合已有网格的参考图纹理生成,对遮挡和接缝有实际意义,但受 UV 质量和条件来源约束。