Get Render Data (Texturaizer)
Let Blender decide your canvas size, not your latent node
- data_optional
- width
- height
- data_hash
Most ComfyUI workflows hardcode their canvas size in an Empty Latent Image node. That's fine when the graph is the whole job. It's wrong when Blender is the boss - and in the Texturaizer pipeline, Blender is the boss. Get Render Data is the node that reads the render resolution out of Blender's export and hands it to the rest of your graph, so your AI output always matches the 3D viewport's aspect ratio instead of fighting it.
Texturaizer is a Blender addon (paid, Gumroad) by Luke Kratsios that sends per-object data and render passes to ComfyUI; these nodes are its free open-source counterpart. Like every Get * Data node in the pack, this one reads a data/ai_data.json from an object's save folder and splits out one specific slice of it.
What it gives you
Just three outputs, and two of them are the show:
width(INT) andheight(INT) - the resolution the scene was exported at, straight fromscene_infoin the JSON.data_hash(STRING) - the change-detection hash every node in this pack emits.
Feed width/height into an Empty Latent Image (or any latent-size-aware node that takes width/height ints) and your generation matches Blender's render. Change the render size in Blender, re-export, and the whole downstream graph re-runs at the new size - that's the data_hash + IS_CHANGED mechanism doing its job: when the hash changes, ComfyUI treats the node as dirty and re-executes.
Inputs you'll actually set
Same pattern as the rest of the family:
directory_optional- the object's save folder. Leave blank to fall back on the global directory set by Set Global Dir (Texturaizer).data_optional- aDICTIONARYto use instead of reading the file, if a previous node already loaded the JSON.
Why this matters in practice
Beyond the obvious "match your render size," there's a subtlety: Blender lets you render at any resolution, and if you've got a 16:9 viewport but a latent node hardcoded to 1024×1024, you get a square image stretched into a widescreen frame - or worse, the segmented per-object prompts misalign with the composited result. Pulling resolution from the render data keeps every pass consistent, which is the entire reason Texturaizer's multi-pass workflow holds together.
One thing to know: the source reads width and height with hard indexing (scene_data['width']), so if the JSON is missing those keys the node will throw instead of silently returning 0. That's actually a good failure - it means your Blender export didn't include render settings, and you need to re-export with the scene's resolution set.
Install & gotchas
Install is the standard pack-level deal:
cd ComfyUI/custom_nodes
git clone https://github.com/LatentSpaceDirective/ComfyUI-Texturaizer
# restart ComfyUI
Or search "Texturaizer" in ComfyUI Manager and click Install - the pack has no extra dependencies beyond what ComfyUI already ships, and no models to download. The free nodes pair with the paid addon; the node itself reads whatever resolution Blender wrote.
If you're testing this node standalone (no Blender), you can skip the JSON entirely: feed a DICTIONARY with {"scene_info": {"width": 1024, "height": 1024}} into data_optional and it'll behave exactly as if the file had been there. That's the cleanest way to smoke-test your graph before the 3D side is wired up.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| directory_optionalopt | STRING | — | |
| data_optionalopt | DICTIONARY | [object Object] | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| width | INT | Texturaizer JSON data. |
| height | INT | Hash value for debugging purposes. |
| data_hash | STRING | — |