12. まとめ
BlenderのMaterial設定で大事なのは、次の3点です。
1つ目は、Objectには,複数のFaceで構成されることがほんどであり,そのFace毎にそれぞれMaterialを登録できるということです。
OutlinerやMaterial Propertiesで複数Materialが見えるのは、このためです。
2つ目は、各Faceが参照するMaterial Slotは基本的に1つ,即ちFaceは1つのMaterialしか登録できないということです。1つのFaceに複数Materialが重なっているわけではありません。
3つ目は、Materialを「解除する」というより、Faceの参照先Material Slotを変更すると理解することです。
この構造を理解すると、Materialが増え続ける原因や、未使用Material Slotが残る理由も分かりやすくなります。
Material設定で混乱した場合は、
Face Selectで確認
↓
正しいMaterial SlotへAssign
↓
Material SlotのSelectで確認
↓
未使用Material Slotを削除
という順番で整理すると安全です。
【注意点・例外】
- Modifier、Geometry Nodes、Linked Object、Library Overrideを使っている場合、見た目と元MeshのMaterial割り当てが一致しないことがあります。
- Shader Node側で透明化やMix Shaderを使っている場合、FaceのMaterial Slot割り当てとは別に、Material内部で見た目が変化します。
- Texture Paint、Color Attribute、Vertex Group、UV MapはMaterial割り当てとは別の仕組みです。
- 「未使用Material Slot」と「未使用Materialデータ」は別です。Slotを削除しても、Materialデータが他で使われていれば残ります。
- Blender 5.1での記事にする場合は、メニュー名やUI表示が過去バージョンと異なる可能性があります。
おまけ:Material Slot・Material Data・material_indexの関係
BlenderのMaterial設定で混乱しやすい理由は、画面上ではすべて「Material」として見えてしまう場面が多いからです。
しかし、内部的には少なくとも次の4つを分けて考えると分かりやすくなります。
| 用語 | 意味 | 例 |
|---|---|---|
| Face | メッシュを構成する面 | 頬の面、服の面、靴の面 |
material_index | Faceが参照するMaterial Slot番号 | 0, 1, 2 |
| Material Slot | Object側にあるMaterial Dataの参照枠 | Slot 0, Slot 1 |
| Material Data | 色・質感・Shader Nodeを持つMaterial本体 | Skin_Mat, Shirt_Mat |
重要なのは、FaceがMaterial Dataを直接見ているのではなく、Material Slot番号を見ているという点です。
FaceはMaterial Slot番号を参照している
例えば、Objectに次のMaterial Slotがあるとします。
Object: Character
Material Slot 0 → Skin_Mat
Material Slot 1 → Shirt_Mat
Material Slot 2 → Eye_Mat
このとき、Face側では次のような割り当てになっています。
Face A → material_index = 0
Face B → material_index = 1
Face C → material_index = 2
これは、次の意味です。
Face A → material_index = 0 → Material Slot 0 → Skin_Mat
Face B → material_index = 1 → Material Slot 1 → Shirt_Mat
Face C → material_index = 2 → Material Slot 2 → Eye_Mat
つまり、material_index = 0 は Material Slot 0を参照しているという意味です。
Slotの中身を変えると、Faceの見た目も変わる
ここが非常に重要です。
例えば、次の状態があるとします。
Face A → material_index = 0
Material Slot 0 → Skin_Mat
この場合、Face Aは Skin_Mat で表示されます。
しかし、Material Slot 0の中身を別のMaterial Dataに差し替えると、
Face A → material_index = 0
Material Slot 0 → Blue_Mat
Face Aの material_index は0のままですが、表示は Blue_Mat に変わります。
つまり、Faceが覚えているのは Skin_Mat という名前ではなく、Slot 0を見るという情報です。
「Materialを削除する」は言い方に注意
Materialまわりでは、「削除」という言葉が特に曖昧です。
次のように書き分けると、誤解が少なくなります。
| やりたいこと | 正確な表現 |
|---|---|
| Faceを別Materialに戻す | FaceのMaterial割り当てを変更する |
| Faceが見るSlotを変える | Faceの material_index を変更する |
| ObjectのSlot枠を消す | ObjectからMaterial Slotを削除する |
| Slotの中身だけ外す | Material SlotからMaterial Dataを外す |
| Material本体を消す | 未使用Material DataをPurgeする |
例えば、ObjectからMaterial Slotを削除するとは、Object側にあるSlotという枠を消すことです。
一方、Material SlotからMaterial Dataを外すとは、Slotの枠は残したまま、中身だけを空にすることです。
Material Slotを削除してもMaterial Dataが消えるとは限らない
ObjectからMaterial Slotを削除しても、その中に入っていたMaterial Data本体が完全に消えるとは限りません。
例えば、
Object A
Slot 0 → Skin_Mat
Slot 1 → Old_Mat
この状態でObject AからSlot 1を削除すると、
Object A
Slot 0 → Skin_Mat
になります。
しかし、Old_Mat は次のような場合にBlenderファイル内へ残ることがあります。
- 他のObjectが
Old_Matを使っている - Fake Userが付いている
- まだ未使用データとしてPurgeされていない
したがって、
Material Slot削除 = Objectから参照枠を消す
Material Data削除 = Material本体をファイルから消す
と分けて考える必要があります。
本記事でのおすすめ表現
この記事内では、次の表現で統一すると分かりやすくなります。
FaceのMaterial割り当てを変更する
Objectから不要なMaterial Slotを削除する
Material SlotからMaterial Dataを外す
未使用Material DataをPurgeする
逆に、次の表現は曖昧なので避けた方が安全です。
Materialを解除する
Materialを削除する
Material Slotから削除する
FaceからMaterialを外す
まとめ
BlenderのMaterial設定は、次の流れで理解すると整理しやすくなります。
Face
↓
material_index
↓
Material Slot番号
↓
Material Slot内のMaterial Data
↓
表示結果
この流れを理解すると、MaterialをAssignする操作、Material Slotを整理する操作、未使用Material DataをPurgeする操作の違いが分かりやすくなります。
Materialまわりで混乱したときは、まず「いま操作しているのはFaceなのか、Slotなのか、Material Dataなのか」を確認するとよいです。
まず、Material Properties右端の 「−」 は、
Objectから選択中のMaterial Slotを削除する
操作です。
一方で、Material Data本体を消す方法は、
Outlinerを Blender File または Orphan Data 表示にして、該当Material Dataを削除/Purgeする
という理解でよいです。
ただし、Material Slotを削除しても、Material Data本体が必ず完全削除されるわけではありません。
【注意点・例外】
- Geometry NodesやShader NodeでMaterialが上書き・混合されている場合、FaceのMaterial Slot割り当てだけでは見た目を完全には説明できないことがあります。
- 同じMaterial Dataを複数Objectで共有している場合、そのMaterial Dataを編集すると複数Objectに影響します。
- Linked LibraryやAsset由来のObjectでは、Material SlotやMaterial Dataの編集権限が制限される場合があります。
material_indexはPython API上の説明として有用ですが、通常のBlender操作では直接数値を編集する必要はありません。
【出典】
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 Python API – Material
https://docs.blender.org/api/current/bpy.types.Material.html
Blender Manual – Material Assignment
https://docs.blender.org/manual/en/latest/render/materials/assignment.html


コメントを残す