- Четыре паттерна: наследование референса, анти-повтор, соседство, конденсация референсов
- Цепочка внутри сцены надёжна на 3–6 шотах; дальше дрейф накапливается
- Больше 3 референсов на вызов портят выход; конденсация сводит их к одному композиту
Задача
Каноничный ответ на «как удержать персонажа неизменным через тридцать шотов», — это обучить на нём модель: LoRA, DreamBooth, полный fine-tune. Работает и дорого. Под один продакшн — тридцать шотов за неделю и один раз — обучение избыточно: оно меняет гибкость на консистентность по цене выше нужной, а персонаж оказывается залочен в позах, гардеробе и свете тренировочной выборки.
Второй канонический ответ — прикрепить референсы к каждой генерации и надеяться. Дёшево и хрупко: поведение генератора с референсами непоследовательно, референсы влияют молча, консистентность улучшается, но не приземляется.
Тридцать отдельных генераций дают тридцать слегка разных персонажей: дрейф лица, гардероба, окружения, света. По отдельности каждый шот выглядит нормально; как последовательность зритель регистрирует «это разные люди в разных сценах». Ниже — третий путь: промпт-архитектура, которая накладывает консистентность структурно, без обучения. Она работает, потому что генераторы уже принимают reference-conditioning; вопрос только в том, как референсы прикреплены и что текст про них говорит.
Метод
Сначала форма продакшна. Это не плоский список из тридцати генераций, а лес линейных цепочек, сгруппированных по сценам: внутри сцены шоты идут цепочкой (1B зависит от выхода 1A, 1C — от 1B), между сценами зависимости нет, сцены рендерятся параллельно. Консистентность внутри цепочки держится наследованием; консистентность между сценами держится внешними референсами (общий референс персонажа, общий референс стиля), а не цепочкой. Эта форма и делает паттерны ниже возможными.
flowchart TB
R[Внешние референсы:<br/>персонаж, стиль]
subgraph s1[Сцена 1]
direction LR
A1[1A] --> B1[1B] --> C1[1C]
end
subgraph s2[Сцена 2]
direction LR
A2[2A] --> B2[2B] --> C2[2C]
end
R -.-> s1
R -.-> s2Паттерн 1 — наследование референса. Отрендеренный кадр шота 1A прикрепляется как визуальный референс к рендеру шота 1B. Identity персонажа, гардероб, состояние окружения переносятся визуально, не переописываются в тексте. Работает, потому что генераторы принимают визуальный conditioning нативно, потому что картинка несёт плотный сигнал (текст не задаст «точное расположение пуговиц», картинка задаст), и потому что в короткой цепочке каждый шот должен совпасть только с непосредственным предшественником. Требует от текста намеренного умолчания: текст описывает только то, что меняется: действие, камеру, локацию; если он описывает identity в дополнение к референсу, два канала конкурируют. Ограничения: только короткие цепочки — 3–6 шотов, дальше дрейф накапливается; жёсткий порядок внутри сцены, 1B не рендерится до 1A; никакого наследования между сценами.
Паттерн 2 — анти-повтор с учётом серии. Те же предыдущие кадры прикрепляются, но как ограничение «чего избегать». Системный промпт: «analyse the prior frames, identify their camera angles and framing; for this shot choose a different angle while keeping the same style». Референс становится негативным якорем. Работает, потому что модели по умолчанию имитируют прикреплённое, и явная инверсия дефолта даёт разнообразие. Требует объявить, что должно варьироваться (угол, кадрирование) и что держаться (стиль, identity). Канонический случай: раскадровка, где кадры сцены делят стиль линии, но обязаны отличаться ракурсом. Паттерны 1 и 2 тянут в противоположные стороны — наследование стягивает выходы, анти-повтор расталкивает — и композируются только при чистом разделении измерений: наследовать identity, варьировать камеру. Перепутать (наследовать камеру, варьировать identity) — значит провалить оба.
flowchart LR
P[Предыдущие<br/>кадры] -->|наследование| I[Держать:<br/>identity, стиль]
P -->|анти-повтор| C[Варьировать:<br/>угол, кадрирование]
I --> N[Новый шот]
C --> NПаттерн 3 — промпты с учётом соседей. Промпт выхода n явно ссылается на состояние из n−1 и готовит n+1. Motion-промпт 1A: «gaze rotates to camera, motion lands on a pose that sets up 1B's opening». Motion-промпт 1B: «subject, now making eye contact (continuing 1A), begins to speak». Генератор производит движение, которое стыкуется с реальными соседями, а не с воображаемыми. Сильнее всего в паре с жёстким ограничением по кадрам: первый кадр равен рендеру n, последний — рендеру n+1, промпт описывает, как движение их соединяет. Сбои: соседний контент протекает внутрь выхода (изолировать «точки стыка по краям» от «содержимого внутри»); у первого и последнего шота нет соседа (правило-fallback «opening shot, begin fresh»); шот n не знает про n+1, если тот ещё не сгенерирован (двухпроходное планирование: сначала все шоты абстрактно, потом уточнение с соседями).
flowchart LR
A[Рендер n:<br/>первый кадр] --> M[Промпт: движение<br/>между кадрами]
M --> B[Рендер n+1:<br/>последний кадр]Паттерн 4 — конденсация референсов. Набор референсов на сцену (локация, персонаж, стиль, реквизит, цвет, камера) сворачивается в одну композитную картинку — обычно moodboard 16:9 — и дальше стадии прикрепляют только её. Оригиналы остаются для отладки. Причина: у генераторов конечный бюджет внимания на референсы: больше примерно трёх дают убывающие, а затем отрицательные возвраты — модель пытается удовлетворить все и выдаёт размытую кашу. Конденсация превращает задачу «много референсов» в задачу «один референс» ценой одного дополнительного шага генерации. Стадия-конденсатор читает каждый референс и его объявленную роль, применяет фиксированный порядок разрешения при расхождениях (окружение, стиль, цвет, субъект), пишет промпт композита (сам по себе промпт с умолчанием) и отдаёт генератору. Выход — сгенерированная картинка — сама становится референсом следующей стадии. Это же делает возможным умолчание ниже по пайплайну: когда композит надёжно несёт стиль, цвет и свет, текст может о них молчать.
flowchart LR
R[Референсы сцены<br/>с ролями] --> C[Конденсатор:<br/>порядок разрешения]
C --> M[Композит 16:9]
M --> S[Стадии ниже:<br/>один референс]
R -.-> D[Оригиналы<br/>для отладки]
classDef key stroke:#FF3600,stroke-width:2px
class M keyКак четыре паттерна собираются в продакшне. Конденсация выполняется один раз на сцену, остальные три активны на каждом шоте:
Шот 1B
vision: композит сцены, стиль/цвет/свет (паттерн 4)
rendered_1A.jpg как continuity (паттерн 1)
system: проанализировать предыдущие кадры,
выбрать другой ракурс, тот же стиль (паттерн 2)
text: только субъект / локация / камера,
связь с 1A, подготовка 1C (паттерн 3)
Ни один паттерн в одиночку не достаточен. Наследование без конденсации даёт перегруженную референсами кашу. Анти-повтор без разделения измерений даёт дрейф стиля. Соседство без наследования даёт красивые переходы между несовместимыми субъектами. Все четыре вместе дают консистентный и управляемый выход. Если серия строится на нескольких прозаических концептах, стадия директора из двухстадийного паттерна задаёт общее окружение до того, как включатся эти четыре; фиксация identity субъекта живёт отдельным Lock-слоем поверх.
Когда стек, а когда обучение. Стек ставится быстро, живёт в рамках проекта, гибок (субъект делает всё, что подсказывают референсы), но ограничен длиной цепочки и держит межсценовую консистентность внешними референсами. Обучение требует дней подготовки, переиспользуется между проектами, не ограничено длиной, но залочивает субъект в тренировочном распределении. Правило простое. Один продакшн с одним субъектом: стек. Много продакшнов с повторяющимся субъектом: LoRA. Повторяющийся субъект плюс новые вариации: оба: LoRA даёт межсценовый якорь, стек снимает дрейф внутри сцены.
flowchart TD
Q{Субъект<br/>повторяется?} -->|один продакшн| S[Стек]
Q -->|много продакшнов| V{Нужны новые<br/>вариации?}
V -->|нет| L[LoRA]
V -->|да| B[LoRA + стек]Обновление, сентябрь 2026. Для серий без персонажа — предметов и иконок — сработал путь короче. Серия снимается как один съёмочный день: Optics и Chemistry по A.O.C. записаны общим хвостом, который дословно дописывается к каждому промпту, меняется только описание предмета. Так держался каталог предметного бренда. В предметах для главного экрана сайта хвост «мыльница со вспышкой с 60 см» собирает в одну серию дорожный знак, диско-шар и DVD-диск. Консистентность здесь несёт текст, а не референс, поэтому каждый кадр генерируется независимо и цепочка не нужна.
Весь набор в одной генерации. Двенадцать иконок сервисов ЗДЕСЬ сделаны одним вызовом: сетка 3 × 4, каждый ряд отдан семейству со своим цветом плашки, все глифы собраны только из модулей знака. Консистентность держится внутри одной картинки, и расходиться между вызовами нечему. Если глифы всё же разъезжаются по стилю, в промпт добавляется «all 12 glyphs must look drawn by one designer with one set of shapes». Неудачная иконка перегенерируется отдельно, а удачный сет прикладывается референсом: «Keep the attached icon set style exactly; redraw only icon (N)». Это паттерн 1 — наследование, где референсом служит вся серия. Стикерпак из 12 стикеров собран так же — одним полотном.
Где ломается
- Накопление дрейфа. Наследование надёжно только на коротких цепочках. Сцены длиннее ~6 шотов разбиваются на подсерии с обновлением внешнего референса на границах.
- Путаница измерений. Наследование и анти-повтор без явного «что варьируем, что держим» деградируют оба. Это объявление несущее, а не опциональное.
- Дрейф и устаревание композита. Композит сам сгенерирован; если генератор дал ему узнаваемую эстетику, все стадии ниже её переимитируют. Промпт конденсации должен производить нейтральный композит, который якорит измерения, не накладывая новый стиль. И композит устаревает: обновили исходный референс, не перегенерировали композит, всё ниже наследует старое. Инвалидируйте композит при любом изменении источников.
- Нет количественной проверки. Сравнение стека с LoRA и наивной генерацией на общем бенчмарке консистентности не делалось; пределы длины цепочки и порог трёх референсов — это наблюдения, а не измерения.
Итог
- Консистентность серии не требует обучения — она требует четырёх композируемых паттернов: перенос состояния вперёд, варьирование по явным измерениям, стыковка на границах, сжатие референсов в один.
- Форма продакшна — лес коротких цепочек по сценам — сама является частью архитектуры.
- Обучение остаётся правильным ответом для повторяющихся субъектов; стек — для когерентности внутри продакшна. Большинство реальных пайплайнов используют оба.
- Для серий предметов и иконок консистентность держит общий хвост Optics и Chemistry или одна генерация на весь набор.
© Александр Никулин. Цитирование — с указанием автора и ссылкой · Версия для LLM