MRが楽しい

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

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

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

全オブジェクトの参照を削除する

マスターコレクションを含む全てのコレクションのオブジェクト参照を削除します。
メッシュなどのデータ情報は削除しません。
ただし、全ての参照が切れるため、プロジェクトを再読み込みするとデータは破棄されます。
・unlink_object_all.py

# bpyインポート
import bpy

# 全オブジェクトの参照を削除する
# (全ての参照が切るため、プロジェクト保存には注意)
def unlink_object_all() -> bool:
    """全オブジェクトの参照を削除する

    Returns:
        bool -- 実行の正否
    """
    # マスターコレクションのオブジェクトを走査する
    for item in bpy.context.scene.collection.objects:
        # オブジェクトの参照を削除する
        bpy.context.scene.collection.objects.unlink(item)
    
    # 全てのコレクションを走査する
    for targetCollection in bpy.data.collections:
        # コレクション内の全てのオブジェクトを走査する
        for ob in targetCollection.objects:
            # オブジェクトの参照を削除する
            targetCollection.objects.unlink(ob)

    return True

# 関数の実行例
unlink_object_all()

f:id:bluebirdofoz:20200107092738j:plain