本日は Blender の技術調査枠です。
Blender2.8で利用可能なpythonスクリプトを作ります。
bluebirdofoz.hatenablog.com
コレクションの作成
指定した名前のコレクションを作成します。
・make_data_collection.py
# bpyインポート import bpy # コレクションの作成 # コレクション作成関数のマニュアル # (https://docs.blender.org/api/current/bpy.ops.collection.html) def make_object_collection(arg_collectionname="Default") -> bool: """コレクションの作成 コレクションの作成 (https://docs.blender.org/api/current/bpy.ops.collection.html) Keyword Arguments: arg_collectionname {str} -- 作成コレクション名 (default: {"Default"}) Returns: bool -- 作成の正否 """ # もし同名のコレクションが既に存在していれば新規作成しない if arg_collectionname in bpy.data.collections: return False # コレクションを作成する newCollection = bpy.data.collections.new(arg_collectionname) # コレクションをシーンに追加する bpy.context.scene.collection.children.link(newCollection) return True # 関数の実行例 make_object_collection( arg_collectionname="MakeCollection" )
コレクションの削除
指定した名前のコレクションを削除します。
・delete_data_collection
# bpyインポート import bpy # コレクションの削除 # コレクション作成関数のマニュアル # (https://docs.blender.org/api/current/bpy.ops.collection.html) def delete_object_collection(arg_collectionname="Default"): """コレクションの削除 コレクションの削除 (https://docs.blender.org/api/current/bpy.ops.collection.html) Keyword Arguments: arg_collectionname {str} -- 削除コレクション名 (default: {"Default"}) """ # 指定コレクションを取得する # (get関数は対象が存在しない場合 None が返る) targetcollection = bpy.data.collections.get(arg_collectionname) # 指定コレクションが存在するか確認する if targetcollection != None: # コレクションが存在する場合は削除を行う bpy.data.collections.remove(targetcollection) return True # 関数の実行例 delete_object_collection( arg_collectionname="MakeCollection" )
コレクションの作成とリンク
指定した名前のコレクションを作成します。
更に指定のコレクション配下にリンクします。
・link_data_collection.py
# bpyインポート import bpy # コレクションの作成とリンク # コレクション作成関数のマニュアル # (https://docs.blender.org/api/current/bpy.ops.collection.html) def link_data_collection( arg_targetname="Collection", arg_collectionname="Default" ) -> bool: """コレクションの作成とリンク Keyword Arguments: arg_targetname {str} -- リンクコレクション名 (default: {"Collection"}) arg_collectionname {str} -- 作成コレクション名 (default: {"Default"}) Returns: bool -- 実行の正否 """ # 指定コレクションを取得する # (get関数は対象が存在しない場合 None が返る) targetcollection = bpy.data.collections.get(arg_targetname) # もし指定のコレクションが存在していれば処理しない if targetcollection == None: # コレクションが存在する場合は削除を行う return False # もし同名のコレクションが既に存在していれば新規作成しない if arg_collectionname in bpy.data.collections: return False # コレクションを作成する newCollection = bpy.data.collections.new(arg_collectionname) # 指定コレクションに作成コレクションを追加する targetcollection.children.link(newCollection) return True # 関数の実行例 link_data_collection( arg_targetname="Collection", arg_collectionname="MakeCollection" )