BlenderのMaterial設定で勘違いしやすいポイント

Cropped d4cd7ac1381dc72b731d1c4cdf542dd3.png

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_indexFaceが参照するMaterial Slot番号0, 1, 2
Material SlotObject側にある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 = 0Material 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

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA