未使用Materialが消える理由と、Fake Userの存在意義
Blenderを使っていると、作ったはずのMaterialやActionが、保存後に消えてしまったように見えることがあります。私もblenderの使い始めから今日にいたるまで,よく理解できないまま1年半を過ごしてきました.
特にMaterialでは、次のような場面で混乱しやすくなります。
Materialを作った
↓
まだObjectに割り当てていない
↓
保存して開き直した
↓
Materialが見当たらない
これは、Blenderの Data-block管理 と関係しています。
Blenderでは、Material、Mesh、Image、Action、Node Groupなどが Data-block として管理されています。これらのData-blockには「実際に使われているかどうか」を示す Users という考え方があります。
公式マニュアルでは、実ユーザーを持たないData-blockは通常、blendファイル保存時にクリーンアップされるため、それを防ぐにはFake Userを付けると説明されています。つまりFake Userは、未使用Data-blockを保存対象として残すための仕組みです。

1. Fake Userを理解する前に:Data-blockとは
Blenderでは、画面上に見えるObjectだけでなく、MaterialやMesh、Image、Actionなども個別のデータとして管理されています。
例えば、1つのキャラクターObjectには、次のようなData-blockが関係します。
Object Data-block
Mesh Data-block
Material Data-block
Image Data-block
Action Data-block
MaterialもData-blockの一種です。
Skin_Mat
Shirt_Mat
Eye_Mat
これらは単なる表示名ではなく、Blenderファイル内で管理されるMaterial Data-blockです。
Blender開発者向けドキュメントでも、ID、つまりData-blockにUsersが0の場合はディスクに保存されず、未使用IDを保持するにはFake User相当のフラグが必要であると説明されています。
2. Usersとは何か
Usersとは、そのData-blockがどこから参照されているかを示す考え方です。
Materialで言えば、ObjectのMaterial SlotにMaterial Dataが入っていれば、そのMaterial DataにはUserがあります。
Object A
Material Slot 0 → Skin_Mat
Skin_Mat
Users = 1
同じMaterial Dataを複数Objectが使っている場合は、Usersが増えます。
Object A Slot 0 → Skin_Mat
Object B Slot 0 → Skin_Mat
Skin_Mat
Users = 2
一方、どのObjectのMaterial Slotにも入っていないMaterial Dataは、Users = 0になります。
Old_Mat
Users = 0
このUsers = 0のData-blockが、保存時やPurge時に問題になります。
3. Blenderでは未使用Data-blockが消えることがある
Blenderでは、Users = 0のData-blockは、通常は保存対象から外れます。
これは一見すると不親切に見えます。
しかし、Blenderでは作業中に多くのData-blockが増えます。
例えば、Materialを試作すると、
Material
Material.001
Material.002
Old_Mat
Test_Shader
のように、使わなくなったMaterialが残りやすくなります。
Mesh、Image、Action、Node Groupも同様です。
もし未使用Data-blockをすべて保存し続ける仕様にすると、.blendファイル内に不要データが蓄積しやすくなります。
そのためBlenderでは、
使われているData-blockは保存する
使われていないData-blockは保存対象から外す
という方向の設計になっています。
4. しかし、未使用でも残したいData-blockがある
問題は、Users = 0でも本当に不要とは限らないことです。
例えば、次のようなMaterialは残したい場合があります。
後で使う予定のMaterial
まだObjectに割り当てていないShader
作り込んだNode構成のMaterial
一時的にObjectから外しているMaterial
また、Actionでも同じです。
作成した歩行Animationや待機Animationが、現在どのObjectにも割り当てられていない場合、Users = 0になることがあります。
しかし、それは不要という意味ではありません。
このような「未使用だが残したいData-block」を守るために使うのが Fake User です。
5. Fake Userとは何か
Fake Userとは、Data-blockに対して、
今は実際のUserがなくても、このData-blockは保存しておく
と指定するための保持フラグです。
Materialで言えば、次のようになります。
Old_Mat
Users = 0
Fake User = OFF
→ 未使用Data-blockとして消える可能性がある
Old_Mat
Users = 0
Fake User = ON
→ 未使用でも保存対象として残る
つまりFake Userは、「偽のユーザー」という名前ですが、実際には、
未使用Data-blockを保存対象にするための保護マーク
と考えると分かりやすいです。
6. Fake Userは「データが増える問題」と関係している
Fake Userの存在意義を理解するには、次の2つの問題を分けて考える必要があります。
1つ目は、BlenderではData-blockがどんどん増えやすいという問題です。
Material、Action、Image、Node Groupなどを試作していると、未使用Data-blockが増えます。
2つ目は、未使用Data-blockの中にも残したいものがあるという問題です。
この2つを同時に扱うため、Blenderでは次のような設計になっています。
原則:
Users = 0 のData-blockは保存・保持しない
例外:
残したいUsers = 0 のData-blockにはFake Userを付ける
したがってFake Userは、単に「データを消す機能」ではありません。
むしろ、
Data-blockが増え続ける問題を避けながら、必要な未使用Data-blockだけを残すための例外指定
です。
Blender開発タスクでも、Fake User、auto-purge、未使用IDの保存、Orphan Data表示などがまとめて議論されています。そこでは、Fake Userを残す案、Fake Userを削除してAsset機能などで保護する案、未使用データのPurge UI改善などが議論されています。
7. なぜ「自動削除しなければよい」では済まないのか
初めてFake Userを知ると、
そもそも未使用Data-blockを自動削除しなければよいのでは?
と思うかもしれません。
しかし、Blenderでは作業中に多くのData-blockが生成されます。
試作Material
削除したObjectのMesh
使わなくなったAction
読み込んだが使っていないImage
一時的なNode Group
これらをすべて自動保存すると、.blendファイルは不要データで肥大化します。
一方で、自動的に消すだけでは、必要な未使用Data-blockまで失う危険があります。
Fake Userは、この中間にある仕組みです。
不要な未使用Data-block
→ Purge対象
必要な未使用Data-block
→ Fake Userで保持
8. Material作業でのFake Userの具体例
例えば、作り込んだMaterialを一時的にObjectから外したとします。
Object A
Slot 0 → Skin_Mat
Slot 1 → Old_Shader
ここで、Slot 1から Old_Shader を外すと、
Object A
Slot 0 → Skin_Mat
Old_Shader
Users = 0
になります。
この状態で Old_Shader にFake Userが付いていなければ、保存・再読み込みやPurgeで消える可能性があります。
しかしFake Userを付けていれば、
Old_Shader
Users = 0
Fake User = ON
となり、Objectに割り当てられていなくても保持されます。
9. Fake UserとPurgeの関係
Purgeは、未使用Data-blockを整理するための操作です。
しかし、Fake Userが付いたData-blockは、「未使用でも残す」と指定されているため、通常の未使用データとは扱いが変わります。
そのため、Material Dataを完全に整理したい場合は、次の順で確認すると安全です。
1. Objectから不要なMaterial Slotを削除する
2. Material Dataが他Objectで使われていないか確認する
3. Fake UserがONになっていないか確認する
4. 不要ならFake UserをOFFにする
5. Orphan DataでPurgeする
Fake UserがONのままだと、使っていないMaterial Dataが残り続ける原因になります。
10. Fake Userは便利だが、名前が分かりにくい
Fake Userという名前は、初心者には分かりにくいです。
実際には、
Preserve
Keep
Protect
Save even when unused
のような意味に近いです。
開発者・ユーザー議論でも、Fake UserのUIや名称、未使用Data-blockの扱いは分かりにくいものとして議論されています。たとえばDevTalkでは、Fake Userという名前をGuardやProtectのような名称に変える提案も出ています。
Blogでは、次のように説明するとよいです。
Fake Userは直訳すると「偽のユーザー」ですが、実務上は「未使用でも保存するための保護フラグ」と考えると理解しやすいです。
11. Material Slot削除とFake Userは別の話
Material作業では、次の違いも重要です。
| 操作 | 意味 |
|---|---|
| ObjectからMaterial Slotを削除する | Object側のMaterial Slot枠を消す |
| Material SlotからMaterial Dataを外す | Slot枠は残し、中身のMaterialだけ外す |
| Material DataをPurgeする | 未使用Material Data本体を削除する |
| Fake Userを付ける | 未使用でもMaterial Dataを残す |
Material Slotを削除しても、Material Data本体が必ず消えるわけではありません。
Material Dataが残る条件には、次のようなものがあります。
他Objectが使っている
別Slotが参照している
Fake Userが付いている
AssetやLibrary Link由来である
まだPurgeしていない
したがって、Materialを整理するときは、
Object側のSlotを整理する
↓
Material Data本体のUsersとFake Userを確認する
↓
不要なMaterial DataをPurgeする
という順で考えると分かりやすくなります。
12. Blog用まとめ
Fake Userは、BlenderのData-block管理を理解する上で重要な機能です。
一言で言えば、
Fake Userは、未使用でも残したいData-blockを保存対象にするための保護フラグ
です。
ただし、その背景には、
Blenderでは作業中にMaterial、Action、Mesh、ImageなどのData-blockが増えやすく、未使用Data-blockをすべて保存するとファイルが肥大化する
という問題があります。
そのためBlenderでは、基本的にUsers = 0のData-blockは未使用として扱い、残したいものだけFake Userで保持します。
使っているData-block
→ 保存される
使っていないData-block
→ Purge対象・保存対象外になる可能性
使っていないが残したいData-block
→ Fake Userで保持
Fake Userは、不要データを削除する機能ではありません。
しかし、不要データが増え続ける問題を避けるBlenderの設計の中で、必要な未使用データだけを守るための例外指定として存在しています。
【注意点・例外】
- Fake Userが付いていても、外部リンクやAsset管理、Library Overrideの状態によっては挙動が異なる場合があります。
- Material Dataだけでなく、Action、Image、Node Groupなどにも同様の考え方が関係します。
- Fake UserがONのままだと、不要Data-blockがPurgeされずに残る原因になります。
- 逆にFake Userを付け忘れると、作り込んだMaterialやActionが保存後に消えたように見えることがあります。
- 正確な開発導入年や初期実装理由については、今回確認できた一次情報だけでは断定できません。
【出典】
- Blender Manual – Data-Block Menu / 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/ - Blender Developer Task – Always write unused IDs on save
https://developer.blender.org/T61209 - Blender DevTalk – Add option “Auto Add Fake User” to user preferences
https://devtalk.blender.org/t/add-option-auto-add-fake-user-to-user-preferences/31619?page=5
【確実性: 中】

