MRが楽しい

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

Blender2.8で利用可能なpythonスクリプトを作る その5(編集モードへの移行とオブジェクトモードへの移行)

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

編集モードへのモード切替

指定オブジェクトの編集モードに移行します。
・set_mode_edit.py

# bpyインポート
import bpy

# 編集モードへの移行
# モード切替のマニュアル
# (https://docs.blender.org/api/current/bpy.ops.object.html#bpy.ops.object.mode_set)
def set_mode_edit(arg_objectname="Default") -> bool:
    """編集モードへの移行
    
    Keyword Arguments:
        arg_objectname {str} -- 対象オブジェクト名 (default: {"Default"})

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

    # 他のオブジェクトに操作を適用しないよう全てのオブジェクトを走査する
    for ob in bpy.context.scene.objects:
        # 非選択状態に設定する
        ob.select_set(False)

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

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

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

    # 編集モードに移行する
    # モード切替のマニュアル
    # (https://docs.blender.org/api/current/bpy.ops.object.html#bpy.ops.object.mode_set)
    # 切り替え可能なモードの種類
    #   OBJECT:オブジェクトモード
    #   EDIT:編集モード
    #   POSE:ポーズモード
    #   SCULPT:スカルプトモード
    #   VERTEX_PAINT:頂点ペイントモード
    #   WEIGHT_PAINT:ウェイトペイントモード
    #   TEXTURE_PAINT:テクスチャペイントモード
    #   PARTICLE_EDIT:パーティクル編集モード
    #   EDIT_GPENCIL:グリースペンシル編集モード
    #   SCULPT_GPENCIL:グリースペンシルスカルプトモード
    #   PAINT_GPENCIL:グリースペンシルペイントモード
    #   WEIGHT_GPENCIL:グリースペンシルウェイトモード
    # toggle:Trueの場合、既に編集モードの時、オブジェクトモードに戻る
    bpy.ops.object.mode_set(mode='EDIT', toggle=False)

    return True

# 関数の実行例
set_mode_edit(arg_objectname="Cube")

f:id:bluebirdofoz:20191229224640j:plain

オブジェクトモードへのモード切替

オブジェクトモードに移行します。
・set_mode_object.py

# bpyインポート
import bpy

# オブジェクトモードへの移行
# モード切替のマニュアル
# (https://docs.blender.org/api/current/bpy.ops.object.html#bpy.ops.object.mode_set)
def set_mode_object() -> bool:
    """オブジェクトモードへの移行

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

    # オブジェクトモードに移行する
    # モード切替のマニュアル
    # (https://docs.blender.org/api/current/bpy.ops.object.html#bpy.ops.object.mode_set)
    # 切り替え可能なモードの種類
    #   OBJECT:オブジェクトモード
    #   EDIT:編集モード
    #   POSE:ポーズモード
    #   SCULPT:スカルプトモード
    #   VERTEX_PAINT:頂点ペイントモード
    #   WEIGHT_PAINT:ウェイトペイントモード
    #   TEXTURE_PAINT:テクスチャペイントモード
    #   PARTICLE_EDIT:パーティクル編集モード
    #   EDIT_GPENCIL:グリースペンシル編集モード
    #   SCULPT_GPENCIL:グリースペンシルスカルプトモード
    #   PAINT_GPENCIL:グリースペンシルペイントモード
    #   WEIGHT_GPENCIL:グリースペンシルウェイトモード
    # toggle:Trueの場合、既に編集モードの時、オブジェクトモードに戻る
    bpy.ops.object.mode_set(mode='OBJECT', toggle=False)

    return True

# 関数の実行例
set_mode_object()

f:id:bluebirdofoz:20191229224652j:plain