SuperAPI AI 工具集

blender-hardsurface-modeling

设计与创作

查看项目

更新于 10-16 19:37

技能介绍

本技能描述 Blender 5.2 中硬表面与道具建模的执行流程。文中指出执行模型位于 blender-core,并建议在每次建模通过后运行 blender-asset-qa。

一、先选择工作流

资料给出三种工作流及其适用场景与输出:

  1. 中模(bevel + 加权法线,不烘焙):适用于现代游戏、近距观察的道具、快速迭代;输出为直接可用的游戏网格,配合平铺材质或 trim sheet。
  2. 高模转低模(高模通过布尔 + 倒角或细分,低模烘焙):适用于主角资产、独特贴图、严格三角面预算;输出 _high 与 _low,并进入 blender-texture-baking。
  3. 细分(支持环/折痕 + Subsurf):适用于渲染、产品可视化、影视;输出平滑表面,边缘由支持环或折痕保持。

二、建模程序

  1. 从基本体开始,按真实比例(ob.dimensions)做大形块,先确定轮廓和比例,再进入细节,并与参考比对。
  2. 在倒角、布尔或 solidify 之前应用缩放(transform_apply(scale=True)),因为修改器距离使用对象空间。
  3. 按初级 → 次级 → 三级形体的顺序推进。用布尔开切口和面板,再做倒角。小的三级细节放入法线贴图或贴花,或作为“漂浮物”放入高模用于烘焙。
  4. 此时(中模阶段)对基础网格做 UV。倒角与布尔修改器会传递 UV,但倒角后没有边缘足够尖锐可以自动缝合。随后用脚本构建堆栈:scripts/apply_stack.py -- --objects Body --preset midpoly --cutters Cut1 Cut2。顺序为:Mirror → Booleans → Bevel → Weighted Normal →(导出时 Triangulate)。
  5. 着色检查:平滑着色 + 加权法线(保持 sharp)。平面不应出现渐变。可用 matcap 查看或在实体着色下查看。
  6. 用 blender-asset-qa 做 QA,然后只在导出副本上应用堆栈(--apply),保留可编辑源文件。

三、堆栈规则

布尔:把切割体放入 Cutters 集合,显示设为 WIRE 且 hide_render=True。求解器:EXACT(稳健默认)、MANIFOLD(快很多,但输入必须是闭合流形)、FLOAT(旧式快速,共面时脆弱)。切割体多时使用 operand_type="COLLECTION"。避免共面布尔面:让切割体略微伸出表面,否则也会造成 z-fighting。

倒角:limit_method="ANGLE"(30°),或 "WEIGHT" 配合 bevel_weight_edge 属性手工选边。开启 use_clamp_overlap、harden_normals=True、miter_outer="MITER_ARC"。宽度约为部件尺寸的 0.5–2%,并在资产中保持一致。

加权法线放在倒角之后:mode="FACE_AREA",keep_sharp=True,权重 50。需要平滑面(移除 sharp_face 属性或调用 shade_smooth)。

Smooth by Angle(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-gon:在中模/游戏网格的平面、非变形面上可以接受。切勿用在曲面或任何会细分或变形的对象上。

极点(5 条以上边)应位于平面区域,绝不在曲率峰值或倒角上。

圆柱段数按屏幕大小:小(螺栓)6–8,中(手柄)12–16,大(桶身)24–32,主角/特写 48+。使用 4 或 8 的倍数,使布尔/镜像与现有循环对齐。

可见曲面区域不要有长而细的三角形(会产生着色和 LOD 瑕疵)。

面板线:中模用 inset + 向内挤出,或在高模上做布尔槽,然后烘焙。

把密度用在轮廓需要的地方,而不是平面。

五、通过 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 # 缝合线仍是边属性

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

六、常见问题

倒角看起来发胖或翻转,通常意味着缩放未应用/不均匀或几何重叠(开启 clamp)。

布尔返回空或垃圾:切割体未闭合/非流形(Exact 能应付,Manifold 会失败),或法线反转。

加权法线无效果:面是平面着色,或更早的修改器破坏了自定义法线。

5.2:存在 GN Mesh Bevel 节点,用于节点树内的程序化倒角(blender-geometry-nodes)。

trim sheet/中模资产:UV 放到 trim 条带(blender-retopology-uv),材质平铺(blender-pbr-materials)。

关于该技能的官方说明、收费与价格、具体下载安装方式,资料未提供。