kubakub apply lut (old)
Get your Resolume look into ComfyUI, or your ComfyUI look out
- images
- mask
- images
What it's for
If you're making content for projection mapping you already own a pile of .cube files - Resolume, MadMapper, After Effects, Resolve, whatever the house system uses. This node applies one of them to your frames, inside the graph, so the thing you preview in ComfyUI is the thing that plays on the building instead of a picture you grade again later in a second application.
It's the second half of a pair: kubakub colour match fits a look and can write you a .cube; kubakub apply lut reads one and applies it. Same idea as colour match, different direction - one goes image → look, this one goes look → image.
How it works
It parses the .cube text directly and applies the table to each frame: 1D or 3D LUTs both work, which covers the classic Resolve/AE .cube exports. strength blends between your untouched frames and the full look, so 0.35 is a faint version of the grade rather than an on/off switch. The optional mask restricts the look to part of the frame - white is full strength, grey is partial, and a mask of another size gets resized to the frames. One mask serves the whole batch.
Where the files come from is the nicest detail: the dropdown is built from input/luts, models/luts and output/kubakub_luts, so anything colour match saved is immediately selectable, and anything you drop into the input folder shows up next to it.
Inputs and outputs
images- the frames to grade (a still or a batch).lut- the.cubeyou picked from the dropdown. If none of those folders has any.cubeat all, the dropdown literally reads(none: put .cube files in input/luts).strength- 0 to 1, default 1. How much of the look.lut_path(optional) - any.cubepath, and it wins over the dropdown. This is the escape hatch for project folders and network shares.mask(optional) - grade inside only.
One output: images. Feed it to deflicker if the grade introduced movement, then to kubakub export video / frames.
Install
Manager → kubakub nodes. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/kubakubkub/ComfyUI_KubaNodes
python -m pip install -r ComfyUI_KubaNodes/requirements.txt
That requirements.txt is one line long - opencv-python-headless>=4.8 - and if you already run opencv-python or opencv-contrib-python, keep yours rather than letting pip swap in a second build. The pack wants ComfyUI 0.37.0+ for its node API.
Common issues
- "kubakub apply lut: no .cube file". The node raises rather than quietly passing your frames through, which is the right behaviour and still annoying at 2am. Check the spelling, and note that
lut_pathis checked first - a stale path there overrides a perfectly good dropdown selection. - Your freshly copied
.cubeisn't in the list. The option list is built when the node loads, so a new file ininput/lutsneeds a ComfyUI restart (or paste the path inlut_path). This is the single most common "the node is broken" that isn't. - The grade looks blown out. Check
strengthand check the LUT's colour space assumptions - a log-to-Rec709 LUT applied to already-Rec709 frames does exactly what you'd expect, which is nothing good. Frames come through in 0-1 float, so a LUT that expects a wider range will crush. - Nothing happens at all. A
.cubethat parses but does nothing usually means the LUT was authored for a different primaries/gamma pair. Look at the file in a text editor - a 3D LUT lists itsDOMAIN_MIN/DOMAIN_MAX, and if the domain isn't the usual 0-1, that's your answer.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| lut | COMBO | A .cube from input/luts, models/luts, output/kubakub_luts. | |
| strength | FLOAT | 1.000–1 | How much of the look: 1 = all of it, 0 = the frames as they are. |
| lut_pathopt | STRING | Any .cube file; wins over the list. | |
| maskopt | MASK | The look only inside this mask (white = full, grey = partly); outside the frames stay as they are. One mask serves every frame; another size is resized. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |