mcpField
B
blender-hardsurface-modeling

blender-hardsurface-modeling

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

关于 blender-hardsurface-modeling

面向 Blender 硬表面模型制作的技能,供需要制作游戏资产、产品可视化或影片模型的人使用。它按资产目标选择建模流程,并提供修改器、拓扑、着色与 QA 的操作规范。

主要功能

  1. 01按目标选择建模流程
  2. 02按真实比例制作基础形体
  3. 03配置布尔与倒角修改器
  4. 04安排 UV 与修改器堆栈
  5. 05检查着色、拓扑与模型质量

适用场景

  1. 01制作近景游戏道具
  2. 02制作需要烘焙贴图的主角资产
  3. 03制作产品可视化或影片模型

安装

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

$npx skills add https://github.com/el4cteo/blender-skills --skill blender-hardsurface-modeling

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

附带文件scripts/_bpyx.pyscripts/apply_stack.py

详细介绍

硬表面建模

执行模型位于 blender-core 中。每次建模后都运行 blender-asset-qa。

先选择工作流

工作流适用场景输出
中模(倒角 + 加权法线,不烘焙)现代游戏、近距离观察的道具、快速迭代直接使用游戏网格;平铺材质/装饰条纹理集
高模 → 低模(通过布尔 + 倒角或细分制作高模,烘焙低模)核心资产、独特纹理、严格的三角形预算_high + _low → blender-texture-baking
细分曲面(支撑线/折痕 + Subsurf)渲染、产品可视化、电影平滑表面,由线/折痕控制边缘

流程

  1. 使用基本体按真实比例(ob.dimensions)制作白模。在添加任何细节前,先确定轮廓和比例,并对照参考图检查。
  2. 在倒角、布尔或实体化之前应用缩放(transform_apply(scale=True)),因为修改器的距离使用对象空间。
  3. 按照主级 → 次级 → 三级形体的顺序建模。先用布尔制作切口和面板,再添加倒角。细小的三级细节放入法线贴图/贴花,或作为“浮片”加入高模以便烘焙。
  4. 立即为基础网格展开 UV(中模)。倒角/布尔修改器会传递 UV,但添加倒角后,没有边缘足够锐利,无法自动标记缝线。然后构建修改器堆栈:scripts/apply_stack.py -- --objects Body --preset midpoly --cutters Cut1 Cut2。顺序:镜像 → 布尔 → 倒角 → 加权法线 →(导出时三角化)。
  5. 检查着色:使用平滑着色 + 加权法线(保留锐边)。平面上不能有渐变。使用 matcap 或在 solid 着色模式下查看 look。
  6. 使用 blender-asset-qa 进行 QA,然后仅对导出副本应用堆栈(--apply),保留可编辑源文件。

修改器堆栈规则

  • 布尔:将切割器放入 Cutters 集合,显示模式设为 WIRE,并设置 hide_render=True。求解器:EXACT(稳健的默认选项)、MANIFOLD(速度快得多,但输入必须是封闭流形)、FLOAT(旧版快速模式,遇到共面容易出问题)。切割器较多时,使用 operand_type="COLLECTION"。
  • 避免布尔面共面:让切割器略微穿过表面。共面也会导致 z-fighting。
  • 倒角:limit_method="ANGLE"(30°),或对手动选定的边使用带有 bevel_weight_edge 属性的 "WEIGHT"。启用 use_clamp_overlap、harden_normals=True、miter_outer="MITER_ARC"。宽度约为部件尺寸的 0.5–2%,并在整个资产中保持一致。
  • 倒角后添加加权法线:mode="FACE_AREA"、keep_sharp=True、权重 50。需要平滑面(移除 sharp_face 属性或调用 shade_smooth)。
  • 按角度平滑(4.1+,替代自动平滑):bpy.ops.object.shade_auto_smooth(angle=rad) 会添加 GN 修改器;shade_smooth_by_angle 会以破坏性方式设置 sharp_edge。
  • 镜像:use_clip=True、use_mirror_merge=True。只建模 x ≥ 0 的一半。
  • 细分曲面:使用支撑线(距边缘为面宽的 1–5%)或 crease_edge(0–1)控制边缘。启用 use_limit_surface。资产要进入游戏引擎时,不要使用折痕。
  • 仅在导出/烘焙时三角化(keep_custom_normals=True、BEAUTY)。烘焙网格和导出网格采用相同的三角化方式,可确保法线贴图同步。

拓扑规则

  • N 边形:在中模/游戏网格中,平坦且不变形的面可以使用。曲面以及任何会细分或变形的区域都不能使用。
  • 极点(5 条或更多边)应位于平坦区域,不能放在曲率峰值或倒角上。
  • 根据屏幕尺寸设置圆柱段数:小型(螺栓)6–8,中型(把手)12–16,大型(桶体)24–32,核心资产/近景 48+。使用 4 或 8 的倍数,以便布尔/镜像与现有线环对齐。
  • 可见曲面上不能有狭长三角形(会造成着色和 LOD 瑕疵)。
  • 面板线:向内插入 + 挤出(中模),或在高模上制作布尔凹槽,然后烘焙。
  • 将细节密度用在轮廓需要的地方,而不是平面上。

Python 中的边/面属性(4.0+ 名称)

me = ob.data
bw = me.attributes.get("bevel_weight_edge") or me.attributes.new("bevel_weight_edge", "FLOAT", "EDGE")
cr = me.attributes.get("crease_edge") or me.attributes.new("crease_edge", "FLOAT", "EDGE")
sh = me.attributes.get("sharp_edge") or me.attributes.new("sharp_edge", "BOOLEAN", "EDGE")
bw.data[edge_index].value = 1.0; sh.data[edge_index].value = True
me.edges[edge_index].use_seam = True          # seams are still an edge property

在 bmesh 中按角度选择锐边:e.calc_face_angle(0) > math.radians(30)。

注意事项

  • 倒角看起来臃肿或发生翻转,通常意味着缩放未应用或缩放不均匀,也可能是几何体重叠(开启钳制)。
  • 布尔运算没有返回结果或结果杂乱:切割器未闭合/非流形(Exact 可以处理,Manifold 不行),或者其法线方向相反。
  • 加权法线不起作用:面采用平面着色,或者更早的修改器破坏了自定义法线。
  • 5.2:GN Mesh Bevel 节点可用于在节点树中进行程序化倒角(blender-geometry-nodes)。
  • Trim-sheet/中等多边形资产:UV 映射到修剪条带(blender-retopology-uv),材质使用平铺(blender-pbr-materials)。

评论

支持 Markdown