ComfyUI Inputs
How ComfyUI Inputs Lets Blender-Sent Data Come Back Into the Graph
- image
- mesh
- model
- video
- audio
- text
ComfyUIInputs is the node whose name lies. The name makes it sound like the entry point for something, but it's actually the read-back end of the Blender bridge: whatever BlenderOutputs just sent to Blender, this node hands back to your graph, so data that left ComfyUI can re-enter it. It's the third node in the AIGODLIKE/Blender-IO pack, it has zero inputs, and it exists purely so you can keep processing data after it's taken a trip through Blender.
Let's be straight about what this pack is first, because it colors everything. AIGODLIKE/Blender-IO is a thin transport layer that the README says is only for AIGODLIKE's Blender add-on, ComfyUI-BlenderAI-node. These three nodes do nothing on their own - no models, no generation, no API keys, just a websocket between ComfyUI and a Blender instance that has the add-on running. ComfyUIInputs is the most obviously useless of the trio if you ignore that context, and the most useful once you get it.
How it works
When BlenderOutputs fires, it saves everything to disk, sends it to Blender over the websocket, and also caches the original data in a shared, single-slot queue (the pack calls it a DataChain). ComfyUIInputs reads the most recent entry from that queue and exposes it as six outputs:
- image (IMAGE)
- mesh (STRING, a list - the saved mesh file names)
- model (STRING - the model path you passed to BlenderOutputs)
- video (VIDEO)
- audio (AUDIO)
- text (STRING)
So a typical pattern is: BlenderOutputs(image=A) at the end of one branch, and a ComfyUIInputs somewhere else in the same graph that emits A again. Run once, and the same image that went to Blender is available downstream for a second pass - a different upscaler, an edit, a re-render - without regenerating anything.
If nothing has been sent yet, the node returns placeholders: a black 64×64 image, an empty mesh list, and empty strings. That's not a bug, it's the "I ran before anything produced data" case. Like its siblings it never caches - IS_CHANGED returns the current time, so it re-reads the queue on every run.
There's also an HTTP endpoint the Blender side can call (/bio/fetch/comfyui_queue) to peek at what BlenderOutputs saved, which is how the add-on keeps track of the files it's been handed.
Installing it
No dependencies beyond what ComfyUI already ships, no model files:
cd ComfyUI/custom_nodes
git clone https://github.com/AIGODLIKE/Blender-IO.git
then restart ComfyUI - or use ComfyUI Manager and search Blender-IO. Remember the add-on requirement: without Blender connected, ComfyUIInputs just hands you the placeholder defaults forever.
Troubleshooting
- Always a black image / empty strings. You're running it before (or without) a BlenderOutputs in the same graph, or nothing's been sent yet. Order matters.
- It reads a list for mesh. The mesh output is a
STRINGlist of saved file names, not a mesh object - don't try to wire it into a mesh consumer expecting geometry. - The pack won't load. The module imports
torchaudioat the top; minimal Python installs that skipped it will fail on import.pip install torchaudiofixes it. (Official ComfyUI installs already have it.)
The take
This is the least glamorous node in the pack and honestly the one that most confuses newcomers - but it's the piece that makes the loop a loop. BlenderInputs pulls scene data in, BlenderOutputs ships results out, and ComfyUIInputs quietly hands the results back for another round. If you're not doing two-way Blender work, you don't need it. If you are, it's the difference between a one-shot pipeline and an iterative one.
Inputs (0)
No inputs
Outputs (6)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| mesh | STRING | — |
| model | STRING | — |
| video | VIDEO | — |
| audio | AUDIO | — |
| text | STRING | — |