Load Plate Sequence
The loader that keeps plate.1001 called 1001
- images
- fps
- first_frame
Load Plate Sequence does something no stock ComfyUI loader bothers with: it remembers what your frames are called. Feed it plate.1001.exr through plate.1247.exr and the matte comes back as alpha_01001.png, not alpha_00001.png. If you've ever had to renumber a shot before handing it to comp, that alone is the node.
This id, SelectiveMatte_LoadPlateSequence, is the pre-rename name. In the menu you'll see it as Load Plate Sequence; the current id is ComfyProAlpha_LoadPlateSequence. Old workflows keep working - the legacy class is still registered, just hidden from search.
What it connects to
It's the front end for the pack's matting node, but there's nothing magic about that pairing - it outputs a plain IMAGE batch, so any IMAGE-hungry thing downstream will take it. The three outputs are images, fps and first_frame, and the latter two are the point: wire all three into Comfy Pro Alpha Generator and the node gets the plate frame rate and the starting frame number without you typing anything.
The four fields
path takes a folder (D:/plates/sh010) or a pattern - plate.####.exr or plate.%04d.exr, absolute or relative to ComfyUI/input. That second form is the one people miss; you don't have to make one folder per shot.
fps is just metadata passed through. first and last are frame numbers, not list indices - and that's the trap. first=1001, last=1100 loads frames 1001–1100. last=100 on a 1001-numbered plate loads nothing at all and the node errors out with no frames in range. Zero means "from the start" / "to the end", which is why the defaults look inert.
Missing folders don't blow up at queue time - the node validates the path and shows the error on the node itself. Slightly nicer than the usual red toast after a 20-minute queue.
What it does to your pixels
This is where a compositor should pay attention. The loader converts everything to 8-bit display-referred RGB before ComfyUI ever sees it:
- EXR is treated as scene-linear, run through the sRGB curve and clipped to 0–1.
- 16-bit PNG/TIFF gets shifted down to 8-bit (
>>8).
So the plate inside the graph is 8-bit sRGB. That's deliberate and correct for what happens next - SAM3 and LTX alpha-gen both want display-referred images - but it means this node is not how you'd read a plate for a linear grading chain. You're here for the alpha, and the 16-bit or half-float EXR the matting node writes is the deliverable. The input conversion costs you nothing measurable and keeps the whole pipeline in a bit depth that streams from RAM.
Numbers come from the filename
Frame numbers are scraped from the filename, from the last run of digits. plate.1001.exr → 1001. sh010_v2_0042.exr → 42. If a folder mixes names with and without numbers, the un-numbered ones sort first and report a first_frame of 1, which will quietly desync your output naming. Keep the naming convention boring and this never comes up.
Extensions picked up by the folder scan: .png .jpg .jpeg .tif .tiff .exr .bmp .webp .dpx. Worth knowing that a stray reference JPEG sitting in the plate folder will be loaded as a frame. Pattern matching is the safer option on a real shot.
Install
ComfyUI Manager → search Comfy Pro Alpha (or Install via Git URL with https://github.com/rik-python/ComfyUI-Comfy-Pro-Alpha-Generator.git). By hand:
cd ComfyUI/custom_nodes
git clone https://github.com/rik-python/ComfyUI-Comfy-Pro-Alpha-Generator.git
pip install -r ComfyUI-Comfy-Pro-Alpha-Generator/requirements.txt
Restart ComfyUI. This node needs no models of its own - it pulls in OpenCV and PyAV through the pack's requirements, and the heavy weights (LTX-2.5, SAM3, ViTMatte) are only needed once you're actually matting. ComfyUI 0.38+ is required for the V3 node API. The pack itself is free for non-commercial use only.
Gotchas
It loads the whole sequence into one IMAGE batch, as float32. A 242-frame 4K plate is 4K × 242 × 4 bytes × 3 channels of tensor sitting in RAM before any node runs. Long 4K shots want splitting into runs of ~100 frames via first/last. The author's own measurements put a 242-frame native-4K render at 73–97 GB peak RAM, and this loader is where that starts.
The cache key is coarse. The node fingerprints the path, fps, range, the file count and the modification times of the first and last files only. Re-render one frame in the middle of your range and ComfyUI may happily reuse every downstream result. Touch a file at either end, or clear the node's cache, when you've changed something in the middle.
Empty is empty. last earlier than first gives you a validation error rather than a silent zero-frame batch, which is the behaviour you want, but the message is short and easy to miss on a node you scrolled past. Check the node before you check the graph.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| path | STRING | Folder of frames, or a pattern: D:/plates/sh010/plate.####.exr (or %04d). Absolute, or relative to ComfyUI/input. | |
| fps | FLOAT | 24.0001–240 | — |
| first | INT | 0 | First frame NUMBER to load (0 = from the start) |
| last | INT | 0 | Last frame NUMBER to load (0 = to the end) |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| fps | FLOAT | — |
| first_frame | INT | — |