MRが楽しい

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

Blender3.0で利用可能なpythonスクリプトを作る その97(オブジェクトのタイプと現在のモードを参照する)

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

オブジェクトのタイプと現在のモードを参照する

Blender プロジェクト内の全てのオブジェクト型からはその種類を示すタイプと、現在の操作状態を示すモードを参照できます。
docs.blender.org

サンプルスクリプト

シーン内の全オブジェクトを走査して、そのタイプと現在のモードを標準出力します。
・Script_print_objectmode.py

# bpyインポート
import bpy

# オブジェクトのタイプと現在のモードを標準出力する
def print_object_typeandmode(arg_object:bpy.types.Object) -> bool:
    """オブジェクトのタイプと現在のモードを標準出力する
    
    Keyword Arguments:
        arg_object {bpy.types.Object} -- 対象オブジェクト

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

    print("Name : " + str(arg_object.name) + ", Type : " + str(arg_object.type) + ", Mode : " + str(arg_object.mode))

    return True

# 関数の実行例
# シーン内の全オブジェクトを走査する
for check_obj in bpy.context.scene.objects:
    # オブジェクトの情報を標準出力する
    print_object_typeandmode(check_obj)

複数の MESH タイプのオブジェクトを編集モードにしてスクリプトを実行してみます。
以下の通り、現在編集モード中の MESH タイプオブジェクトのモードが EDIT と表示されています。
f:id:bluebirdofoz:20220112232841j:plain

TIPS

同じ MESH データを参照しているオブジェクトの場合、BlenderGUI 上は同じデータを参照しているオブジェクトは同時に編集モードになります。
しかし Python の Object データ上では片方のオブジェクトのみ EDIT モードと返却されるので注意が必要です。
f:id:bluebirdofoz:20220112232850j:plain