blender-modeling-modifiers について
blender-modeling-modifiersは、Blender 5.xでのモデリングやモディファイア設定を支援するスキルです。bmesh、ブーリアン、ハードサーフェス、リトポロジーを扱い、利用可能な場合は公式 Blender MCP Server経由で実行中のセッションを操作します。
主な機能
- 01モディファイアスタックの設定
- 02bmeshによるメッシュ作成と編集
- 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— ライブセッションで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— 変更が見えるように UI を操作します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 の変更点
ブーリアンモディファイアの速度向上
- Blender 5.1 では、ブーリアンモディファイアの処理が大幅に高速化されています
- FAST と EXACT の両ソルバーで、内部アルゴリズムの改善による効果が得られます
- 高密度メッシュに対する複雑なブーリアン演算で、最も大きな速度向上が見られます
法線の補正反転
- 新しいオペレーター:
bpy.ops.mesh.corrective_flip_normals() - 周囲のジオメトリのコンテキストに基づいて、正しい法線の向きを計算します
- 非多様体メッシュでは、単純な
normals_make_consistentよりも信頼性が高くなります
面の中心にスナップ
- 面の中心にスナップする新しいスナップオプション
- Python:
bpy.context.tool_settings.snap_elementsに'FACE_CENTER'を含めます
ループ選択の区切り
- エッジループ選択が改善され、区切り角度の設定に従うようになりました
- どのエッジをループの一部とみなすか、より細かく制御できます
モディファイアースタックの原則
- 順序が重要です:モディファイアーは上から下へ適用されます。サブディビジョンより前にミラーを適用する場合と、ミラーより前にサブディビジョンを適用する場合では結果が異なります。
- ビューポートとレンダー:多くのモディファイアーには、ビューポート用とレンダー用の個別の設定があります(例:Subdivision Surface の
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'
Exact ソルバーのオプション
mod.solver = 'EXACT'
mod.use_self = False # Self-intersection handling
mod.use_hole_tolerant = True # Better handling of non-manifold meshes
ハードサーフェスのパターン
- ベース形状(Cube、Cylinder など)から始めます
- 対称にするためにミラーモディファイアーを追加します
- ジオメトリを絞って主要な形状を定義しながらモデリングします
- サブディビジョンを制御するため、エッジ付近にサポートエッジループを追加します
- ベベルモディファイアーを追加します(制限方法:Weight。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) - 曲面にシェーディングのアーティファクトが発生する:加重法線モディファイアーを追加するか、Auto Smooth を使用します
- ブーリアンが失敗する:メッシュが多様体(隙間のない状態)であることを確認します。Exact ソルバーを試します。共面の面がないか確認します。
- モディファイアーが適用されない:オブジェクトモードでないと適用できないモディファイアーがあります。依存関係を確認します。
- サブディビジョンが細かすぎる:ビューポートのレベルを下げます。Cycles のレンダーにはアダプティブサブディビジョンを使用します。
- スカルプトのパフォーマンスが低い:マルチレゾのプレビュー レベルを下げます。不要であれば対称を無効にします。Dyntopo の一定ディテールを使用します。
パフォーマンスのヒント
- モディファイアースタックを短く保ちます。依存関係グラフの評価ごとに、各モディファイアーが計算されます
- Exact ブーリアンソルバーは必要な場合にのみ使用します。FAST のほうが大幅に高速です
- アニメーションでは、静的なモディファイアーをアニメーション対象のモディファイアーより前に適用します
- ハイポリオブジェクトを複製する代わりに、インスタンス化(Collection Instance)を使用します
- 三角形の数が多すぎる場合は、エクスポート前にデシメートします
モディファイアーリファレンス
約 50 種類のモディファイアーの完全なカタログ(型文字列、プロパティ、使用例を含む)については、references/modifier_reference.md を参照してください。
主なカテゴリ:
- 生成:"Array"、"Boolean"、"Bevel"、"Mirror"、"Solidify"、"Subdivision" を grep します
- 変形:"Lattice"、"Shrinkwrap"、"Simple Deform"、"Curve" を grep します
- 物理:"Cloth"、"Fluid"、"Particle" を grep します(blender-physics-simulation スキルも参照してください)
Python API リファレンス
モディファイアーの管理、bmesh 操作、メッシュオペレーター、スカルプトの設定など、Python API の完全なパターンについては、references/python_api.md を参照してください。