SuperAPI AI 工具集

blender-retopology-uv

设计与创作

查看项目

更新于 10-16 19:37

技能介绍

【用途】 该技能面向 Blender 5.2 中的重拓扑与 UV 制作,用于把高模或扫描/生成网格处理成可用于游戏或动画的低模,并为其准备 UV。技能的执行模型位于 blender-core。

【重拓扑:自动方式】 自动化脚本调用方式为 scripts/auto_retopo.py -- --objects Sculpt --tris 8000 --method ...,会生成 <name>_low 并把源对象隐藏。三种方法:

  • quadriflow:适合有机道具、静态角色、扫描件;产出干净的四边面。会先做体素重网格以保证输入是流形;UV 会丢失,需要重新展开。
  • decimate:适合背景道具、LOD、AI 生成网格;保留 UV 与外形,产出三角面,速度快。
  • planar:适合硬表面 CAD/布尔结果;会消融平坦区域,保留接缝、锐边、材质与 UV 边界。

【重拓扑:手动方式】 英雄角色以及任何会变形的对象适合手动重拓扑。做法是新建一个网格对象并添加 Shrinkwrap 修改器(PROJECT,目标为雕刻体),吸附设置为 FACE_PROJECT + use_snap_project,并让源对象使用不同的视口颜色/X 光显示。自动重拓扑对变形的英雄网格不够好,因为边线布线很重要。

【变形网格的边线布线规则】

  • 眼睛和嘴周围要有同心环线(至少 3 圈)。法令纹环线从鼻翼流向嘴角。
  • 每个弯曲关节(肘、膝、指关节)要有 3 圈线,并在两侧各加一圈以保持体积。肩部需要额外环线以支持抬臂。
  • 极点(3/5 边顶点)要避开弯曲区域,放在平坦、刚性的区域(胸部、后脑勺)。
  • 四边面均匀分布,在变形和轮廓需要处提高密度。三角面只用在隐藏且不变形的部位。
  • 2026 年角色三角面预算:移动端 5–15k,Roblox 身体总计 ≤ 10.7k,主机/PC 第三人称 30–80k,英雄/影视级 100k+。具体目标需查看 blender-game-optimization。

【UV:接缝】 接缝要隐藏(腋下、腿内侧、后脑、部件下方),沿硬边分布,圆柱在背面切开。游戏网格规则:每条硬边(约 >60°、sharp_edge)都必须是 UV 接缝,否则法线贴图会出现瑕疵。scripts/uv_pack.py --seams-from-sharp 60 可完成该操作。

【UV:展开】

  • --method seams:基于角度的展开(Angle Based),配合已标记的接缝。
  • --method min_stretch:SLIM,4.3+,在有机体上扭曲最小。
  • --method smart:硬表面/自动方式,--angle 66。 矩形 UV 岛可以用 Follow Active Quads 拉直(仅实时操作),以便贴花和像素网格对齐。

【UV:打包与纹素密度】 平均 UV 岛缩放后按像素留边距打包:2k → 8 px,4k → 16 px,移动端 1k → 4 px。--shape CONCAVE 打包最紧但无界面时较慢,默认 AABB 是即时的。 纹素密度(scripts/texel_density.py --res 2048):同一资产内密度差异应 ≤ 1.3。可用 --set <px/m> 设置;若 fits_0_1 为 false,需要改分辨率或密度。质检由 blender-asset-qa 报告零面积 UV 面和重叠百分比。

【纹素密度目标(px/m,工作室基线而非硬性规定)】

  • 第一人称英雄/武器:1024–2048
  • 第一人称环境:512–1024
  • 第三人称游戏:主机/PC 512,移动端 256
  • 俯视/策略:128–256
  • Roblox:每种纹理约 256–512;5×5 studs → 256²,10×10 → 512²,20×20 → 1024² 同一场景内所有对象应共享同一密度。例外是英雄资产,可保持在 2 倍以内。

【特殊情况】

  • 镜像/堆叠 UV 可节省空间但会破坏唯一烘焙。烘焙时把重复岛精确移动 +1 U(移到 0–1 之外),之后再移回。其法线贴图必须是镜像安全的(支持 MikkTSpace 的引擎由切线空间处理)。
  • 光照贴图 UV2(--lightmap,生成 UVMap_Lightmap):不能重叠,每个岛都在 0–1 内,留足边距。Unreal/Unity 可自行生成;只在引擎管线需要时提供。UV0 保持激活用于贴图。
  • UDIM(影视/英雄):岛放在 1001+ 的平铺中(每格 U 偏移 1)。纹理节点 image source="TILED"。游戏引擎大多不支持 UDIM。
  • Trim sheet:先展开长条,再把岛缩放/移动到 trim 行上(V 位置来自 trim 布局)。U 方向可以为平铺超出 0–1。
  • Roblox:恰好一套 UV,全部在 0–1 内。允许重叠。

【注意事项】

  • 5.0+:UV 选择在多个 UV 贴图间共享(.uv_select_* 属性),旧的 BMLoopUV.select 代码会失效。
  • uv.* 操作符在编辑模式下运行,作用于选中的面。需要先全选(脚本已处理)。
  • 无界面运行时 uv.pack_islands 配合 CONCAVE/CONVEX + 旋转即使在很小的网格上也可能耗时 2–25 秒。迭代时用 AABB。
  • 展开时报 “failed to solve island”:该岛没有接缝(封闭形状),需要添加接缝。
  • 测量纹素密度前要先应用缩放,否则密度读数不正确(脚本使用世界空间并已考虑缩放)。