Skill 詳細
blender-materials
Core Blender material and shader workflows.
使用前に確認
自動レビューは関連性のみを確認し、安全性や推奨を保証しません。使用前に出典の説明を読んでください。
SKILL.md
これはレビュー時に保存された抜粋です。完全で最新の内容は外部ソースを確認してください。
---
name: blender-materials
description: Create and assign PBR materials in Blender via Principled BSDF — metals, glass, plastic, fabric, skin, organics. Covers physically-based material recipes with real-world values, Coat layer (varnish/car paint), Sheen (cloth), Subsurface scattering (skin/wax), Transmission (glass), and procedural patterns (wood grain, marble, fabric weave). Use whenever the user asks to "make it look like X material", "give it a metallic finish", "apply a wood texture", "make this glass / plastic / brushed steel / leather / skin", or any look-development request. Make sure to use this skill even if the user does not say "material" — also covers "make it shiny", "matte finish", "looks like copper", "rough surface". Works with any geometry; pairs with blender-lighting (materials only look right under proper lighting).
when_to_use: Any material assignment, PBR setup, shader work, or look-dev request in Blender.
allowed-tools: Read Bash mcp__blender__execute_blender_code mcp__blender__get_scene_info mcp__blender__get_object_info
---
# Blender Materials
Apply physically-based materials to objects. Use **only Principled BSDF** — it's the only shader that exports cleanly to glTF and matches what other DCC tools expect.
## The metallic switch — never an in-between
The single most-important rule: **Metallic is a switch, not a slider.** Set it to `0.0` (dielectric: plastic, wood, glass, skin) or `1.0` (metal: steel, gold, copper). Values between 0.2 and 0.8 are almost always wrong; they produce energy-non-conservative renders that look "plasticky."
Exception: dark mirror lenses (sunglasses) use ~0.8 to combine strong reflection with slight tint — that's a stylistic choice, not strict PBR.
## Decision tree
```
What is it made of?
├── Raw metal (steel, gold, copper, etc.)
│ → Metallic=1.0, Base Color = F0 reflectance from physicallybased.info
│ → Roughness controls polish (0.05 mirror → 0.4 brushed → 0.7+ weathered)
│
├── Glass / clear / refractive
│ → Metallic=0, Transmission=1.0, IOR=1.5 (glass), Roughness=0.0
│ → Add Volume Absorption for thick tinted glass
│
├── Plastic / wood / stone (dielectric, opaque)
│ → Metallic=0, IOR=1.45 (plastic) or 1.5 (most others)
│ → Roughness per finish (0.15 glossy / 0.6 matte)
│ → Coat Weight 0.5+ for varnished/lacquered surfaces
│
├── Skin / wax / marble (subsurface scattering)
│ → Metallic=0, Subsurface Weight=1.0
│ → Subsurface Radius RGB tuned per material (skin: red scatters deepest)
│
├── Cloth / fabric (sheen)
│ → Metallic=0, Sheen Weight 0.2-0.5
│ → Roughness 0.6+, Sheen Roughness 0.5
│
└── Mirror / chrome (special metal)
→ Metallic=1.0, Roughness=0.02-0.05, near-white base
```
## Reference-look handoff
If the goal is to match an original/reference image rather than make a generally attractive render, chain-load `reference-look-calibration`. It owns measurement of hue/saturation/value, object extent, glow/aura color, and before/after look metrics. This skill should then apply the requested material/lighting/render changes within that calibrated target.
## Recipes (the 12 to know)
Each recipe creates the material and assigns it to a target object. Replace `'GEO-target'` with your actual object name.
### `set_input` helper — required for some Blender 5.x BSDF inputs
In Blender 5.x's Principled BSDF v2, **two inputs are flagged `enabled=False`** in the data API: `Weight` and `Subsurface IOR`. These are reachable by **iteration or index** but **not by string-key lookup** — `bsdf.inputs['Subsurface IOR']` raises `KeyError` even though the input exists and its value is respected at render time. This is a Blender 5.x quirk surfaced during v0.4.0 → v0.5.0 validation.
Use this helper whenever a recipe sets an input that might be in the disabled-but-functional state. It works on every input (enabled or not) and is forward-compatible if more inputs become disabled in future Blender versions:
```python
def set_input(node, name, value):
""GitHub で全文を読む (外部ページ)