关于 blender-hardsurface-modeling
面向 Blender 硬表面模型制作的技能,供需要制作游戏资产、产品可视化或影片模型的人使用。它按资产目标选择建模流程,并提供修改器、拓扑、着色与 QA 的操作规范。
主要功能
- 01按目标选择建模流程
- 02按真实比例制作基础形体
- 03配置布尔与倒角修改器
- 04安排 UV 与修改器堆栈
- 05检查着色、拓扑与模型质量
适用场景
- 01制作近景游戏道具
- 02制作需要烘焙贴图的主角资产
- 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) | 渲染、产品可视化、电影 | 平滑表面,由线/折痕控制边缘 |
流程
- 使用基本体按真实比例(
ob.dimensions)制作白模。在添加任何细节前,先确定轮廓和比例,并对照参考图检查。 - 在倒角、布尔或实体化之前应用缩放(
transform_apply(scale=True)),因为修改器的距离使用对象空间。 - 按照主级 → 次级 → 三级形体的顺序建模。先用布尔制作切口和面板,再添加倒角。细小的三级细节放入法线贴图/贴花,或作为“浮片”加入高模以便烘焙。
- 立即为基础网格展开 UV(中模)。倒角/布尔修改器会传递 UV,但添加倒角后,没有边缘足够锐利,无法自动标记缝线。然后构建修改器堆栈:
scripts/apply_stack.py -- --objects Body --preset midpoly --cutters Cut1 Cut2。顺序:镜像 → 布尔 → 倒角 → 加权法线 →(导出时三角化)。 - 检查着色:使用平滑着色 + 加权法线(保留锐边)。平面上不能有渐变。使用 matcap 或在
solid着色模式下查看look。 - 使用
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