Почему прошлый прогон развалился: 44 кейфрейма генерились НЕЗАВИСИМО из текста → каждый кадр заново выдумывал сцену (локация плясала, палатка/джип телепортировались, рыба то целая то нарезана, одежда/сковорода менялись, мопс → хаски). Текстовая генерация по кадру континуити держать не может. Фикс — генерация с якорями, редактированием и в порядке истории.
1. География маршрута (location-beat map)
Ролик = путешествие через РАЗНЫЕ локации, с логикой. Основная (лагерь) — одна, залоченная; остальные — прогрессия, не повторяются.
| Бит | Локация | Роль | Консистентность |
|---|---|---|---|
| L1 | Асфальтовая трасса | старт, едет | проходная сцена, distinct |
| L2 | Съезд на бездорожье | входит в дикую местность | проходная, distinct, ведёт к L3 |
| L3 | Перегон по бездорожью (несколько кадров) | добирается | прогрессия, соседние кадры могут частично совпадать, НЕ петля одного места |
| L4 | ПРИБЫТИЕ → ЛАГЕРЬ (основная) | тут весь быт/готовка/ночь/утро | ОДИН залоченный master-кадр, все кадры лагеря = его редактирование |
| L5 | Отъезд → НОВАЯ дорога/локация (финал) | уезжает дальше | НЕ повторять L4/L1; новая сцена = крючок «куда дальше» |
Правила: (1) точка прибытия ≠ стартовая локация. (2) Основная локация фиксируется master-кадром и дальше только редактируется. (3) Финал уводит на НОВУЮ дорогу. (4) Проходные road-локации просто distinct и прогрессивные.
2. Scene-lock (якорь локации) — ядро фикса
Для КАЖДОЙ фиксированной локации (прежде всего лагерь) — один master-кадр (wide establishing): где стоит джип, палатка, костёр, озеро, деревья, скалы, горизонт. Это набор координат сцены.
- Все последующие кадры этой локации = РЕДАКТИРОВАНИЕ master-кадра (image-to-image): master подаётся как ref №1, промпт = «та же самая сцена, та же расстановка, КАМЕРА теперь [ракурс/крупность], в кадре [действие]; сохрани фон, свет, расстановку».
- Никакой независимой текстовой генерации для залоченной локации.
2b. Chain-lock — континуити внутри действия
Scene-lock держит МАКРО (локация не пляшет). Но предметы «на поверхности» (сковорода, доска, тарелка, поза) внутри одного непрерывного действия всё ещё скачут, если каждый кадр редактируется из master НЕЗАВИСИМО.
- Внутри одного непрерывного бита кадр N генерится редактированием кадра N-1 (ref №1 = предыдущий кадр, ref №2 = master/персонаж).
- Object-placement lock: физическая опора предмета задаётся в якоре бита (сковорода ВСЕГДА стоит на камнях/решётке костра, не парит). Negative:
floating pan, levitating object, object in mid-air. - Per-shot object-state в ledger: состояние каждого предмета на каждый шот (сковорода: пустая → рыба → жарится).
- Ориентация/камера (правило 180°): крупные объекты (джип) не разворачиваются без сюжетной причины.
2c. Blocking-map — единая пространственная геометрия
Единая КАРТА РАССТАНОВКИ локации (floor-plan/blocking), которой подчиняются ВСЕ кадры на протяжении всего ролика. Пример (лагерь): джип — СЛЕВА, задом-3/4; костёр — центр-право, передний план; озеро — за костром; лес — справа; скала — слева.
- Геометрия фиксируется master-кадром + текстом в манифесте (
blocking). - Каждый кадр держит расстановку: даже крупняк в боке показывает ПРАВИЛЬНУЮ сторону.
- Соблюдается правило 180° по всей сцене.
Три слоя вместе: blocking-map (где что стоит, весь ролик) → scene-lock (тот же вид) → chain-lock (континуити между соседними кадрами).
3. Character-lock (персонаж)
- Один залоченный костюм (см. STYLE HEROINE). Ref character-sheet — в КАЖДЫЙ кадр с Милой.
- Одна причёска (тот же хвост), те же перчатки при готовке.
- Negatives в каждый кадр:
different outfit, changing clothes, different hairstyle, other woman, a man, extra person.
4. Prop-lock + таймлайн состояний (монотонность, без откатов)
Реквизит = один канонический вид. Расходники меняют состояние ТОЛЬКО вперёд (откат = баг):
Действие-превращение показываем крупными планами рук последовательно.
5. Continuity-ledger (журнал состояний)
Таблица на эпизод: строка = шот, столбцы = состояние каждой сущности (время суток · локация(L1–L5) · костёр · палатка · рыба · что на сковороде · одежда=locked · Bao присутствует). Заполняется ДО генерации. Линтер проверяет монотонность.
6. Генерация в порядке истории (sequential)
- Кадры одной локации генерятся по порядку сюжета, каждый — редактированием master.
- После каждого кадра — визуальная сверка с master/ref-ами (лицо/одежда/расстановка/состояние реквизита). Дрейф → перегенерить ЭТОТ кадр, дальше не идём с браком.
- Медленнее параллельной пачки, но только так держится континуити.
7. Bao-lock и «без лишних людей»
- В каждый кадр с собакой — ref
assets/shared/bao.png. Negatives:husky, different dog breed, wolf, changing dog. - Mila путешествует ОДНА. Negatives везде:
other people, second person, a man, crowd.
8. Порядок сборки ассетов (чего не хватало)
Прежде чем генерить кейфреймы эпизода, собрать ФУНДАМЕНТ:
assets/character/nika/nika-sheet.png— в залоченном костюме.- Master-кадры локаций:
episodes/epNN/masters/L4-camp-master.png+ L1/L2/L3/L5 establishing. - Prop-sheet:
assets/shared/props.png(сковорода, чайник, топор, палатка, кружка) + рыба-таймлайн. - Continuity-ledger в манифесте.
Только потом — кейфреймы через scene-lock редактирование в порядке истории.
9. Валидация метода
Прежде чем гнать весь эпизод — доказать континуити на ОДНОМ непрерывном блоке (готовка у костра, ~10 шотов в одной залоченной локации, в порядке истории): держится ли локация/персонаж/одежда/сковорода/рыба-прогрессия/Bao. Зашло → масштабируем.