• Каждое решение кадра ложится в одну из 3 осей: что в кадре, как снято, как освещено
  • Настроение задаётся физикой света и плёнки, а не словами вроде moody и cinematic
  • В мультишот-кампании окружение и свет константны, меняется только Optics

Задача

Промпты для генеративных image-моделей пишутся тремя способами, и каждый ломается под продакшн-нагрузкой.

Свободная проза («a moody portrait of a woman holding a red bottle in a warehouse, cinematic, 8K») пишется быстро и не отлаживается: когда выход неверный, не за что ухватиться. Стопка ключевых слов (portrait, red bottle, warehouse, cinematic, volumetric light, 85mm, bokeh) ощущается контролируемее, но слова не ортогональны: «cinematic» пересекается со всем, «volumetric light» заранее задаёт свет, «85mm» сцепляет субъект и камеру. Починка одного ломает другое. Шаблон с именованными полями ({subject}, {style}, {lighting}, {mood}, {aesthetic}) в итоге дублирует сам себя: style кодирует lighting, lighting кодирует mood, и половина полей остаётся пустой.

Продакшн — это мультишот-кампании, раскадровки, серии с одним персонажем. Ему нужен формат промпта с четырьмя свойствами: композируется (один шот из пяти ложится рядом с остальными), отлаживается (плохая картинка прослеживается до конкретного решения), передаётся новым людям и надёжно воспроизводится LLM-агентом. A.O.C. — это формат, к которому я пришёл на продакшн-пайплайнах 2024–2026 годов. Он намеренно opinionated.

Метод

A.O.C. раскладывает кадр на три оси, которые зеркалят разделение труда на реальной съёмке: режиссёр ставит сцену, оператор кадрирует, гаффер и колорист светят и грейдят.

flowchart LR
    R([Режиссёр]) -->|ставит сцену| A[Anchor:<br/>что в кадре и где]
    O([Оператор]) -->|кадрирует| B[Optics:<br/>как камера видит]
    G([Гаффер, колорист]) -->|светят, грейдят| C[Chemistry:<br/>свет и материал]
    A --> P[Промпт<br/>кадра]
    B --> P
    C --> P

Anchor (якорь): что в кадре и где. Субъект (один субъект, один момент), локация, ориентация: как субъект повёрнут к камере, как сидит в окружении, его масштаб относительно среды. Anchor ничего не говорит о том, как камера это видит и как свет это рендерит.

Optics (оптика): как камера это видит. Поведение объектива (средовое, естественное, сжатое, макро), измеримая дистанция, глубина резкости через f-stop, плоскость фокуса, экспозиция. Эффекты (motion blur, bokeh, smear) выключены по умолчанию и должны заслужить место; когда используются, описываются через физику: «directional smear from subject motion during a 1/4-second exposure», а не через эстетическое слово. Optics описывается как функция, не как бренд: «85mm» допустимо как сокращение для «moderate portrait compression», «shot on ARRI» — нет.

Chemistry (химия): как свет и материал формируют изображение. Поведение света (позиция, направленность, falloff, качество края тени, контраст), тональный отклик, цвет (температура в кельвинах, насыщенность), зерно и текстура, атмосфера. Ключевое правило: настроение инженерится через физику, а не через mood-слова. Вместо «moody and cinematic» блок Chemistry читается как «single directional light from left at 45°, soft shadow edge, 4:1 contrast ratio, tungsten 3200K, heavy grain consistent with ISO 3200». Картинка получится moody, но теперь это следствие заданной физики, а не заклинание.

flowchart LR
    M[moody and<br/>cinematic] -->|перевод| F[Свет слева 45°,<br/>4:1, 3200K, зерно]
    F --> R[Картинка moody<br/>как следствие]
    classDef key stroke:#FF3600,stroke-width:2px
    class F key

Почему именно три оси. Ортогональность: три независимые команды на съёмке принимают три независимых решения. Полнота: каждое решение still-image-модели попадает в одну из осей; движение, звук и нарратив обрабатываются сестринскими фреймворками. Обучаемость: три оси — максимум, который практик держит в рабочей памяти во время письма; две схлопывают слишком многое, четыре превращаются в чек-лист.

