MRが楽しい

MRやVRについて学習したことを書き残す

Blender2.8で利用可能なpythonスクリプトを作る その6(モディファイアの設定と解除)

本日は Blender の技術調査枠です。
Blender2.8で利用可能なpythonスクリプトを作ります。
bluebirdofoz.hatenablog.com

オブジェクトへモディファイアを追加

指定オブジェクトにモディファイアを追加します。
スクリプト例では「ブーリアン」モディファイアを追加して交差設定を行います。
・add_modifier_boolean.py

# bpyインポート
import bpy

# 「ブーリアン」モディファイアの追加
# モディファイア追加の種類とマニュアル
# (https://docs.blender.org/api/current/bpy.ops.object.html#bpy.ops.object.gpencil_modifier_add)
def add_modifier_boolean(arg_objectname="Default") -> bool:
    """「ブーリアン」モディファイアの追加
    
    Keyword Arguments:
        arg_objectname {str} -- 対象オブジェクト名 (default: {"Default"})

    Returns:
        bool -- 実行の正否
    """

    # 指定オブジェクトを取得する
    # (get関数は対象が存在しない場合 None が返る)
    targetob = bpy.data.objects.get(arg_objectname)

    # 指定オブジェクトが存在するか確認する
    if targetob == None:
        # 指定オブジェクトが存在しない場合は処理しない
        return False

    # 変更オブジェクトをアクティブに変更する
    bpy.context.view_layer.objects.active = targetob

    # 「ブーリアン」モディファイアを追加する
    bpy.ops.object.modifier_add(type='BOOLEAN')

    # 作成モディファイアを取得する
    selectmod = targetob.modifiers['Boolean']
  
    # 名前を指定オブジェクト名+「_Boolean」に設定する
    selectmod.name = arg_objectname + '_Boolean'
    
    # 演算設定を「交差」に設定する
    selectmod.operation = 'INTERSECT'
    
    return True

# 関数の実行例
add_modifier_boolean("Cube")

f:id:bluebirdofoz:20191230225619j:plain

オブジェクトからモディファイアを削除

指定オブジェクトからモディファイアを削除します。
・delelete_modifier_boolean.py

# bpyインポート
import bpy

# 指定モディファイアの削除
# モディファイア追加の種類とマニュアル
# (https://docs.blender.org/api/current/bpy.ops.object.html#bpy.ops.object.gpencil_modifier_add)
def delete_modifier_boolean(arg_objectname="Default", arg_modifiername="DefaultMod") -> bool:
    """指定モディファイアの削除
    
    Keyword Arguments:
        arg_objectname {str} -- 対象オブジェクト名 (default: {"Default"})
        arg_modifiername {str} -- 削除モディファイア名 (default: {"DefaultMod"})

    Returns:
        bool -- 実行の正否
    """

    # 指定オブジェクトを取得する
    # (get関数は対象が存在しない場合 None が返る)
    targetob = bpy.data.objects.get(arg_objectname)

    # 指定オブジェクトが存在するか確認する
    if targetob == None:
        # 指定オブジェクトが存在しない場合は処理しない
        return False

    # 変更オブジェクトをアクティブに変更する
    bpy.context.view_layer.objects.active = targetob

    # モディファイアを削除する
    bpy.ops.object.modifier_remove(modifier=arg_modifiername)
    
    return True

# 関数の実行例
delete_modifier_boolean(
    arg_objectname="Cube",
    arg_modifiername="Cube_Boolean"
)

f:id:bluebirdofoz:20191230225636j:plain