MRが楽しい

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

Blender2.8で利用可能なpythonスクリプトを作る その3(オブジェクトの表示と非表示)

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

オブジェクトの表示/非表示の設定

指定した名前のオブジェクトの表示/非表示を設定します。
・switch_object_visible.py

# bpyインポート
import bpy

# 対象オブジェクトの表示/非表示を設定する
def switch_object_visible(arg_objectname="Default", arg_visible=False):
    """対象オブジェクトの表示/非表示を設定する
    
    Keyword Arguments:
        arg_objectname {str} -- 対象オブジェクトの名前 (default: {"Default"})
        arg_ishide {bool} -- 表示(True)/非表示(False) (default: {True})
    """

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

    # 指定オブジェクトが存在するか確認する
    if targetob != None:
        # 表示/非表示状態を設定する
        targetob.hide_set(not arg_visible)

    return

# 関数の実行例
switch_object_visible(
    arg_objectname="Cube",
    arg_visible=False
    )

f:id:bluebirdofoz:20191227222834j:plain

オブジェクトの表示/非表示の取得

指定した名前のオブジェクトの表示/非表示を取得します。
対象オブジェクト自体の状態ではなく、コレクションを考慮した表示状態の取得が行えます。
・check_object_visible.py

# bpyインポート
import bpy

# 対象オブジェクトの表示/非表示を取得する
def check_object_visible(arg_objectname="Default") -> bool:
    """対象オブジェクトの表示/非表示を取得する
    
    Keyword Arguments:
        arg_objectname {str} -- 対象オブジェクト名 (default: {"Default"})
    
    Returns:
        bool -- 表示(True)/非表示(False)
    """

    isvisible = False

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

    # 指定オブジェクトが存在するか確認する
    if targetob != None:
        # 表示/非表示状態を取得する
        isvisible = targetob.visible_get()

    return isvisible

# 関数の実行例
result = check_object_visible(arg_objectname="Cube")
print("Result = " + str(result))

f:id:bluebirdofoz:20191227222851j:plain

コレクションの表示/非表示の設定

指定した名前のコレクション内のオブジェクトの表示/非表示を設定します。
・switch_collection_visible.py

# bpyインポート
import bpy

# 対象コレクション内のオブジェクトの表示/非表示を設定する
def switch_collection_visible(arg_collectionname="Collection", arg_visible=False):
    """対象コレクション内のオブジェクトの表示/非表示を設定する
    
    Keyword Arguments:
        arg_objectname {str} -- 対象コレクションの名前 (default: {"Default"})
        arg_ishide {bool} -- 表示(True)/非表示(False) (default: {True})
    """

    # 指定コレクションを取得する
    # (get関数は対象が存在しない場合 None が返る)
    targetcollection = bpy.data.collections.get(arg_collectionname)

    # 指定コレクションが存在するか確認する
    if targetcollection != None:
        # コレクション内の全てのオブジェクトを走査する
        for targetob in targetcollection.objects:
            # 表示/非表示状態を設定する
            targetob.hide_set(not arg_visible)

    return

# 関数の実行例
switch_collection_visible(
    arg_collectionname="Collection",
    arg_visible=False
    )

f:id:bluebirdofoz:20191227222908j:plain