Рабочий пример, сокращённый:

ANCHOR: A 50ml amber glass dropper bottle, label "Serum 01" readable, upright
on a dark-walnut countertop, centred, three-quarter angle, grounded by its
shadow; soft-focus props at the periphery (linen towel, ceramic dish).
OPTICS: Medium-close product framing, 85mm equivalent, camera at bottle height,
5° downward tilt. f/2.8 behaviour, focus locked on the label. Clean exposure,
no motion blur, no flare.
CHEMISTRY: Single key from upper-left at 45° through a large softbox, bounce
fill from right at 1:3. 4200K. Midtone-biased curve, lifted blacks, rolled-off
highlights. Fine grain (ISO 400). No haze. Specular down the right shoulder.

Каждое утверждение Anchor — про то, что в кадре; каждое утверждение Optics — про то, как снято; каждое утверждение Chemistry — про свет и плёнку. Смена объектива не трогает свет, смена света не трогает композицию. Сбой «label unreadable» трассируется в Optics (плоскость фокуса), а не в Anchor.

flowchart LR
    F[Сбой: label<br/>unreadable] --> Q{Какая ось?}
    Q -.->|что в кадре| A[Anchor]
    Q -->|как снято| O[Optics:<br/>плоскость фокуса]
    Q -.->|свет и плёнка| C[Chemistry]
    classDef key stroke:#FF3600,stroke-width:2px
    class O key

Оси сами по себе — это начало. Надёжным продакшн-инструментом A.O.C. делают правила композиции, которые выкристаллизовались на мультишот-кампаниях:

  1. Порядок разрешения. Когда референсы расходятся по измерению, разрешать в фиксированной последовательности: окружение, стиль, цвет, субъект. Первый референс, заявивший измерение, выигрывает. Без правила и LLM, и люди чередуют предпочтения, и консистентность рассыпается.
  2. Правило непрерывности. По всем шотам кампании локация Anchor и состояние света Chemistry держатся константой. Меняется только Optics. Именно это делает пять картинок похожими на одну съёмку: генератор не пересоздаёт сцену, а перекадрирует её.
  3. Роли шотов. Каждой позиции предзадана роль. Продуктовая кампания: мастер окружения, часть продукта, продукт целиком, деталь, атмосферный кадр. Персонажная: общий лайфстайл, портрет-герой, взаимодействие с продуктом, деталь, атмосферная история. Роли форсируют разнообразие дистанции и крупности; без них LLM дрейфует к пяти похожим шотам.
  4. Декларация референсов. Каждый промпт инлайн говорит, какой референс что отдаёт: «environment and shadow direction sourced from Image 2». Референс без декларации модель применит по-своему.
  5. Lock как отдельный слой. Когда identity субъекта должна пережить серию, фиксация не входит в блок A.O.C. A.O.C. описывает кадр; Lock гарантирует, что субъект переживёт кадр без изменений. Смешивание загрязняет оси и теряет обе цели. Подробно в Lock-слое.
flowchart TB
    subgraph K[Константа кампании]
        direction LR
        A[Anchor:<br/>локация] ~~~ C[Chemistry:<br/>состояние света]
    end
    subgraph S[Пять шотов: меняется только Optics]
        direction LR
        S1[Мастер<br/>окружения] ~~~ S2[Часть<br/>продукта] ~~~ S3[Продукт<br/>целиком] ~~~ S4[Деталь] ~~~ S5[Атмосферный<br/>кадр]
    end
    K --> S

Обновление, сентябрь 2026. Правило непрерывности работает и в обратную сторону. Для каталога предметов серия снимается как один съёмочный день: Optics и Chemistry общие, меняется только Anchor, и разные предметы читаются одной коллекцией. Эту пару осей удобно держать как общий хвост, который дословно дописывается к каждому Anchor. Первая версия предметов для главного экрана сайта — каталожный CG-рендер — была отклонена как «не стильно». Вторая превратила предметы в найденные вещи — потёртые, с рваными краями — и сменила хвост: снимок мыльницей со встроенной вспышкой примерно с 60 см или планшетный скан строго сверху. К Anchor добавилось жёсткое правило: никаких рук, лиц и голов, в том числе на афишах и наклейках внутри предмета. Готовый предмет проверяется уменьшением до 120 px: силуэт должен узнаваться.

