PartUV: Part-Based UV Unwrapping of 3D Meshes
Hillbot Inc.
一句话总结
PartUV 是一套基于”部件”的 3D 网格 UV 展开流水线,它把学习式语义部件先验(PartField)与几何启发式在自顶向下的递归搜索中结合起来,在保持低扭曲的前提下生成数量显著更少、且与部件边界对齐的 UV 图表(charts)。
研究背景
UV 展开把 3D 表面映射到 2D 平面,为纹理、法线、AO 等各类贴图提供存储与编辑空间,是 3D 内容创作流水线的基础环节。它通常包含三步:表面参数化(展平)、图表分割(沿缝切开以降低扭曲)、以及 UV 打包(在单位方块内排布图表)。
现有方法大多针对专业美术师制作的”良态”网格调优,在 AI 生成网格上频频失效。这类网格常通过神经场等值面(如 Marching Cubes)提取,表面凹凸、三角面碎小、几何质量差(存在断连组件或孔洞),导致传统方法要么超时,要么产出极度碎片化的图集——单个图表只含一两个三角面。碎片化会妨碍纹理绘制与编辑,在图表边界引入纹理渗色与烘焙/渲染伪影,并让下游任务背上数量庞大的图表包袱。
近期一些神经场方法(如 Nuvo)虽能控制图表数量,却往往需要三十分钟以上且扭曲仍然明显;另一些联合优化缝长与扭曲的方法同样昂贵。此外,仅依赖局部几何属性的分割方法容易把语义连贯的区域(如整块电视屏幕、人脸)切散,产生不直观的边界,进一步增加纹理创作与语义感知渲染的难度。
方法
整体框架
给定网格 \(M=(V,F)\),PartUV 的目标是把面集分解为一组不相交且连通的图表 \(F=\bigcup_{k=1}^{K} C_k,\ C_i\cap C_j=\varnothing\ (i\neq j)\),并用 ABF++ 将每个图表展平为 2D 映射 \(\phi_k: C_k \rightarrow \mathbb{R}^2\)。核心思路是”粗到细”两阶段:先用学习式方法 PartField 把网格划分为几何较简单的语义部件,再用几何启发式把每个部件进一步切分为可低扭曲展平的图表,整个过程由自顶向下的递归搜索统一调度,力求在满足用户指定扭曲阈值 \(\tau\) 的同时最小化图表总数。
flowchart TD
A[输入网格 M] --> B[PartField 预测部件感知特征场]
B --> C[对面特征做凝聚聚类 得到层次部件树 T]
C --> D[从根节点递归遍历 T]
D --> E[对当前节点用 Normal / Merge 两种几何启发式生成候选图表集]
E --> F[ABF++ 展平并评估扭曲]
F --> G{扭曲 ≤ 阈值 τ ?}
G -- 是 --> H[采纳该图表集与 UV 映射]
G -- 否 --> I[递归遍历左右子树 合并子树最优结果]
H --> J[按语义部件分组 UV 打包]
I --> J
关键设计
-
自顶向下递归树搜索(含预算约束):从部件树根节点出发,每个节点先用主启发式生成候选分解;若无候选满足 \(\tau\),则不设预算地递归搜索左右子树并合并;若有可行候选,则取图表数最少者,再以”最优图表数减一”为收紧的预算 \(B\) 继续向下探索,只有更优(图表更少且合法)才替换。预算 \(B\) 随搜索收紧,防止递归过深,实践中很少深入。
-
两种几何启发式 Normal 与 Merge:Normal 对部件面法线做凝聚聚类,一次生成 1 到 \(t\)(实验取 \(t=10\))个图表的候选分解,快而常够用;扭曲用面积拉伸度量 \(distortion(\mathcal{C})=\max_{C\in\mathcal{C}}\left(\frac{1}{\lvert C\rvert}\sum_{f\in C}\max\left(stretch(f),\frac{1}{stretch(f)}\right)\right)\)。Merge 更昂贵:先算部件的有向包围盒(OBB),给每个面按最接近的 OBB 法线打 1~6 标签,据连通性切成组件后由小到大沿最长公共边迭代合并,每次合并都用 ABF 校验扭曲与无重叠,仅在 Normal 已给出可行解时才启用,用于换取更少的图表。
-
运行时加速与鲁棒处理:左右子树递归调用全部并行以吃满多核;用 GPU 加速的网格简化生成候选图表的低分辨率近似,作为”代理扭曲”快速评估,最终才在原始高分辨率网格上跑 ABF。对非流形边通过复制共享顶点、拆边转为流形;对多连通组件先按 PartField 层次分解,必要时回退到逐连通组件处理,避免过度碎片化。
-
语义感知打包:图表按语义部件分组,可打进单个图集,也可按部件跨多个 \([0,1]^2\) 图集均衡分布,让同部件图表在空间上聚拢,便于集体编辑。
实验结果
在 Common Shapes、Trellis(AI 生成)、ABC(CAD)、PartObjaverseTiny 四个数据集上,与 Blender Smart UV、xatlas 对比。核心指标为图表数、缝长、角度/面积扭曲与耗时。PartUV 在图表数与缝长上大幅领先,扭曲保持在同一低水平。以下摘录 Table 1:
| 数据集 | 方法 | 成功率(%) | 平均图表数 ↓ | 中位图表数 ↓ | 中位缝长 ↓ | 角度失真 ↑ | 面积失真 ↓ | 整体面积失真 ↓ | 耗时(s) |
|---|---|---|---|---|---|---|---|---|---|
| Common Shapes (24) | Blender | 100.0 | 1360.3 | 332.5 | 44.7 | 0.906 | 1.172 | 1.102 | 0.3 |
| xatlas | 100.0 | 974.8 | 301.0 | 42.9 | 0.987 | 1.885 | 1.504 | 77.9 | |
| ours | 100.0 | 48.6 | 16.5 | 16.6 | 0.990 | 1.283 | 1.128 | 39.4 | |
| Trellis (114) | Blender | 100.0 | 3352.9 | 1957.0 | 94.5 | 0.921 | 1.252 | 1.107 | 1.1 |
| xatlas | 100.0 | 1541.6 | 895.0 | 91.2 | 0.984 | 2.357 | 1.093 | 13.1 | |
| ours | 100.0 | 568.7 | 233.5 | 58.8 | 0.981 | 1.373 | 1.145 | 26.0 | |
| ABC (100) | Blender | 100.0 | 305.3 | 78.0 | 25.0 | 0.992 | 1.122 | 1.067 | 0.7 |
| xatlas | 100.0 | 249.6 | 56.0 | 26.5 | 1.000 | 1.192 | 1.030 | 31.0 | |
| ours | 100.0 | 85.4 | 15.5 | 17.3 | 0.998 | 1.191 | 1.073 | 31.9 | |
| PartObjaverseTiny (200) | Blender | 100.0 | 1509.2 | 647.5 | 70.2 | 0.925 | 1.325 | 1.115 | 0.2 |
| xatlas | 100.0 | 1142.1 | 491.5 | 67.0 | 0.982 | 1.728 | 1.286 | 4.4 | |
| ours | 100.0 | 544.8 | 177.0 | 41.8 | 0.983 | 1.305 | 1.112 | 10.1 |
在 Common Shapes 上 PartUV 只用了 Blender 约 1/31 的图表数。与 Open3D 相比,后者在 Trellis 上成功率仅 39.5% 且扭曲很大;与 Nuvo/OptCuts 相比,二者每形状优化常超 30 分钟,Nuvo 扭曲偏高、OptCuts 成功率有限(24 个形状仅 9 个有输出)。消融实验(Table 4,Trellis)显示:固定 20 部件的朴素组合面积失真高达 2.18;用面法线替换 PartField 特征会使运行时翻倍、图表增多;去掉 Merge、去掉递归、去掉扭曲代理都会带来图表数或耗时的上升。
亮点与局限
亮点:把语义部件先验显式引入 UV 展开,图表数量与缝长大幅下降,同时保持低扭曲;边界与语义部件对齐,缝落在感知不显眼处;自顶向下递归搜索 + 预算剪枝在保证质量的同时控制搜索深度;工程上并行化、GPU 简化代理、非流形/多组件处理让流水线鲁棒且高效(通常数秒到数十秒完成);语义分组还带来单/多图集的应用级打包灵活性。
局限:方法性能依赖 PartField 的部件质量,Merge 启发式计算成本较高;Table 1 中角度/面积扭曲相比部分基线并非全面最优(在低扭曲区间内换取更少图表);在 Trellis 的 95 分位 chart 级面积失真(1.220)略高于 Blender/xatlas,说明极端个例仍有改进空间。
延伸思考
PartUV 展示了”语义先验 + 几何启发式”互补的范式:学习式部件划分负责宏观语义连贯,几何启发式负责微观低扭曲展平,二者通过递归搜索交织。这一思路可能迁移到其他需要”少而有意义的分块”的几何处理任务,例如网格简化的区域划分、四边网格化的补丁规划,或纹理合成中的语义分区。另一个值得探索的方向是把扭曲阈值 \(\tau\) 做成随部件语义自适应,让重要部件(如人脸)享受更严格的扭曲预算;以及将代理扭曲的简化策略推广为可微、端到端可学习的搜索控制器,进一步压缩运行时。