本日は Blender の技術調査枠です。
Blender2.8で利用可能なpythonスクリプトを作ります。
全てのメッシュオブジェクトをブーリアンモディファイアの統合で結合する
全てのメッシュオブジェクトに対してブーリアンモディファイアの結合を実行します。
結合したメッシュオブジェクトは削除します。
・apply_boolean_union_all.py
# bpyインポート import bpy # 全てのメッシュオブジェクトをブーリアンモディファイアの統合で結合する # 結合したメッシュオブジェクトは削除される def apply_boolean_union_all(arg_objectname="Default") -> bool: """全てのメッシュオブジェクトをブーリアンモディファイアの統合で結合する 結合したメッシュオブジェクトは削除される Keyword Arguments: arg_objectname {str} -- 指定オブジェクト名 (default: {"Default"}) Returns: bool -- 実行正否 """ # 指定オブジェクトを取得する # (get関数は対象が存在しない場合 None が返る) selectob = bpy.data.objects.get(arg_objectname) # 指定オブジェクトが存在するか確認する if selectob == None: # 指定オブジェクトが存在しない場合は処理しない return False # 指定オブジェクトをアクティブに変更する bpy.context.view_layer.objects.active = selectob # 全てのオブジェクトを走査する for obj in bpy.data.objects: # メッシュオブジェクトか確認する if obj.type == 'MESH': # 指定オブジェクト以外のオブジェクトか確認する if obj.name != arg_objectname: # 「ブーリアン」モディファイアを追加する # ブーリアンモディファイアのインタフェース # (https://docs.blender.org/api/current/bpy.types.BooleanModifier.html) bpy.ops.object.modifier_add(type='BOOLEAN') # 追加されたモディファイアを取得する boolean_modifier = selectob.modifiers[-1] # 演算方法に[統合]を指定する boolean_modifier.operation = 'UNION' # 統合対象にオブジェクトを指定する boolean_modifier.object = obj # 重複の敷居値を指定する boolean_modifier.double_threshold = 0.001 # 「ブーリアン」モディファイアを適用する bpy.ops.object.modifier_apply(apply_as='DATA',modifier=boolean_modifier.name) # 統合したオブジェクトを削除する bpy.data.objects.remove(obj) return True # 関数の実行例 apply_boolean_union_all(arg_objectname="Cube")