The canvas boards still described the 1.0 node
Browse filesBoth shipped workflows carry their documentation on their own canvas, and
neither had been revisited since 1.0. The laws on them are unchanged and
still correct -- what was missing is most of what this release is.
Starter, seven cards to eight:
- **New card, "New in 2.0".** Master audio, `anchor: "restart"` paired with
`last_frame_guide=before_restart`, `tone_anchor_ref=still` with the
measurement that motivates it, and SWAP -- including the two things the
GPU tests established: do not describe the clip on MEDIA before a swap
(that caption reaches the encoder and asks for the person being replaced),
and drop the clip to about 0.3 MP, because a clip's decode area is its
token count and its token count is its influence.
- **"References and @tags "** gains per-shot `refs`, which overrides every
`shots` list for one hop -- and says that `[]` is what a restart hop
usually wants, so the photograph supplies the room instead of a portrait
being put back in front of it.
- **"Directives"** gains the rest of the per-shot fields, which were
documented nowhere on the canvas: `refs`, `anchor`, `tone`, `seed`,
`steps`, `locked`/`id`, `prose`. Plus the short-hop overlap note.
- **"Let a model write it"** now leads with the **WRITE tab**, which has
been the headline feature since 1.0 and which this card did not mention at
all -- it described only the `prompt_pack/` copy-paste route, which is now
the second half.
Showcase: the note keeps its plan and gains what 2.0 would let you do to it
-- `refs` on a shot as the direct way to express hop 5's zero-reference
case, `tone_anchor_ref`, and turning shot 6's return to the kitchen into a
real restart with a guided match cut into it.
`check_workflows` passes: 8 cards marked and non-empty, the group encloses
every one, and the board still stays left of the graph.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RVz8qNGn2NhrP3KG2Lh5yT
|
@@ -874,7 +874,7 @@
|
|
| 874 |
"title": "H3 Ref2VA Chain",
|
| 875 |
"properties": {},
|
| 876 |
"widgets_values": [
|
| 877 |
-
"Hand Tie Clips -- SHOWCASE (6 hops x 7 s = 39.2 s)\n\nA continuity stress test, and the honest demonstration of what the reference\nregister buys you.\n\nREQUIRES a turbo stack on the MODEL wire, which is how this node is actually\nrun here:\n\n UNETLoader -> LoRA Loader Stack (turbo LoRA) -> H3 AdaLN LoRA Fix\n -> MiniMax H3 Low VRAM Attention -> H3 SLA Attention\n -> Model Preview Override -> this node\n\n ComfyUI-PlagueKind-Nodes -> LoRA Loader Stack, AdaLN Fix, SLA Attention\n ComfyUI-KJNodes -> Low VRAM Attention (experimental),\n Model Preview Override\n\nOn disk as well: the turbo LoRA named in the loader, and taeh3.safetensors for\nthe live preview (or set tiny_vae to none).\n\nCLIP reaches this node FROM THE LORA LOADER, not from the encoder. That is what\nmakes the text half of every LoRA land. Do not rewire it back.\n\n`steps` is 7, which only works with the turbo LoRA. Missing a pack? Its nodes\nload as red boxes -- delete them, wire the loader straight into `model` and the\nencoder into `clip`, and raise `steps` to 20 or so.\n\nBEFORE YOU RUN IT, supply three pictures. Open REFERENCES on the node and drop\nyour own onto each thumbnail, or put files in ComfyUI/input/h3_refs named:\n\n ref_face.jpg head-and-shoulders, even light -> @hero_face\n ref_outfit.jpg full length, same person -> @hero_outfit\n ref_room.jpg the room, wide -> @kitchen\n\nWithout them the run stops and names the reference it could not find. Nothing\nguesses.\n\nWhat each hop is testing:\n\n 1 kitchen, dialogue all three references active\n 2 lateral move to the window kitchen only\n 3 exits through the doorway kitchen only\n 4 hallway - UNSEEN space face re-asserted; no room reference exists\n 5 dialogue, ZERO references identity, wardrobe and voice ride on the frame\n pin plus subjects.1.locked/context alone\n 6 returns to the kitchen on a MATCH CUT, not a continuous join -- one\n unbroken take across two rooms makes the model\n morph one into the other mid-movement\n\nHop 5 is the point of the whole thing. If the cook is still the same person in\nthe same apron with the same voice, with no picture in front of the encoder,\nthe register is doing its job.\n\n`shots` on each reference is what schedules this. On a continuation chain,\nomitting `shots` means HOP 1 ONLY. Right for a place plate, wrong for a face:\nput every face reference on every hop, or the identity drifts and stays\ndrifted. List every hop a still should appear on.\n\nSettings that are deliberate, not defaults:\n control_after_generate = fixed or no two runs are comparable\n tone_compensate = frame_shift counters the drift that accumulates over six\n hops. Set it to `off` and re-queue for a\n same-seed A/B: tone mode is not in the hop\n key, so every hop replays from cache in\n seconds instead of re-rendering.\n cache_hops = on edit shot 4 and only shots 4-6 re-render\n"
|
| 878 |
],
|
| 879 |
"color": "#432",
|
| 880 |
"bgcolor": "#653"
|
|
|
|
| 874 |
"title": "H3 Ref2VA Chain",
|
| 875 |
"properties": {},
|
| 876 |
"widgets_values": [
|
| 877 |
+
"Hand Tie Clips -- SHOWCASE (6 hops x 7 s = 39.2 s)\n\nA continuity stress test, and the honest demonstration of what the reference\nregister buys you.\n\nREQUIRES a turbo stack on the MODEL wire, which is how this node is actually\nrun here:\n\n UNETLoader -> LoRA Loader Stack (turbo LoRA) -> H3 AdaLN LoRA Fix\n -> MiniMax H3 Low VRAM Attention -> H3 SLA Attention\n -> Model Preview Override -> this node\n\n ComfyUI-PlagueKind-Nodes -> LoRA Loader Stack, AdaLN Fix, SLA Attention\n ComfyUI-KJNodes -> Low VRAM Attention (experimental),\n Model Preview Override\n\nOn disk as well: the turbo LoRA named in the loader, and taeh3.safetensors for\nthe live preview (or set tiny_vae to none).\n\nCLIP reaches this node FROM THE LORA LOADER, not from the encoder. That is what\nmakes the text half of every LoRA land. Do not rewire it back.\n\n`steps` is 7, which only works with the turbo LoRA. Missing a pack? Its nodes\nload as red boxes -- delete them, wire the loader straight into `model` and the\nencoder into `clip`, and raise `steps` to 20 or so.\n\nBEFORE YOU RUN IT, supply three pictures. Open REFERENCES on the node and drop\nyour own onto each thumbnail, or put files in ComfyUI/input/h3_refs named:\n\n ref_face.jpg head-and-shoulders, even light -> @hero_face\n ref_outfit.jpg full length, same person -> @hero_outfit\n ref_room.jpg the room, wide -> @kitchen\n\nWithout them the run stops and names the reference it could not find. Nothing\nguesses.\n\nWhat each hop is testing:\n\n 1 kitchen, dialogue all three references active\n 2 lateral move to the window kitchen only\n 3 exits through the doorway kitchen only\n 4 hallway - UNSEEN space face re-asserted; no room reference exists\n 5 dialogue, ZERO references identity, wardrobe and voice ride on the frame\n pin plus subjects.1.locked/context alone\n 6 returns to the kitchen on a MATCH CUT, not a continuous join -- one\n unbroken take across two rooms makes the model\n morph one into the other mid-movement\n\nHop 5 is the point of the whole thing. If the cook is still the same person in\nthe same apron with the same voice, with no picture in front of the encoder,\nthe register is doing its job.\n\n`shots` on each reference is what schedules this. On a continuation chain,\nomitting `shots` means HOP 1 ONLY. Right for a place plate, wrong for a face:\nput every face reference on every hop, or the identity drifts and stays\ndrifted. List every hop a still should appear on.\n\nSettings that are deliberate, not defaults:\n control_after_generate = fixed or no two runs are comparable\n tone_compensate = frame_shift counters the drift that accumulates over six\n hops. Set it to `off` and re-queue for a\n same-seed A/B: tone mode is not in the hop\n key, so every hop replays from cache in\n seconds instead of re-rendering.\n cache_hops = on edit shot 4 and only shots 4-6 re-render\n\nWorth trying on this plan, all new in 2.0:\n\n refs on a shot Hop 5's zero-reference case is scheduled here through\n each ref's own `shots` list. A shot can also say it\n directly -- `\"refs\": []` is no stills at all, and\n `\"refs\": [\"hero_face\"]` is that one and nothing else,\n whatever the register says.\n\n tone_anchor_ref Set tone_compensate to `anchor` and this to `still`\n and the chain holds the PHOTOGRAPH rather than hop 1.\n A ten-run outside study measured hop 1 as already\n short of the still before any relay has happened, so\n anchoring on it converges on a target that already\n fell short. Needs a start image.\n\n anchor: restart Put `\"anchor\": \"restart\"` on shot 6 with\n `join: hard_cut` and the return to the kitchen is a\n real cut off the start image rather than a relay --\n the only thing measured to stop a long chain\n converging. Then set last_frame_guide to\n `before_restart` in RUN, so hop 5 ENDS on the same\n photograph hop 6 opens on and the cut reads as a\n match cut.\n"
|
| 878 |
],
|
| 879 |
"color": "#432",
|
| 880 |
"bgcolor": "#653"
|
|
@@ -1,7 +1,7 @@
|
|
| 1 |
{
|
| 2 |
"id": "h3-ref2va-chain",
|
| 3 |
"revision": 1,
|
| 4 |
-
"last_node_id":
|
| 5 |
"last_link_id": 22,
|
| 6 |
"nodes": [
|
| 7 |
{
|
|
@@ -1303,7 +1303,7 @@
|
|
| 1303 |
"htc_card": "refs"
|
| 1304 |
},
|
| 1305 |
"widgets_values": [
|
| 1306 |
-
"## References and @tags\n\nA picture in the register does not make the model use it. **The beat is what\ndrives the frame** -- write the tag into the action line.\n\nPhrase a place as a place that is *depicted*, not as a container to be placed\ninside: \"at the counter in `@kitchen`\", not \"steps into `@kitchen`\".\n\n### Fields\n\n| field | what it does |\n|---|---|\n| `tag` | what you write in beats as `@tag` |\n| `file` | a bare filename in `input/h3_refs` |\n| `subject` | groups pictures **of the same person** |\n| `retention` | `fully_preserved` / `partially_copy` / `reference` |\n| `shots` | the 1-based hops this picture rides |\n\n**One subject number per person.** Two different people under one number makes\nthe model render the average of their faces.\n\n### `shots` is the part that decides continuity\n\n**A reference with no `shots` list rides hop 1 only.** Right for a **place**\nplate: a room still riding a hop set somewhere else beats the frame pin, and the\nmodel follows the still. **List every hop a picture belongs on.**\n\n**A face plate is the opposite \u2014 put it on every hop.** A hop scheduled with no\nface reference came back a different person, and no later hop recovered.\nIdentity drift does not self-correct.\n\n- Every **face** ref gets every hop: `\"shots\": [1, 2, 3, 4, 5, 6]`.\n- Keep a **place** ref on the hops set in that place, and off the rest.\n\n### `locked` and `context`\n\nPer-subject prose that rides **every hop**, with no picture citation, so it\ncarries identity across a hop where the photograph is absent. Give every subject\na `locked`, and a `name` -- from hop 2 on, `@tag` for a person resolves to that\nname.\n\n**Name a colour or it drifts.** A noun with no adjective is unanchored: each hop\nis an independent encode, so \"the bowl\" on hop 4 came back stainless steel. Put\nproperties in `context` -- \"the bowl is white porcelain\" -- never locations, and\nrepeat the adjective in every beat."
|
| 1307 |
],
|
| 1308 |
"color": "#432",
|
| 1309 |
"bgcolor": "#653"
|
|
@@ -1329,7 +1329,7 @@
|
|
| 1329 |
"htc_card": "directives"
|
| 1330 |
},
|
| 1331 |
"widgets_values": [
|
| 1332 |
-
"## Directives\n\nFive axes, all optional, set per shot. An unset axis emits nothing at all and\ncosts no tokens.\n\n| axis | values |\n|---|---|\n| `join` | `continuous`, `match_cut`, `hard_cut` -- **omit on shot 1** |\n| `camera` | `hold`, `pan_follow`, `push_in`, `pull_back`, `orbit`, `handheld` |\n| `framing` | `keep`, `wide`, `medium`, `close` |\n| `pace` | `slow`, `steady`, `brisk` |\n| `tail` | `ongoing` (default), `settle`, `hold` |\n\nThey compile in that order -- `join` first, because it describes how this hop\nmeets the previous one.\n\n### Two combinations the node warns about\n\n**`join: continuous` + a framing change + `camera: hold`.** A framing change asks\nthe audience to be somewhere new; with the camera still, the only way there is a\ncut. Earn it on the move (`push_in`, `pull_back`, `pan_follow`) or use\n`framing: keep`.\n\n**`push_in` + `wide`, or `pull_back` + `close`.** The move points the opposite way\nfrom the destination.\n\nBoth are warnings, not errors. They are legitimate things to want -- they just\nrarely read the way you meant.\n\n### Duration\n\nPer-shot `duration` overrides the chain, using exactly these labels:\n`\"5 s\"`, `\"7 s\"`, `\"8 s\"`, `\"10 s\"`, `\"15 s\"`."
|
| 1333 |
],
|
| 1334 |
"color": "#432",
|
| 1335 |
"bgcolor": "#653"
|
|
@@ -1407,10 +1407,36 @@
|
|
| 1407 |
"htc_card": "author"
|
| 1408 |
},
|
| 1409 |
"widgets_values": [
|
| 1410 |
-
"## Let a model write your plan\n\n
|
| 1411 |
],
|
| 1412 |
"color": "#432",
|
| 1413 |
"bgcolor": "#653"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1414 |
}
|
| 1415 |
],
|
| 1416 |
"links": [
|
|
|
|
| 1 |
{
|
| 2 |
"id": "h3-ref2va-chain",
|
| 3 |
"revision": 1,
|
| 4 |
+
"last_node_id": 39,
|
| 5 |
"last_link_id": 22,
|
| 6 |
"nodes": [
|
| 7 |
{
|
|
|
|
| 1303 |
"htc_card": "refs"
|
| 1304 |
},
|
| 1305 |
"widgets_values": [
|
| 1306 |
+
"## References and @tags\n\nA picture in the register does not make the model use it. **The beat is what\ndrives the frame** -- write the tag into the action line.\n\nPhrase a place as a place that is *depicted*, not as a container to be placed\ninside: \"at the counter in `@kitchen`\", not \"steps into `@kitchen`\".\n\n### Fields\n\n| field | what it does |\n|---|---|\n| `tag` | what you write in beats as `@tag` |\n| `file` | a bare filename in `input/h3_refs` |\n| `subject` | groups pictures **of the same person** |\n| `retention` | `fully_preserved` / `partially_copy` / `reference` |\n| `shots` | the 1-based hops this picture rides |\n\n**One subject number per person.** Two different people under one number makes\nthe model render the average of their faces.\n\n### `shots` is the part that decides continuity\n\n**A reference with no `shots` list rides hop 1 only.** Right for a **place**\nplate: a room still riding a hop set somewhere else beats the frame pin, and the\nmodel follows the still. **List every hop a picture belongs on.**\n\n**A face plate is the opposite \u2014 put it on every hop.** A hop scheduled with no\nface reference came back a different person, and no later hop recovered.\nIdentity drift does not self-correct.\n\n- Every **face** ref gets every hop: `\"shots\": [1, 2, 3, 4, 5, 6]`.\n- Keep a **place** ref on the hops set in that place, and off the rest.\n\n### Or decide it from the shot instead\n\nA shot can name its own stills, which overrides every `shots` list for that\none hop:\n\n```json\n{\"beat\": \"...\", \"refs\": [\"hero_face\", \"kitchen\"]}\n```\n\nOmit the field for the register's own scheduling. `[]` is **no stills at\nall** -- which is what a `restart` hop usually wants, so the photograph\nsupplies the room rather than putting a portrait back in front of it.\nUnknown tags fail on the queue, not mid-render.\n\n### `locked` and `context`\n\nPer-subject prose that rides **every hop**, with no picture citation, so it\ncarries identity across a hop where the photograph is absent. Give every subject\na `locked`, and a `name` -- from hop 2 on, `@tag` for a person resolves to that\nname.\n\n**Name a colour or it drifts.** A noun with no adjective is unanchored: each hop\nis an independent encode, so \"the bowl\" on hop 4 came back stainless steel. Put\nproperties in `context` -- \"the bowl is white porcelain\" -- never locations, and\nrepeat the adjective in every beat."
|
| 1307 |
],
|
| 1308 |
"color": "#432",
|
| 1309 |
"bgcolor": "#653"
|
|
|
|
| 1329 |
"htc_card": "directives"
|
| 1330 |
},
|
| 1331 |
"widgets_values": [
|
| 1332 |
+
"## Directives\n\nFive axes, all optional, set per shot. An unset axis emits nothing at all and\ncosts no tokens.\n\n| axis | values |\n|---|---|\n| `join` | `continuous`, `match_cut`, `hard_cut` -- **omit on shot 1** |\n| `camera` | `hold`, `pan_follow`, `push_in`, `pull_back`, `orbit`, `handheld` |\n| `framing` | `keep`, `wide`, `medium`, `close` |\n| `pace` | `slow`, `steady`, `brisk` |\n| `tail` | `ongoing` (default), `settle`, `hold` |\n\nThey compile in that order -- `join` first, because it describes how this hop\nmeets the previous one.\n\n### Two combinations the node warns about\n\n**`join: continuous` + a framing change + `camera: hold`.** A framing change asks\nthe audience to be somewhere new; with the camera still, the only way there is a\ncut. Earn it on the move (`push_in`, `pull_back`, `pan_follow`) or use\n`framing: keep`.\n\n**`push_in` + `wide`, or `pull_back` + `close`.** The move points the opposite way\nfrom the destination.\n\nBoth are warnings, not errors. They are legitimate things to want -- they just\nrarely read the way you meant.\n\n### Duration\n\nPer-shot `duration` overrides the chain, using exactly these labels:\n`\"5 s\"`, `\"7 s\"`, `\"8 s\"`, `\"10 s\"`, `\"15 s\"`.\n\n**Short hops cut, long hops flow.** Overlap is chain-wide, so a 5 s hop\nasking for `join: continuous` spends a fifth of itself on the airlock. The\nnode prints a note when it does.\n\n### The other per-shot fields\n\n| field | what it does |\n|---|---|\n| `refs` | which register stills ride this hop |\n| `anchor` | `\"restart\"` makes this hop a chain start |\n| `tone` | `\"free\"` skips the tone pull once, `\"rebase\"` moves the anchor |\n| `seed`, `steps` | per-shot overrides |\n| `locked` + `id` | keep this shot's cached take while you rewrite around it |\n| `prose` | free text appended verbatim |"
|
| 1333 |
],
|
| 1334 |
"color": "#432",
|
| 1335 |
"bgcolor": "#653"
|
|
|
|
| 1407 |
"htc_card": "author"
|
| 1408 |
},
|
| 1409 |
"widgets_values": [
|
| 1410 |
+
"## Let a model write your plan\n\n**The WRITE tab on the node is the short way.** Point it at any\nOpenAI-compatible server -- LM Studio, llama-server -- describe the scene in\none sentence, and press **Write plan**. It fills the SCRIPT cards and the\nREFERENCES rows together, and the pictures already on those rows go with the\nrequest, so the model describes what it is looking at rather than guessing\nfrom a filename. Server settings stay on this machine and are never saved\ninto the workflow.\n\nSet the server up as: **context 32768** (the system prompt alone is ~6,000\ntokens and every reference picture costs ~260 more), **reasoning off** (a\nreply that stops before the JSON closes is the tell), **temperature 0.3**.\n\nRead two things in every draft: each reference's `desc`, which can be\nconfidently wrong about its own photograph, and the spoken words in every\nbeat. The node lints both and prints what it finds before you render.\n\n### Or paste it into a chat window\n\n`prompt_pack/` is the same writer as a copy-paste prompt. In LM Studio, or\nanything with a system-prompt box:\n\n1. Load a model with **context 16384 or more**. The prompt is ~4,700 tokens and\n the reply another 1,000-2,000; a small window truncates the rules and you get\n invented directive names.\n2. Paste **`prompt_pack/SYSTEM_PROMPT.md`** into the **System Prompt** box.\n Nothing else goes in that box.\n3. **Temperature 0.3-0.5.** Higher and the JSON grows trailing commas and smart\n quotes.\n4. Describe the scene, and say how many hops and what pictures you have:\n\n > Six hops. A cook in a kitchen; she says one line, walks out into a hallway,\n > waits by a window, then comes back. I have a face photo, a photo of her\n > apron, and a photo of the kitchen.\n\n5. Each panel section has its own **JSON** disclosure at the bottom. The first\n ```json``` block goes in the one under **SCRIPT** (`shot_plan`), the second\n in the one under **REFERENCES** (`ref_plan`). Bad JSON keeps the last good\n version on screen and says so, rather than discarding your paste.\n6. **If the node rejects it, paste the error straight back into the chat.** One\n round trip usually fixes it.\n\nWant it to match a shape? Paste `prompt_pack/EXAMPLE_6_HOP.md` first.\n\nSmall models (7B-8B) hold the JSON schema but drift on the prose rules -- they\nwrite negations. Skim the beats before queueing.\n\n## Fixing one hop without re-rendering the rest\n\nSet **`cache_hops` to `on` before your first run.** It is off by default, and a\nhop that was never cached cannot be reused. Nothing to install.\n\nThe cache key **chains**, so editing shot 5 of 8 re-renders 5 to 8 and reuses 1\nto 4 off disk. Hop 6 was rendered *from* hop 5, so it has to. **Edit the\nearliest hop you dislike and work forward** -- that way each hop is paid for\nonce.\n\nAnything chain-wide re-renders everything: resolution, aspect, sampler,\nscheduler, either shift, `ref_image_size`, the checkpoint, or the LoRA stack.\nThat is the usual reason the cache looks broken.\n\nSome levers are cheaper than they look. `overlap`, `pin_to_qwen` and the pin\nsettings only reach hop 2 onward, so flipping one re-renders hops 2+ and leaves\nhop 1 on disk. A reference picture is keyed on the hops it actually rides -- so\na re-crop counts even under the same filename, but swapping the file behind a\nref that only rides hop 5 leaves hops 1-4 alone.\n\nLoved a hop? Put `\"locked\": true` and a stable `\"id\"` on that shot and it keeps\nthat exact take even when its inputs move. Unrelated to `subjects.N.locked`,\nwhich is identity text.\n\nFull detail in `PROMPTING.md`, under *Re-rolling one hop*."
|
| 1411 |
],
|
| 1412 |
"color": "#432",
|
| 1413 |
"bgcolor": "#653"
|
| 1414 |
+
},
|
| 1415 |
+
{
|
| 1416 |
+
"id": 39,
|
| 1417 |
+
"type": "MarkdownNote",
|
| 1418 |
+
"pos": [
|
| 1419 |
+
-960,
|
| 1420 |
+
2120
|
| 1421 |
+
],
|
| 1422 |
+
"size": [
|
| 1423 |
+
440,
|
| 1424 |
+
600
|
| 1425 |
+
],
|
| 1426 |
+
"flags": {},
|
| 1427 |
+
"order": 113,
|
| 1428 |
+
"mode": 0,
|
| 1429 |
+
"inputs": [],
|
| 1430 |
+
"outputs": [],
|
| 1431 |
+
"title": "New in 2.0",
|
| 1432 |
+
"properties": {
|
| 1433 |
+
"htc_card": "whats_new"
|
| 1434 |
+
},
|
| 1435 |
+
"color": "#432",
|
| 1436 |
+
"bgcolor": "#653",
|
| 1437 |
+
"widgets_values": [
|
| 1438 |
+
"## New in 2.0\n\n### One take the whole chain lip-syncs to\n\n**MEDIA > master audio.** Set a file and every hop is locked to its own\nwindow of it on the same clock as the picture; the delivered audio is a\npassthrough of your recording, not a re-encode. Empty is off, and off is\nexactly what 1.1 did. The beat still needs the words in `<d>[English]\n...</d>` -- the lock supplies the timing, not the script. A take shorter\nthan the chain is refused on the queue rather than discovered as a mute\nfinal hop.\n\n### A cut you meant to make\n\n`\"anchor\": \"restart\"` on a shot makes that hop a chain start: the start\nimage is frame 0 and nothing is relayed. It is the one thing measured to\nstop a long chain converging -- and it **is** a cut, so put it where a cut\nis motivated. Pair it with `join: hard_cut`, name the room in the beat, and\nnever put it on shot 1.\n\nThen set **`last_frame_guide` to `before_restart`** in RUN. It plants the\nstart image at the last frame of the hop *before* the restart, so both\nsides of the cut meet on the same photograph and it reads as a match cut.\n`still` does it on every hop and will fight any shot that authors a\n`framing` -- leave it alone unless none of them do.\n\n### Hold the photograph, not hop 1\n\n`tone_compensate=anchor` pulls each hop back toward a target.\n**`tone_anchor_ref=still`** makes that target the start image. A ten-run\noutside study measured hop 1 as already short of the still before any relay\nhas happened -- chroma 30 against 33.6 -- so anchoring on hop 1 converges on\na target that already fell short. Needs a start image.\n\n### SWAP\n\nA one-hop identity swap from a reference clip: the clip brings the motion\nand the scene, a still from the rail brings the person. Four modes that each\nsay what **stays**, because at cfg 1.0 omitting the swap line does not keep\nthe clip's person.\n\nTwo things to get right: **do not describe the clip on MEDIA first** -- that\ncaption reaches the encoder and asks for the person you are replacing -- and\n**drop the clip to about 0.3 MP**, because a clip's decode area is its token\ncount and its token count is its influence.\n\n### Also\n\nThree reference-clip slots and three voice slots. `pin_mech` to force the\njoin mechanism instead of letting `auto` pick. The seam report reads the\nchain's `info` output, so it finds the real joins on a chain whose hops are\nno longer all the same length.\n"
|
| 1439 |
+
]
|
| 1440 |
}
|
| 1441 |
],
|
| 1442 |
"links": [
|