例2:Material.001、Material.002が増えたObjectを整理する
状態
Material Propertiesに次のようなSlotがある。
Slot 0 → Skin_Mat
Slot 1 → Shirt_Mat
Slot 2 → Material.001
Slot 3 → Material.002
Slot 4 → Old_Mat
しかし、実際にはSlot 0とSlot 1しか使っていない。
操作
- Objectを選択
- Remove Unused Material Slots を押す
- 必要に応じてOutlinerのOrphan DataでMaterial DataをPurgeする
結果
Object側のMaterial Slot一覧が整理されます。
例3:選択Face内のMaterial状態を確認する
操作
- Edit ModeでFace範囲を選択
- Refresh List を押す
結果
選択Face範囲に含まれるMaterialとFace数が表示されます。
[0] Skin_Mat 120 face(s)
[1] Shirt_Mat 35 face(s)
[4] Old_Mat 3 face(s)
これにより、意図しないMaterialが混ざっているか確認できます。
11. 注意点
このAdd-onは、Mesh Objectの元Faceに対して処理します。
以下の状況では、見た目と処理結果が一致しない場合があります。
- Geometry NodesでMaterialを上書きしている
- Shader Node内で透明化やMix Shaderを使っている
- Modifier適用前後でFace構造が変わっている
- Linked LibraryやAsset由来のObjectで編集権限がない
- 同じMaterial Dataを複数Objectで共有している
また、Material Dataを完全に消したい場合は、このAdd-onだけで完結しない場合があります。
不要なMaterial Dataは、OutlinerのOrphan DataでPurgeしてください。
12. このAdd-onで達成できること・できないこと
| 項目 | 可否 |
|---|---|
| 選択Faceに含まれるMaterial一覧の確認 | 可能 |
| 選択Faceから指定Materialを外す | 可能 |
| 選択FaceをActive Materialへ戻す | 可能 |
| 未使用Material Slotの削除 | 可能 |
| Material Data本体の完全削除 | 直接は行わない |
| Fake UserのON/OFF管理 | 現行版では行わない |
| Orphan DataのPurge | 現行版では行わない |
| Geometry Nodes後の生成Faceへの直接処理 | 対象外 |
13. 用語の統一
取説やBlog記事では、次の表現で統一すると分かりやすくなります。
| 推奨表現 | 意味 |
|---|---|
| FaceのMaterial割り当てを変更する | Faceの material_index を変更する |
| ObjectからMaterial Slotを削除する | Slot枠をObjectから消す |
| Material SlotからMaterial Dataを外す | Slotを空にする |
| Material DataをPurgeする | Material本体を未使用データとして削除する |
| Fake Userを付ける | 未使用でもMaterial Dataを保持する |
避けた方がよい表現は次です。
Materialを解除する
Materialを削除する
Material Slotから削除する
FaceからMaterialを消す
これらは、Slotを消すのか、Slotの中身を外すのか、Material Data本体を消すのかが曖昧になるためです。
【注意点・例外】
このAdd-onの「Unassign」は、Blenderの内部仕様に合わせた実用的な解除処理です。
厳密には、Faceを完全なMaterial未割り当て状態にするのではなく、選択Faceの参照先を空Material Slotへ変更します。
そのため、作業後に空Slotが残る場合があります。
不要な空Slotや未使用Slotは、Remove Unused Material Slots で整理してください。
ただし、空SlotをFaceが参照している場合、そのSlotは「使用中」扱いになります。
その場合は、Faceを別のMaterial Slotへ割り当て直してから整理する必要があります。
【出典】
Blender Manual – Material Assignment
https://docs.blender.org/manual/en/latest/render/materials/assignment.html
Blender Python API – MeshPolygon.material_index
https://docs.blender.org/api/current/bpy.types.MeshPolygon.html
Blender Python API – Mesh.materials
https://docs.blender.org/api/current/bpy.types.Mesh.html
Blender Manual – Data-block / Fake User
https://docs.blender.org/manual/en/latest/interface/controls/templates/data_block.html
Blender Developer Documentation – ID Datablocks
https://developer.blender.org/docs/features/core/datablocks/id_type/


コメントを残す