关于 blender-modeling-modifiers
blender-modeling-modifiers 为 Blender 5.x 建模与修改器工作提供技术指导,面向需要操作网格、设置修改器或建立雕刻流程的用户。它涵盖 bmesh、布尔运算、硬表面建模和重拓扑,并优先通过已连接的 Blender MCP 服务操作实时会话。
主要功能
- 01配置修改器堆栈
- 02用 bmesh 创建和编辑网格
- 03执行布尔运算与网格清理
- 04建立硬表面与重拓扑流程
- 05设置雕刻工作流
适用场景
- 01为模型添加和调整修改器
- 02程序化创建或编辑网格
- 03对物体执行布尔操作
- 04为雕刻或重拓扑准备模型
MCP 相关
优先使用官方 Blender MCP Server 在运行中的 Blender 会话内检查场景、修改网格并验证结果。未连接时,技能会改为提供 Python 脚本。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ ra100/ blender-claude-plugin --skill blender-modeling-modifiers安装后在 Claude Code 中输入/blender-modeling-modifiers确认已加载。
附带文件references/modifier_reference.mdreferences/python_api.md
详细介绍
Blender 建模与修改器专家
概述
本技能提供 Blender 5.x 建模与修改器方面的专业指导:配置修改器堆栈、使用 bmesh 以程序化方式创建和编辑网格、运行网格操作、设置雕刻工作流,以及常见建模模式(硬表面、重拓扑、布尔运算)。参考文件包含完整的修改器目录和 Python API 模式。
MCP 优先方法
添加修改器、编辑网格、应用布尔运算以及直接在运行中的 Blender 会话里烘焙变换时,优先使用官方 Blender MCP Server(Blender Lab,Blender 5.1+)。仅在 MCP 服务未连接时,才改用输出 Python 脚本。
**检测:**在会话开始时,查找名称与 execute_blender_code、get_objects_summary 或 search_api_docs 匹配的工具——这些工具属于官方 blender-mcp 服务。只要存在其中任意一个,即表示 MCP 可用。
本技能使用的工具:
execute_blender_code— 在实时会话中运行bpyPython 代码(主要操作)get_objects_summary、get_object_detail_summary— 修改前检查场景状态get_blendfile_summary_datablocks/_missing_files/_of_linked_libraries/_path_info/_usage_guess— 清点文件内容search_api_docs、get_python_api_docs、search_manual_docs— 调用前确认正确的 API/操作名称get_screenshot_of_window_as_image/_as_json、get_screenshot_of_area_as_image— 验证视觉效果jump_to_tab_by_name、jump_to_tab_by_space_type、jump_to_view3d_object_by_name、jump_to_view3d_object_data_by_name— 操作界面,让更改清晰可见render_thumbnail_to_path、render_viewport_to_path— 快速获取视觉反馈
**工作流:**使用 get_* / search_* 工具检查 → 通过 execute_blender_code 修改 → 使用截图或摘要工具验证。代码块应简短且具备幂等性,以便在出错时轻松定位问题。
设置说明:参见 docs/blender-mcp-setup.md。
任务决策树
- “为 X 添加修改器” -> 查阅
references/modifier_reference.md,了解正确的修改器类型和属性 - “以程序化方式创建网格几何体” -> 参见下文的 bmesh 工作流和
references/python_api.md - “对对象执行布尔运算” -> 参见布尔运算工作流
- “设置硬表面建模” -> 参见硬表面模式
- “对网格进行重拓扑” -> 参见重拓扑工作流
- “清理网格” -> 参见网格清理
- “设置雕刻” -> 参见雕刻设置
- “应用所有修改器” -> 参见
references/python_api.md中的修改器 API
Blender 5.1 变更
布尔修改器速度提升
- 布尔修改器操作在 5.1 中大幅提速
- FAST 和 EXACT 求解器都受益于内部算法改进
- 对高密度网格执行复杂布尔运算时,提速最为显著
纠正翻转法线
- 新操作:
bpy.ops.mesh.corrective_flip_normals() - 根据周围几何体的上下文计算正确的法线方向
- 对非流形网格而言,比简单的
normals_make_consistent更可靠
吸附到面中心
- 新增吸附选项,可吸附到面的中心
- Python:将
bpy.context.tool_settings.snap_elements设置为包含'FACE_CENTER'
循环选择分隔符
- 改进后的边循环选择现在会遵循分隔角度设置
- 更好地控制哪些边会被视为循环的一部分
修改器堆栈原则
- 顺序很重要:修改器按从上到下的顺序应用。先添加镜像再细分,与先细分再镜像的结果不同。
- 视口与渲染:许多修改器分别设有视口和渲染设置(例如,表面细分中的
levels_viewport与render_levels)。 - 谨慎应用:应用修改器会造成破坏性更改。尽可能保留修改器的可编辑状态。
- 非破坏性工作流:迭代建模时使用修改器堆栈。仅在导出或进一步编辑需要时应用修改器。
常见修改器堆叠顺序
- 镜像(如果模型对称)
- 阵列(如果需要重复)
- 布尔(切割/合并操作)
- 实体化(增加厚度)
- 倒角(边缘倒角)
- 加权法线(修复着色)
- 表面细分(平滑最终结果)
布尔工作流
非破坏性布尔(修改器)
import bpy
obj = bpy.context.active_object
cutter = bpy.data.objects["Cutter"]
mod = obj.modifiers.new(name="Boolean", type='BOOLEAN')
mod.operation = 'DIFFERENCE' # DIFFERENCE, UNION, INTERSECT
mod.object = cutter
mod.solver = 'FAST' # FAST or EXACT
# EXACT is slower but handles more edge cases
# Hide cutter in viewport
cutter.hide_viewport = True
cutter.display_type = 'WIRE'
精确求解器选项
mod.solver = 'EXACT'
mod.use_self = False # Self-intersection handling
mod.use_hole_tolerant = True # Better handling of non-manifold meshes
硬表面建模模式
- 从基础形状开始(立方体、圆柱体等)
- 添加镜像修改器以实现对称
- 使用有限的几何体进行建模——定义主要形状
- 在边缘附近添加支撑环线,以控制细分
- 添加倒角修改器(限制方法:权重;使用 Ctrl+Shift+E 设置边缘权重)
- 添加加权法线修改器以修复着色瑕疵
- 添加表面细分修改器(视口:2,渲染:3)
# Hard surface modifier stack
obj = bpy.context.active_object
# Mirror
mirror = obj.modifiers.new("Mirror", 'MIRROR')
mirror.use_axis = (True, False, False)
mirror.use_clip = True
# Bevel
bevel = obj.modifiers.new("Bevel", 'BEVEL')
bevel.limit_method = 'WEIGHT'
bevel.width = 0.02
bevel.segments = 3
bevel.profile = 0.5
# Weighted Normal
wnormal = obj.modifiers.new("WeightedNormal", 'WEIGHTED_NORMAL')
wnormal.mode = 'FACE_AREA'
wnormal.keep_sharp = True
# Subdivision Surface
subsurf = obj.modifiers.new("Subdivision", 'SUBSURF')
subsurf.levels = 2
subsurf.render_levels = 3
重拓扑工作流
- 导入高面数扫描模型/雕刻模型
- 为新的低面数网格添加缩裹修改器
- 将缩裹设置为
NEAREST_SURFACE或PROJECT - 在编辑模式下制作低面数网格——它会贴合高面数模型的表面
- 或者:使用重构网格修改器自动进行重拓扑
# Remesh (automated)
mod = obj.modifiers.new("Remesh", 'REMESH')
mod.mode = 'VOXEL' # VOXEL, BLOCKS, SMOOTH, SHARP
mod.voxel_size = 0.05 # Smaller = more detail
mod.use_smooth_shade = True
# Shrinkwrap (manual retopology helper)
mod = lowpoly.modifiers.new("Shrinkwrap", 'SHRINKWRAP')
mod.target = highpoly
mod.wrap_method = 'NEAREST_SURFACEPOINT'
mod.wrap_mode = 'ON_SURFACE'
网格清理
常见清理操作
import bpy
obj = bpy.context.active_object
bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.mesh.select_all(action='SELECT')
# Remove doubles (merge by distance)
bpy.ops.mesh.remove_doubles(threshold=0.0001)
# Recalculate normals
bpy.ops.mesh.normals_make_consistent(inside=False)
# Delete loose vertices/edges
bpy.ops.mesh.select_all(action='DESELECT')
bpy.ops.mesh.select_loose()
bpy.ops.mesh.delete(type='VERT')
# Fill holes
bpy.ops.mesh.select_non_manifold()
bpy.ops.mesh.fill()
# Triangulate (for export)
bpy.ops.mesh.select_all(action='SELECT')
bpy.ops.mesh.quads_convert_to_tris()
bpy.ops.object.mode_set(mode='OBJECT')
使用精简进行优化
mod = obj.modifiers.new("Decimate", 'DECIMATE')
mod.decimate_type = 'COLLAPSE' # COLLAPSE, UNSUBDIV, DISSOLVE
mod.ratio = 0.5 # 50% of original faces
# mod.use_symmetry = True
# mod.symmetry_axis = 'X'
雕刻设置
import bpy
obj = bpy.context.active_object
# Add multires for sculpting (preserves base mesh)
multires = obj.modifiers.new("Multires", 'MULTIRES')
for _ in range(4):
bpy.ops.object.multires_subdivide(modifier="Multires", mode='CATMULL_CLARK')
# Or use Dyntopo (dynamic topology) — requires sculpt mode
bpy.ops.object.mode_set(mode='SCULPT')
bpy.context.sculpt_object.use_dynamic_topology_sculpting = True
# Sculpt settings
sculpt = bpy.context.tool_settings.sculpt
sculpt.detail_size = 12 # Dyntopo detail (lower = more detail)
sculpt.detail_refine_method = 'RELATIVE' # RELATIVE, CONSTANT, BRUSH
sculpt.detail_type_method = 'RELATIVE' # RELATIVE, CONSTANT, MANUAL
sculpt.use_smooth_shading = True
sculpt.symmetrize_direction = 'NEGATIVE_X'
# Brush settings
brush = sculpt.brush
brush.strength = 0.5
brush.size = 50
brush.auto_smooth_factor = 0.0
bmesh 工作流
bmesh 可直接、高效地创建和操作网格,无需使用 bpy.ops:
从头创建网格
import bpy
import bmesh
# Create empty mesh
mesh = bpy.data.meshes.new("ProcMesh")
bm = bmesh.new()
# Create geometry
v1 = bm.verts.new((0, 0, 0))
v2 = bm.verts.new((1, 0, 0))
v3 = bm.verts.new((1, 1, 0))
v4 = bm.verts.new((0, 1, 0))
bm.faces.new((v1, v2, v3, v4))
# Write to mesh and create object
bm.to_mesh(mesh)
bm.free()
obj = bpy.data.objects.new("ProcObj", mesh)
bpy.context.collection.objects.link(obj)
编辑现有网格
import bmesh
obj = bpy.context.active_object
bm = bmesh.new()
bm.from_mesh(obj.data)
# Operations
bmesh.ops.subdivide_edges(bm, edges=bm.edges[:], cuts=1)
bmesh.ops.translate(bm, vec=(0, 0, 1), verts=bm.verts[:])
# Write back
bm.to_mesh(obj.data)
bm.free()
obj.data.update()
如需了解完整的 bmesh 模式和所有修改器 API 详情,请参阅 references/python_api.md。
调试与优化
常见问题
- 法线看起来反转:重新计算法线(
Mesh > Normals > Recalculate Outside) - 曲面上出现着色瑕疵:添加加权法线修改器或使用自动平滑
- 布尔运算失败:确保网格是流形(封闭无孔)。尝试使用精确求解器。检查是否存在共面。
- 修改器无法应用:某些修改器要求对象处于物体模式。检查依赖项。
- 细分过于密集:降低视口级别。Cycles 渲染可使用自适应细分。
- 雕刻性能:降低多级精度预览级别。不需要时关闭对称。使用 Dyntopo 恒定细节。
性能提示
- 保持修改器堆栈简短——每个修改器都会在每次依赖图评估时进行计算
- 仅在需要时使用精确布尔求解器——FAST 速度快得多
- 对于动画,在动画修改器之前应用静态修改器
- 使用实例化(集合实例)代替复制高面数对象
- 如果三角形数量过多,在导出前进行精简
修改器参考
如需查看包含类型字符串、属性和用例的约 50 种修改器的完整目录,请参阅 references/modifier_reference.md。
主要类别:
- 生成:搜索 “Array”“Boolean”“Bevel”“Mirror”“Solidify” 或 “Subdivision”
- 变形:搜索 “Lattice”“Shrinkwrap”“Simple Deform” 或 “Curve”
- 物理:搜索 “Cloth”“Fluid” 或 “Particle”(另请参阅 blender-physics-simulation skill)
Python API 参考
如需了解完整的 Python API 模式,包括修改器管理、bmesh 操作、网格运算符和雕刻配置,请参阅 references/python_api.md。