Blenderで作業をしているとアペンド時などにカメラ情報が導入され余計なカメラがたまっていくことがあります。
今回はPythonを使用してシーン全体のカメラオブジェクトの数を取得します。
〇環境
・Windows11PC
・Blender4.1
〇カメラの数を検出するコード
コードは次のようになります。
import bpy
def count_cameras_in_collections():
# シーンを取得
scene = bpy.context.scene
# カメラの数をカウントする変数
camera_count = 0
# すべてのコレクションを走査
for collection in bpy.data.collections:
# コレクション内のオブジェクトを調べる
for obj in collection.objects:
# オブジェクトがカメラであるかどうかを確認
if obj.type == 'CAMERA':
camera_count += 1
# サブコレクションを走査する場合(Blender 3.0以降)
for sub_collection in collection.children:
for obj in sub_collection.objects:
if obj.type == 'CAMERA':
camera_count += 1
return camera_count
# カメラの数を取得して出力
num_cameras = count_cameras_in_collections()
print(f"シーン内のカメラの数: {num_cameras}")
このコードではbpy.context.sceneでシーン情報を取得その後、for文でコレクションの数コレクション内のオブジェクトを検出、オブジェクトのタイプがCameraである場合はカメラのカウントに加えるという形です。
これを実行するとコンソールウィンドウにカメラの数が出力されます。

文字列の配列を追加することでカメラの名前も記録することができます。
以上でシーン内に存在するカメラ数の取得です。
次回は任意の1つを除いて削除するコードを実装します。