как побороть консистентность

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

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

Пропорции уезжают первыми

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

Помогло только одно — писать пропорции числом прямо в промпте, а не надеяться на «как на референсе». Детские пропорции, примерно один к трём голова к телу, невысокое коренастое тело — и это каждый раз заново, а не один раз и забыть. А для по-настоящему динамичных сцен, где тело с такими пропорциями физически не может убедительно так стоять, — кадрировать по пояс или прятать ноги за столом. Не пытаться удержать чиби-пропорции в полный рост посреди прыжка, там они разваливаются первыми.

Чем меньше в кадре — тем стабильнее персонаж

Похожая история с фоном. Стоило добавить в сцену чуть больше вещей — окно, полку, какое-нибудь растение — и весь кадр, включая самого персонажа, уползал в более живописную, менее мультяшную картинку. Решение оказалось до обидного простым: не больше одного-двух предметов, реально связанных с темой сцены, и никакой полной «комнаты» на фоне.

Отсюда же выросло и требование к самой композиции: персонаж и предмет, с которым он взаимодействует, должны читаться как один плотный силуэт, а не набор объектов разного масштаба, раскиданных по кадру.

Свет, который выглядит фальшиво, если сделать проще

Отдельная головная боль — как затемнить фон вокруг персонажа. Первая попытка — просто размыть края мягкой виньеткой — выглядела как два слоя, наложенных друг на друга: персонаж плюс фильтр поверх фона. Даже если по сюжету это было «от лампы». Реальный свет так не работает. Пришлось прямо в промпте писать, что свет обрывается резко, как театральный софит, а всё, что вне его лучей, — просто плоская темнота, без градиента и полупрозрачных фильтров.

И тут же выяснилось, что источник света нельзя один раз придумать и переиспользовать. «Лампа сверху» использовалась дважды — и сама стала таким же узнаваемым шаблоном, каким раньше была симметричная поза. Пришлось держать в голове: источник света — тоже переменная, и придумывать его каждый раз заново. То окно сбоку, то свечение от экрана, то дверной проём.

Слово, которое лучше вообще не писать

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

И ещё одна мелочь из той же серии: разные инструменты генерации читают одну и ту же формулировку по-разному. Фраза про «плоскую заливку без художественной тени» в одном инструменте оставляла нужный лёгкий градиент с референса, а в другом делала персонажа полностью матовым, вообще без единого блика. Пришлось переписать честнее — не «плоско, без теней», а «тот же уровень мягкого градиента и лёгкого блеска, что на референсном листе».

Что в итоге

Ни одно из этих правил я не придумал заранее — каждое нашлось только потому, что генерация реально ломалась именно в этом месте, и приходилось разбираться, почему. Список получился скучным на вид: цифры вместо красивых прилагательных, прямые запреты вместо намёков, точный код цвета фона вместо «тёмного оттенка на глаз». Но именно эта скучная точность и держит персонажа одним и тем же от картинки к картинке — там, где красивые формулировки регулярно уводили его куда-то в сторону.