Nodes/ComfyUI LC Vision Nodes/LC Vision Redirect πŸ”¬
ComfyUI Node

LC Vision Redirect πŸ”¬

The fix for pose snapping at every H3 segment join

By lonecatone23Β·Created 29 days agoΒ·Updated about 7 hours agoΒ· 10
LC Vision Redirect πŸ”¬
  • vision_model
  • plan
  • plan
  • notes
β—„index0β–Ί
β—„enabledtrueβ–Ί
β—„max_tokens1024β–Ί
β—„temperature0.30β–Ί
β—„seed0β–Ί

You've built the chain: plan written, segment 1 rendered, segment 2 conditioned on segment 1's tail. And segment 2 opens with her jamming a key into a door that was already open in the last frame - because your plan says "she opens the door" and the renderer doesn't know better. It snaps the pose to match the words.

That's the join problem, and it's why long video by stitching looks like stitching. LC Vision Redirect πŸ”¬ sits between the Director and the LC H3 Segment nodes: before a CONTINUE renders, it looks at how the previous segment actually ended and rewrites the opening of the next one to start from that state.

How it reads the tail

It doesn't guess. The segment nodes save a seg_003_tail.mp4 next to each segment in output/LC_H3/<project>/, and Redirect pulls three frames across that tail - last frame included - at 768px via ffmpeg/ffprobe, then sends them as an IMAGE batch. Then it asks twice.

  1. LOOK - a continuity-supervisor prompt: in one or two sentences, say exactly how the shot ends, judged by the LAST frame - where each person is, standing or walking, inside or outside, pose and hands, which way they face, what's held, what's open or closed.
  2. REWRITE - a text-only pass taking END STATE: and PLANNED:, rewriting the opening beats so anything already finished (sitting down while walking outside, opening an open door, entering a room they're already in) becomes a beat that moves toward the plan's later beats. Beats that already fit survive word for word. It even handles the fiddly cases: end state somewhere else in the room, so the first beat walks or pans there instead of cutting; subject ended up facing away, so the first beat turns them or the camera comes round to their face.

The guard rails are the good part

A rewrite that mangles your plan is worse than the snap you were fixing, so every rewrite is checked first. It's rejected and the plan's text kept if it loses a quoted line, changes a Place:, Holding:, Sound: or Camera: line, drops its timestamps, pushes one past the end of the segment, or grows past 1.6Γ— the original plus 80 characters. You're told either way, in notes and the console: the described end state, then the new opening, already matches, no change., or the rejection reason.

Wiring it

vision_model comes from LC Vision Loader, and per the tooltip it's only loaded when a segment actually needs redirecting - CUT segments and segment 1 cost no VRAM. plan is the LC_H3_PLAN from LC Vision Director. index must match your LC H3 Segment node; 0 means "the next segment not saved yet", resolved by finding which seg_00N.json + seg_00N_part.mp4 pair is missing. enabled off is a clean pass-through, so you can A/B a join. temperature defaults to 0.3 on purpose - low keeps the rewrite close to your plan.

Outputs: plan (rewritten, with the original kept as action_original, so nothing is lost) and notes (STRING).

It caches properly too: the rewrite is stored in plan.json with the tail's mtime and IS_CHANGED keys on that mtime. Re-run without redoing segment 2 and it's instant. Redo segment 2 and the tail changed, so it looks again.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/lonecatone23/ComfyUI_LC_Vision_nodes.git

Or Manager β†’ search LC Vision. install.py resolves the right JamePeng/llama-cpp-python wheel (the fork carrying Qwen3VLChatHandler, which never made it upstream and only ships as GitHub Release assets, so a plain requirements.txt can't find it). Restart after.

The dependency nobody mentions: ffmpeg. Redirect shells out to ffmpeg and ffprobe through shutil.which, so both need to be on your PATH. ComfyUI bundles its own ffmpeg for video nodes but doesn't necessarily expose it as a command, which is why a fresh install can hit this:

ffmpeg -version || sudo apt install ffmpeg     # Linux
brew install ffmpeg                            # macOS

What goes wrong

Segment 4 isn't saved yet: nothing to look at. The tail for segment 3 doesn't exist at output/LC_H3/<your project>/seg_003_tail.mp4. Either it isn't rendered, or the Director's project name differs from the segment nodes' - the paths derive from the same folder, so a mismatch looks exactly like a missing file.

Could not read ... (is ffmpeg on PATH?) - as above. Five-minute fix, two-hour mystery.

Segment 4 is a CUT: nothing to redirect. Correct and free. A CUT is a new shot; there's no continuity to preserve. First segments pass through for the same reason.

The rewrite keeps getting rejected. Read notes - it names the rule that tripped. Repeated "lost the line" means the model is trying to shorten a segment whose dialogue doesn't fit the time left after the overlap: shorten the line, or give the segment more room.

It rewrote more than you wanted. Drop temperature first. And remember it's reading small, compressed 768px frames: excellent at "inside or outside, standing or sitting, door open or shut", fuzzy about which hand holds the cup. Right trade for a pose fix, wrong tool for nits.

CategoryLC Vision

Inputs (7)

NameTypeDefaultDescription
vision_modelLC_VISION_MODELHandle from LC Vision Loader. Only loaded when a segment actually needs redirecting.
planLC_H3_PLANFrom LC Vision Director 🎬.
indexINT00–60Set it the same as LC H3 Segment. 0 = the next segment not saved yet.
enabledBOOLEANtrueOff: the plan passes through untouched.
max_tokensoptINT1024128–8192β€”
temperatureoptFLOAT0.300–2Low keeps the rewrite close to your plan.
seedoptINT00–4294967295β€”

Outputs (2)

NameTypeDescription
planLC_H3_PLANβ€”
notesSTRINGβ€”