Blender Image Import
Pull a texture, render, or pass from Blender straight onto an IMAGE socket
- image
- mask
- payload_json
- asset_path
- summary_json
Every Blender ↔ ComfyUI workflow eventually needs the same move: "here's an image that exists on disk, now treat it as an IMAGE tensor." MKRBlenderImageImport is that move, built for the pack's Blender bridge. You hand it a bridge payload that references an image asset - a texture, a render, a pass - and it loads the file, returns the image as a proper IMAGE (plus a MASK if the asset has an alpha channel), and passes back the payload and resolved path so you never lose track of what you're looking at.
From MKRShift_Nodes by criskb. Install: ComfyUI Manager → search "MKRShift_Nodes", or git clone https://github.com/criskb/MKRShift_Nodes into custom_nodes/, then restart.
How it works
The node resolves the asset path from the payload (with a preferred_slot you can set to disambiguate when a payload references several candidate images), loads it from disk, and returns it. The plumbing is shared across the pack's host-import nodes, so the behavior is the same whether the payload came from Blender, Nuke, or one of the other host bridges - one contract, many hosts.
The inputs and outputs that matter
payload_json(required) - the bridge payload containing the image reference.preferred_slot(optional) - which image in the payload you mean, when there are options.
Outputs: image (IMAGE), mask (MASK), payload_json (passthrough), asset_path (the resolved file path - handy for later return-plan nodes), and summary_json with dimensions and candidate count.
The honest fine print
Two things worth knowing. First, the image is loaded from a path on disk - if the asset lives inside a Blender file's packed data and was never written out, there's nothing for this node to read; the add-on has to export the image first. Second, if no image path can be resolved from the payload, the node raises an error rather than silently returning a blank - which is the good kind of failure, because it tells you the payload is malformed instead of wasting a generation. There's little public discussion of this node yet, so the README is the source of truth, but the behavior is simple and predictable once you know it needs a real file path.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| payload_json | STRING | — | |
| preferred_slotopt | STRING | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| mask | MASK | — |
| payload_json | STRING | — |
| asset_path | STRING | — |
| summary_json | STRING | — |