mcpField
B
blender-retopology-uv

blender-retopology-uv

github.com/el4cteo创意与媒体569109 次安装2 周前更新
代码仓库

关于 blender-retopology-uv

面向 Blender 美术与技术美术人员的重拓扑和 UV 工作指南,涵盖自动与手动网格处理、展开、密度控制及检查。

主要功能

  1. 01自动重拓扑方法选择
  2. 02变形网格边缘流规则
  3. 03UV 接缝与展开方法
  4. 04UV 岛打包和密度控制
  5. 05特殊 UV 场景处理

适用场景

  1. 01为游戏道具生成低模
  2. 02制作适合变形角色的拓扑
  3. 03为网格展开并整理 UV
  4. 04排查 UV 与纹理密度问题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/el4cteo/blender-skills --skill blender-retopology-uv

安装后在 Claude Code 中输入/blender-retopology-uv确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

scripts/
_bpyx.py
auto_retopo.py
texel_density.py
uv_pack.py

详细介绍

重拓扑与 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

  1. 缝线:将其隐藏(腋下、大腿内侧、后脑勺、部件下方),沿硬边设置,圆柱体在背面切开。游戏网格规则:每条硬边(>~60°,sharp_edge)都必须是 UV 缝线,否则法线贴图会出现瑕疵。scripts/uv_pack.py --seams-from-sharp 60 可完成此操作。
  2. 展开:--method seams(基于角度,使用标记的缝线)、--method min_stretch(SLIM,4.3+,有机模型的失真最小)、--method smart(硬表面/自动,--angle 66)。
  3. 拉直矩形岛(仅限实时使用 Follow Active Quads),使饰条和像素网格对齐。
  4. 平均岛屿比例 + 打包,边距以像素计:2k → 8 px,4k → 16 px,移动端 1k → 4 px。--shape CONCAVE 可实现最紧凑的打包(无头模式下较慢)。默认的 AABB 可即时完成。
  5. 纹素密度(scripts/texel_density.py --res 2048):同一资产内的 spread 保持 ≤ 1.3。使用 --set <px/m> 设置;如果 fits_0_1 为 false,请更改分辨率或密度。
  6. 质量检查:blender-asset-qa 会报告 UV 面积为零的面,以及重叠百分比。
纹素密度目标(px/m;工作室基准,并非硬性规定)
场景px/m
第一人称主角/武器1024–2048
第一人称环境512–1024
第三人称游戏512(主机/PC),256(移动端)
俯视/策略游戏128–256
Roblox每张纹理约 256–512:5×5 studs → 256²,10×10 → 512²,20×20 → 1024²
同一场景中的所有内容都应使用统一的密度。主角资产是例外,可保持在 2 倍范围内。

特殊情况

  • 镜像/堆叠 UV可以节省空间,但会导致烘焙结果无法保持唯一性。烘焙时,将重复的岛恰好沿 U 轴移动 +1(移到 0–1 范围之外),然后再移回。它们的法线贴图必须支持镜像(在使用 MikkTSpace 的引擎中,切线空间会处理这一点)。
  • 光照贴图 UV2(--lightmap,生成 UVMap_Lightmap):不能重叠,每个岛都必须位于 0–1 范围内,并留出充足的边距。Unreal/Unity 可以自行生成;只有在引擎管线需要时才附带。保持 UV0 为当前活动 UV,用于纹理绘制。
  • UDIM(影视/主角资产):岛位于 1001 及以上的图块中(每个图块的 U 偏移为 1)。纹理节点图像的 source="TILED"。大多数游戏引擎不支持 UDIM。
  • Trim sheet:先展开条带,再缩放/移动各岛,使其对齐 trim 的行(V 坐标取决于 trim 布局)。岛在 U 方向可以超出 0–1 范围,以支持平铺。
  • Roblox:只能有一个 UV 集,且所有内容都必须位于 0–1 范围内。允许重叠。

注意事项

  • 5.0+:UV 选择状态在不同 UV 映射之间共享(.uv_select_* 属性)。旧的 BMLoopUV.select 代码会失效。
  • uv.* 运算符在编辑模式下运行,并作用于选中的面。请先全选(脚本会处理)。
  • 即使网格很小,无头模式下使用 CONCAVE/CONVEX 和旋转执行 uv.pack_islands 也可能耗时 2–25 s。迭代时请使用 AABB。
  • 展开警告“failed to solve island”:该岛没有缝线(形状是封闭的)。请添加缝线。
  • 测量纹素密度前请应用缩放,否则密度读数会不正确(脚本使用世界空间,并且已经考虑缩放)。

评论

支持 Markdown