From a106d3ae2d045b73bd0455d016f6525d11280faa Mon Sep 17 00:00:00 2001 From: digital-garbage <133010426+digital-garbage@users.noreply.github.com> Date: Wed, 29 Jul 2026 22:42:36 +0300 Subject: [PATCH] anchor_shift: record the frames-to-drop finding in both tooltips Live result: 48 frames (6 latent) was needed for a quick-cut prompt to open strictly on the requested action - the default 8 removes only the anchor and leaves the settling-in stretch where the shot is still departing the reference still and nothing happens yet. Cited in the tooltips as a starting point FOR THIS PIPELINE (768x768x305@30 i2v chain, quick-cut prompt), not a universal default, and the node default stays 8 - one workflow's tuned value is not evidence for another's. Co-Authored-By: Claude Opus 5 --- movie_editor/frontend/engine_settings.js | 2 +- samplers.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/movie_editor/frontend/engine_settings.js b/movie_editor/frontend/engine_settings.js index b529dede..5ac0df87 100644 --- a/movie_editor/frontend/engine_settings.js +++ b/movie_editor/frontend/engine_settings.js @@ -231,7 +231,7 @@ { name: "anchor_shift_sigma", label: "Shift at sigma", kind: "float", default: 0.909, min: 0.05, max: 0.999, step: 0.001, dependsOn: "anchor_shift", hint: "The knob this feature exists to let you tune — in continue mode. (Rewind mode, i.e. any non-zero restart sigma below, runs pass 1 over the whole schedule and ignores this; the scene report says so.) Pass 1 runs until the schedule first reaches this sigma, then the shift happens. 0.909 is where structure actually starts forming on the distilled schedule (1.0 and 0.975 are near-pure noise and carry almost no signal), so it's the earliest cut where the anchor has plausibly transferred anything — a starting guess, not a measured value. Higher = released sooner and cheaper, but the reference may never have landed. Lower = held longer, but more of pass 1's picture is thrown away by the slide and fewer steps remain to repair it." }, { name: "anchor_shift_frames", label: "Frames to drop", kind: "int", default: 8, min: 8, max: 512, step: 8, dependsOn: "anchor_shift", - hint: "How much of the front to drop at the shift, in real frames. 8 (one latent frame) removes just the anchor itself; more also removes the settling-in region where the shot is still visibly 'leaving' the reference still. Raise it if the opening still looks like it departed from a photo. The clip doesn't get shorter — whatever is dropped here is regrown at the end by pass 2." }, + hint: "How much of the front to drop at the shift, in real frames. 8 (one latent frame) removes just the anchor itself, which is usually not enough — the anchor is followed by a settling-in stretch where the shot is still leaving the reference still and little is happening, and on a prompt asking for immediate action that dead time is exactly what you want gone. 48 was the value that worked on a 768×768×305@30 chain with a quick-cut prompt; treat that as a starting point for this pipeline rather than a universal default. Raise it if the opening still looks like it departed from a photo. The clip doesn't get shorter — whatever is dropped here is regrown at the end by pass 2." }, { name: "anchor_shift_restart_sigma", label: "Pass 2 restart sigma", kind: "float", default: 0.0, min: 0.0, max: 0.999, step: 0.001, dependsOn: "anchor_shift", hint: "Picks between the two modes. 0 (default) = CONTINUE: pass 1 stops at the shift sigma and pass 2 resumes from exactly that state with no re-noising — cost stays one full schedule. Anything above 0 = REWIND: pass 1 runs the WHOLE schedule to a finished clip, the shift is applied to that, then pass 2 re-noises it up to this sigma and denoises down. That's the standard img2img recipe and it is only valid on a finished latent, which is why pass 1 has to complete first. Rewind gives much more freedom to rebuild the regrown tail and blend the joint, and costs a full schedule plus the tail. Try it around 0.9 if continue leaves a visible seam or a thin ending." }, { name: "anchor_shift_tail", label: "Regrown tail starts from", kind: "combo", choices: ["extend_last", "wrap", "empty"], default: "extend_last", dependsOn: "anchor_shift", diff --git a/samplers.py b/samplers.py index 8007c61b..0bbc3474 100644 --- a/samplers.py +++ b/samplers.py @@ -2492,7 +2492,7 @@ class FunPackLTXAVSceneChainSampler: }), "anchor_shift_frames": ("INT", { "default": 8, "min": 8, "max": 512, "step": 8, - "tooltip": "How many frames to drop off the front at the shift, in real frames (converted to latent frames with the VAE's own time scale). One latent frame — 8 real frames at the standard scale — removes just the anchor itself. More also removes the settling-in region right after it, where the clip is still visibly 'leaving' the reference image; raise this if the opening still looks like it is departing from a still rather than already in motion. The clip does not get shorter: whatever is dropped here is regrown at the end by pass 2.", + "tooltip": "How many frames to drop off the front at the shift, in real frames (converted to latent frames with the VAE's own time scale). One latent frame — 8 real frames at the standard scale — removes just the anchor itself, which is usually NOT enough: the anchor is followed by a settling-in stretch where the shot is still leaving the reference still and little is happening yet, and on a prompt that asks for immediate action that dead time is exactly what you want gone (48 was the value that worked on a 768x768x305@30 i2v chain with a quick-cut prompt — a starting point for this pipeline, not a universal default). More also removes the settling-in region right after it, where the clip is still visibly 'leaving' the reference image; raise this if the opening still looks like it is departing from a still rather than already in motion. The clip does not get shorter: whatever is dropped here is regrown at the end by pass 2.", }), "anchor_shift_restart_sigma": ("FLOAT", { "default": 0.0, "min": 0.0, "max": 0.999, "step": 0.001,