Blender Material Import
Read a Blender material as data — and get back the prompt that could remake it
- material_json
- material_prompt
- texture_manifest_json
- summary_json
Texturing in Blender and texturing in ComfyUI are two different worlds: Blender thinks in nodes and PBR slots, ComfyUI thinks in words. MKRBlenderMaterialImport is the bridge between those worlds. You feed it a material payload from the Blender side - its base color, roughness, metallic, normal, emission, the works - and it returns a normalized material_json, a material_prompt written to describe that material, and a texture_manifest_json listing the textures involved. The prompt is your starting point for generating replacement or variation textures with a diffusion model.
It's part of MKRShift_Nodes by criskb. Install via ComfyUI Manager (search "MKRShift_Nodes") or git clone https://github.com/criskb/MKRShift_Nodes into custom_nodes/, restart. No model downloads.
How it works
The node runs the raw payload through normalize_material_payload, which flattens Blender's material structure into a predictable shape, then builds a v1 texture manifest (material name, texture count, per-texture entries) and assembles a material_prompt from the material's properties - so a weathered metal with a rough base color becomes something like "weathered metal, high roughness, worn surface" rather than "material." It's deterministic text assembly, no inference, no API.
The single input
There's exactly one required field: material_payload_json. That's it. The node keeps its interface minimal because the complexity lives in the payload - which again comes from the pack's Blender add-on, so if you're hand-pasting a material dictionary from memory, expect warnings in summary_json.
Outputs: material_json (the normalized material), material_prompt (for your CLIP encoder), texture_manifest_json (the list of texture assets), and summary_json (material name, texture count, warnings).
Where it fits and where it stops
The natural pairing is with the return side: MKRBlenderMaterialReturnPlan describes how generated maps get written back, so the loop is import-material → generate-textures-from-prompt → return-plan → write-back. Just don't expect this node to actually texture anything - it converts material data to words, and the generation is on you. There's barely any public discussion of this node yet, which is a shame because for lookdev iteration it's genuinely handy: point it at a material, get a prompt, generate five variations, pick one, send it back. That's a real workflow, and it's mostly here.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| material_payload_json | STRING | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| material_json | STRING | — |
| material_prompt | STRING | — |
| texture_manifest_json | STRING | — |
| summary_json | STRING | — |