本日は Blender の技術調査枠です。
Blender2.9で利用可能なpythonスクリプトを作ります。
レイヤーコレクションの除去設定の変更
指定名のレイヤーコレクションの除去設定を変更します。
除去設定を変更することで、コレクションの有効無効を切り替えることができます。
・Script_change_collection_exclude.py
# bpyインポート import bpy # 指定名のレイヤーコレクションの除去チェックを設定する def change_layercollection_exclude(arg_layercollectionname:str, arg_exclude:bool) -> bool: """指定名のレイヤーコレクションの除去チェックを設定する Args: arg_layercollectionname (str): コレクション名 arg_exclude (bool): 除去チェック Returns: bool: 実行正否 """ # 指定のレイヤーコレクションを取得する # LayerCollectionの操作マニュアル # (https://docs.blender.org/api/2.90/bpy.types.LayerCollection.html) target_layercollection = bpy.context.view_layer.layer_collection.children.get(arg_layercollectionname) # 同名のレイヤーコレクションが存在していたか確認する if target_layercollection == None: # 指定レイヤーコレクションが存在しない場合は処理しない return False # レイヤーコレクションの除外チェックを設定する target_layercollection.exclude = arg_exclude return True # 関数の実行例 change_layercollection_exclude(arg_layercollectionname="LowerCollection", arg_exclude=True)
レイヤーコレクションの除去設定
現在のビューレイヤーから除去されていないレイヤーコレクションのリストを取得します。
・Script_get_layercollection_nonexclude.py
# bpyインポート import bpy # 除去設定でないレイヤーコレクションのリストを取得する def get_layercollection_nonexclude() -> list: """除去設定でないレイヤーコレクションのリストを取得する Returns: list: 除去設定でないレイヤーコレクションのリスト """ # レイヤーコレクションリスト用の空リストを作成する layercollection_list = [] # 現在のビューレイヤーのレイヤーコレクションを全て取得する for layercollection in bpy.context.view_layer.layer_collection.children: # 除去設定が有効かチェックする if layercollection.exclude == False: # 除去設定がされていない場合はリストに追加する layercollection_list.append(layercollection) return layercollection_list # 関数の実行例 get_layercollection_list = get_layercollection_nonexclude() # 取得したリストを確認する for get_layercollection in get_layercollection_list: print(get_layercollection.name)
コレクションの有効無効
レイヤーコレクションの除去設定(exclude)を使うと、以下のように3Dモデルの出力時のオブジェクトを切り替えたりすることができます。
bluebirdofoz.hatenablog.com