mcpField
B
blender-modeling-modifiers

blender-modeling-modifiers

github.com/ra100创意与媒体2444 次安装26 周前更新
代码仓库

关于 blender-modeling-modifiers

blender-modeling-modifiers 为 Blender 5.x 建模与修改器工作提供技术指导,面向需要操作网格、设置修改器或建立雕刻流程的用户。它涵盖 bmesh、布尔运算、硬表面建模和重拓扑,并优先通过已连接的 Blender MCP 服务操作实时会话。

主要功能

  1. 01配置修改器堆栈
  2. 02用 bmesh 创建和编辑网格
  3. 03执行布尔运算与网格清理
  4. 04建立硬表面与重拓扑流程
  5. 05设置雕刻工作流

适用场景

  1. 01为模型添加和调整修改器
  2. 02程序化创建或编辑网格
  3. 03对物体执行布尔操作
  4. 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 — 在实时会话中运行 bpy Python 代码(主要操作)
  • 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 变更

布尔修改器速度提升
  1. 布尔修改器操作在 5.1 中大幅提速
  2. FAST 和 EXACT 求解器都受益于内部算法改进
  3. 对高密度网格执行复杂布尔运算时,提速最为显著
纠正翻转法线
  1. 新操作:bpy.ops.mesh.corrective_flip_normals()
  2. 根据周围几何体的上下文计算正确的法线方向
  3. 对非流形网格而言,比简单的 normals_make_consistent 更可靠
吸附到面中心
  1. 新增吸附选项,可吸附到面的中心
  2. Python:将 bpy.context.tool_settings.snap_elements 设置为包含 'FACE_CENTER'
循环选择分隔符
  1. 改进后的边循环选择现在会遵循分隔角度设置
  2. 更好地控制哪些边会被视为循环的一部分

修改器堆栈原则

  1. 顺序很重要:修改器按从上到下的顺序应用。先添加镜像再细分,与先细分再镜像的结果不同。
  2. 视口与渲染:许多修改器分别设有视口和渲染设置(例如,表面细分中的 levels_viewport 与 render_levels)。
  3. 谨慎应用:应用修改器会造成破坏性更改。尽可能保留修改器的可编辑状态。
  4. 非破坏性工作流:迭代建模时使用修改器堆栈。仅在导出或进一步编辑需要时应用修改器。
常见修改器堆叠顺序
  1. 镜像(如果模型对称)
  2. 阵列(如果需要重复)
  3. 布尔(切割/合并操作)
  4. 实体化(增加厚度)
  5. 倒角(边缘倒角)
  6. 加权法线(修复着色)
  7. 表面细分(平滑最终结果)

布尔工作流

非破坏性布尔(修改器)
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

硬表面建模模式

  1. 从基础形状开始(立方体、圆柱体等)
  2. 添加镜像修改器以实现对称
  3. 使用有限的几何体进行建模——定义主要形状
  4. 在边缘附近添加支撑环线,以控制细分
  5. 添加倒角修改器(限制方法:权重;使用 Ctrl+Shift+E 设置边缘权重)
  6. 添加加权法线修改器以修复着色瑕疵
  7. 添加表面细分修改器(视口: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

重拓扑工作流

  1. 导入高面数扫描模型/雕刻模型
  2. 为新的低面数网格添加缩裹修改器
  3. 将缩裹设置为 NEAREST_SURFACE 或 PROJECT
  4. 在编辑模式下制作低面数网格——它会贴合高面数模型的表面
  5. 或者:使用重构网格修改器自动进行重拓扑
# 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 恒定细节。
性能提示
  1. 保持修改器堆栈简短——每个修改器都会在每次依赖图评估时进行计算
  2. 仅在需要时使用精确布尔求解器——FAST 速度快得多
  3. 对于动画,在动画修改器之前应用静态修改器
  4. 使用实例化(集合实例)代替复制高面数对象
  5. 如果三角形数量过多,在导出前进行精简

修改器参考

如需查看包含类型字符串、属性和用例的约 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。

评论

支持 Markdown