Blender 4.1 マテリアルスロット削除(名前指定と空のマテリアルスロット):スクリプトを使った簡単な手法

Quick Edit Pencil


名前指定する場合

WhiteMaterialから始まる名前のスロットを除去) GPT-4o mini Blender 4.1でアクティブコレクション内のすべてのオブジェクトをループし、マテリアルスロットから名前が 'WhiteMaterial' で始まるものを削除するためのスクリプトは以下のようになります。 python コードをコピー
import bpy

# アクティブコレクションを取得
active_collection = bpy.context.view_layer.active_layer_collection

# アクティブコレクション内のすべてのオブジェクトをループ
for obj in active_collection.collection.objects:
    # オブジェクトがメッシュであることを確認
    if obj.type == 'MESH':
        # マテリアルスロットを逆順でループ(削除するため)
        for i in range(len(obj.material_slots) - 1, -1, -1):
            # マテリアルスロットの名前を取得
            material_slot = obj.material_slots[i]
            if material_slot.material and material_slot.material.name.startswith('WhiteMaterial'):
                # オブジェクトをアクティブにする
                bpy.context.view_layer.objects.active = obj
                # マテリアルスロットを削除
                bpy.ops.object.material_slot_remove()
このスクリプトをBlenderのスクリプトエディタにコピーして実行すると、アクティブコレクション内のすべてのメッシュオブジェクトのマテリアルスロットから、名前が 'WhiteMaterial' で始まるものが削除されます。注意点として、マテリアルスロットを削除する際には、オブジェクトをアクティブにする必要があるため、その部分も含めています。

空のマテリアルスロット除去

GPT-4o mini 空のマテリアルスロットを削除するスクリプトは以下の通りです。このスクリプトでは、マテリアルスロットが空であるかどうかを確認し、空であれば削除します。 python コードをコピー
import bpy

# アクティブコレクションを取得
active_collection = bpy.context.view_layer.active_layer_collection

# アクティブコレクション内のすべてのオブジェクトをループ
for obj in active_collection.collection.objects:
    # オブジェクトがメッシュであることを確認
    if obj.type == 'MESH':
        # マテリアルスロットを逆順でループ(削除するため)
        for i in range(len(obj.material_slots) - 1, -1, -1):
            # マテリアルスロットの取得
            material_slot = obj.material_slots[i]
            # マテリアルスロットが空であるか確認
            if material_slot.material is None:
                # オブジェクトをアクティブにする
                bpy.context.view_layer.objects.active = obj
                # マテリアルスロットを削除
                bpy.ops.object.material_slot_remove()
このスクリプトをBlenderのスクリプトエディタにコピーして実行すると、アクティブコレクション内のすべてのメッシュオブジェクトの空のマテリアルスロットが削除されます。空のマテリアルスロットは、material_slot.material None である場合に該当します。<
GPT-4o miniへの命令文
blender4.1のアクティブコレクション内のすべてのオブジェクトをループしてオブジェクトのマテリアルスロットから 'WhiteMaterial' で始まるものを削除する。マテリアルスロットを削除する命令は次を使う事。bpy.ops.object.material_slot_remove() ただし、bpy.ops.object.material_slot_remove({'active_object': obj})のような引数を書くとエラーが出るので、引数を使わない方法で書いてほしい。ついでに、空のマテリアルスロットを削除するスクリプトに改造したスクリプトも書き出して。
light
dark
night-bule
vibrant-ink
wed

このブログの人気の投稿

PowerShellのGetDetailsOf メソッドでプロパティの詳細情報のID番号と項目名を列挙します

Blender: 辺の長さを数値で指定するアドオン

書字方向 横書方向変換スクリプト 左書きから右書きへ(コピペ用途)

ヤバい!JAPANNEXT WQHD対応 27型ワイド液晶ディスプレイ「JN-IPS2716WQHD」を注文してみた!!!

PowerShellで複数ファイルのプロパティを取得する方法(準備編)

決定版 Edgeでローカルファイルを開く パワーシェルスクリプト (ウインドウズでドロップレット)

カルチャーラジオ 科学と人間 薬と毒の歴史をひも解く 日本薬科大学教授…船山信次

Windows10でアプリケーションごとに輝度を設定、自動で変更する - AutoHotkey