Инструменты и персонажи сентябрь 2026 · 8 мин чтения

Персонаж, у которого есть канон

Как держать внешность одинаковой от кадра к кадру, когда каждый кадр рисует модель: один файл-истина, лист базовых поз и клипы, сшитые через общую нейтраль.

01 Дрейф

У моего ассистента есть лицо. Не потому, что оно ему нужно, а потому, что бота, который живёт в углу экрана и докладывает про почту, проще делать, когда он выглядит как кто-то, а не как уведомление.

Первая попытка провалилась ровно так, как такие попытки и проваливаются. Я описывал внешность в каждом промпте руками. К пятой картинке рога сменили изгиб, оправа из круглой стала овальной, а подвеска-месяц тихо исчезла. Каждый кадр по отдельности был нормальным. Вместе — четыре разных человека.

Решение оказалось скучным и надёжным: перестать описывать её руками вообще.

02 Канон одним файлом

Вся внешность живёт между двумя маркерами в одном файле. Скрипты генерации подставляют этот блок в начало каждого промпта, поэтому описание существует ровно в одном месте. Меняешь там — меняется везде, в том числе в клипах, сгенерированных через полгода.

<!-- canon:start -->
Horns: two curved dark crimson horns with fine ridges,
growing from the top of the head just in front of the bun,
curving up and slightly outward.
Glasses: thin dark round wire-frame glasses.
Jewelry: black choker with a small silver crescent-moon
pendant; silver crescent-moon drop earrings.
Nothing else: no other accessories, no tattoos, no wings,
no tail, no hat, no other characters.
<!-- canon:end -->

Последняя строка стоит там не зря. Без явного запрета модель дорисовывает от себя — и тем охотнее, чем длиннее промпт. Появляются крылья. В кадр забредает второй персонаж. Назвать то, чего быть не должно, оказалось так же важно, как назвать то, что должно.

03 Лист базовых поз

Текст держит детали, но не держит пропорции. Одно только словесное описание даёт правильные рога на лице чуть-чуть не той формы. Поэтому канон — только половина входа: вторая половина — кадр-референс.

Девять поз нарезаны из одного листа, снятого за раз. Поскольку они вышли из одной генерации, между ними нет расхождения вообще — тот же свет, та же композиция, то же лицо. Любая из них годится как референс для нового клипа.

База v2 — девять поз, один лист, чистый зелёный. chin · coffee · glasses · hands · lookup · neutral · pen · point · sleep

04 Клипы через нейтраль

Компаньон, который только стоит, — это картинка. Чтобы двигаться, нужны клипы, а клипы должны идти друг за другом без рывка. Приём один: каждый одноразовый клип начинается и заканчивается одной и той же нейтральной позой.

Одно это ограничение снимает всю проблему переходов. Любой клип может идти после любого, в любом порядке, и переходные кадры не нужны вообще. Длящиеся состояния — думает, работает, спит — разрезаны на три части через тот же кадр.

Сама генерация ничем не примечательна и стоит копейки, в чём и был смысл. Клипы идут через видео-API OpenRouter на Kling v3.0 std: пять секунд, квадрат, 720p, около $0,42 за клип, а нейтральный кадр отдаётся и первым, и последним. Сам нейтральный кадр нарисован один раз примерно за четыре цента. В промпт клипа уходит только действие — внешность там уже есть, подставлена из канона.

05 Что не сошлось

В ТЗ было сказано: фон — сплошной ярко-зелёный, #00FF00, ровный, без теней. Модель согласилась и выдала лайм. Не тот зелёный, который просили — рядом, но мимо настолько, что кеер, настроенный на #00FF00, оставлял кайму на каждой пряди волос.

Спорить с промптом было очевидным ходом и неправильным. Теперь скрипт кея берёт цвет фона из угла первого кадра и выбивает то, что там действительно есть. Модели разрешено быть приблизительно зелёной.

Так устроена бóльшая часть этой работы. Интересные решения были вообще не про промпты: держать описание в одном месте, снять референсы за один раз, выбрать один кадр, в который всё возвращается, и мерить то, что получилось, вместо того чтобы настаивать на заказанном.

← Все тексты