MRが楽しい

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

Blender2.8で利用可能なpythonスクリプトを作る その2(コレクションの作成と削除)

本日は 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"
    )

f:id:bluebirdofoz:20191226222836j:plain

コレクションの削除

指定した名前のコレクションを削除します。
・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"
    )

f:id:bluebirdofoz:20191226222852j:plain

コレクションの作成とリンク

指定した名前のコレクションを作成します。
更に指定のコレクション配下にリンクします。
・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"
    )

f:id:bluebirdofoz:20191226222910j:plain