Жёсткость Anchor как регулятор. На бренд-промптах ЗДЕСЬ одна ось работала в двух режимах. В продакшн-наборе Anchor жёсткий: знак и wordmark берутся из референса и никогда не перерисовываются. В исследовательском наборе Anchor ослаблен до ДНК бренда (силуэт плюса, слово ЗДЕСЬ, оранжевый #FF3600), и один борд 3×3 за одну генерацию даёт девять радикально разных направлений. Регулятор настраивается двумя фразами. Теряется узнаваемость: «the plus silhouette and the word ЗДЕСЬ must stay clearly recognizable». Слишком буквально копирует: «do NOT reproduce the current identity; mutate it».

Как человеческая дисциплина A.O.C. работает. Как выход LLM-архитектора работает лучше. В продакшне обычно живут два архитектора: продуктовый (ровно 5 блоков под 5 ролей) и персонажный (N блоков по циклическим ролям). Принципы, которые из этого выпали: архитектор получает одно описание окружения от предыдущей стадии и пишет все шоты внутри него (см. двухстадийный паттерн); вход включает явный список референсов по позициям, и системный промпт запрещает ссылаться на несуществующие номера; отсутствующий референс объявляется в промпте как fallback, а не подставляется молча; блоки разделены низкоэнтропийным разделителем вроде ^ на отдельной строке; температура 0.5: выше — проза недисциплинирована, ниже — пять почти одинаковых шотов.

flowchart LR
    E[Описание окружения<br/>от прошлой стадии] --> AR[LLM-архитектор:<br/>температура 0.5]
    RF[Референсы<br/>по позициям] --> AR
    M[Нет референса:<br/>объявить fallback] --> AR
    AR --> B[Блоки A.O.C.<br/>через разделитель ^]

Где ломается

Основная ценность A.O.C. — в конкретных сбоях, которые он исключает.

СбойСимптомФикс
Mood-слова в Chemistry«moody», «cinematic», «atmospheric»Физика света и плёнки
Бренд-слова в Optics«shot on ARRI», «Fujifilm look»Оптическая механика
Схлопнутые осиСвет описан в Anchor, кадрирование в ChemistryРазнести по осям
Молчаливые референсыКартинки прикреплены без объявленного примененияДекларация в каждом промпте
Эффекты по умолчаниюBlur, bokeh, grain «для cinema feel»Эффекты выключены, пока не обоснованы
Цепочка прилагательных«moody, cinematic, dramatic, epic»Каждое переводится в механизм или выкидывается
Утечка между осями«natural light 85mm» в OpticsСветовое утверждение уходит в Chemistry

Честные ограничения самого фреймворка:

  • Нет контролируемого исследования. A.O.C. против прозы против стопки ключевых слов на слепых оценщиках не проверялось. Утверждения о качестве и консистентности опираются на продакшн-опыт.
  • Порядок разрешения эмпирический. Последовательность «окружение, стиль, цвет, субъект» сложилась в работе, альтернативные порядки правдоподобны.
  • Только стиллы. Видео добавляет ось движения, 3D раскладывает Chemistry на свет и материал. Ранние признаки, что расширение чистое, но это не доказано.
  • Имя оси Chemistry натянуто. Она покрывает свет, плёнку и атмосферу разом; более точный термин, возможно, существует.

Итог

  • Каждый still-image-промпт факторизуется на три ортогональные оси, соответствующие трём стадиям реальной съёмки.
  • Дисциплина по осям даёт промпты, которые композируются, отлаживаются и надёжно пишутся LLM.
  • Пять правил композиции превращают оси в мультишот-инструмент; главное из них — одно окружение и один свет на кампанию.
  • Для серии предметов константа инвертируется: общий хвост Optics и Chemistry, меняется только Anchor.
  • Это рабочий инструмент, а не финальная спецификация: возьмите, сломайте, расширьте.

© Александр Никулин. Цитирование — с указанием автора и ссылкой · Версия для LLM