Nodes/MKRShift_Nodes/Blender Material Import
ComfyUI Node

Blender Material Import

Read a Blender material as data — and get back the prompt that could remake it

By criskb·Created 7 months ago·Updated 5 months ago· 0
Blender Material Import
    • material_json
    • material_prompt
    • texture_manifest_json
    • summary_json
    material_payload_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.

    CategoryMKRShift Nodes/Addons/Blender

    Inputs (1)

    NameTypeDefaultDescription
    material_payload_jsonSTRING

    Outputs (4)

    NameTypeDescription
    material_jsonSTRING
    material_promptSTRING
    texture_manifest_jsonSTRING
    summary_jsonSTRING