Перейти к содержимому

Как устроен мой контент-завод «Бумажный театр»

Константин Потапов
6 мин чтения

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

Как устроен мой контент-завод «Бумажный театр»

Я собрал инструмент, который превращает сценарий в спектакль бумажного театра. Фотографические актёры разговаривают на объёмной сцене, рабочие выкатывают декорации, меняется свет. На выходе получаю видео с озвучкой, обложку, описание и короткие ролики для YouTube. Всё это можно посмотреть, поправить и собрать заново.

С 24 октября по 6 ноября я выпустил так семь длинных фильмов и как минимум восемнадцать Shorts. Эксперимент закончен. Мне понравилось и делать его, и то, что получилось. Новые выпуски пока делать не собираюсь.

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

Один из готовых спектаклей: «ИИ убрал должность. Навык остался: кому он теперь нужен?»

Бумажные актёры на объёмной сцене пекарни.

Откуда взялся театр

Сначала я искал, как показывать мысль движением. Делал короткие пробы: предмет падает, опора прогибается, усиление принимает нагрузку. Мне нравилось, когда у действия был вес. Рисованные человечки не понравились, попробовал фотографических персонажей.

Для каждого сначала делался эталон, затем по нему генерировались позы. Получался один узнаваемый человек, который мог сидеть, ждать, испугаться или взяться за предмет. Эти изображения уже можно было использовать в разных сценах.

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

Вокруг бумажных людей устроился театр. Появились декорации на тележках, рабочие сцены, таблички с репликами в руках актёров. В конце спектакля труппа выходит на поклон. Пространство, свет и камеру я сделал в Three.js, а персонажи остались фотографиями на плоскостях.

Условность здесь видна сразу. При этом стол должен стоять на полу, рука попадать к предмету, а тень соответствовать человеку. В одной из проб повар сменил позу, но его тень сохранила поднятую руку. Пришлось поправить смену маски, по которой она строилась. Даже бумажному повару нельзя позволять разбрасываться конечностями.

Что надо было удержать в голове

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

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

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

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

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

Это позволило постепенно перестать собирать каждый выпуск как отдельный проект. У меня появилась мастерская со своим запасом материалов и порядком работы.

Как устроена работа с инструментом

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

Затем подбираются актёры и позы, записываются голоса. Для озвучки и звуков я использовал ElevenLabs. Система сверяет запись с текстом и рассчитывает время сцены по получившейся речи. После этого собирает звук и картинку. Видео рендерится локально на моём Mac.

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

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

На выходе лежит комплект для публикации: фильм, обложка, название, описание, главы и субтитры. Для Shorts сцена отдельно пересчитывается с вертикальной камерой. На YouTube я загружал файлы вручную.

Где пришлось научить систему проверять себя

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

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

С видимостью была похожая история. Щит с важной надписью существует, но его закрывает актёр. Или камера оставила щит за краем. Система стала проверять, видны ли обязательные объекты из выбранного ракурса. Для Shorts потребовалась отдельная проверка: когда я её добавил, она нашла два щита за кадром в уже выпущенных роликах.

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

Что осталось после эксперимента

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

Агенты писали код и помогали готовить материалы. Я определял, как должен быть устроен театр, связывал части производства, выбирал, что принять, а что переделать. По ходу приходилось менять и сам инструмент. Чем дальше работа уходила от первой пробы, тем важнее становилось понимать её целиком.

Именно этим мне интересно заниматься: справляться с когнитивной сложностью и доводить замысел до результата. Возможность быстро получить код здорово помогает. В «Бумажном театре» она позволила мне добраться до собственного производства видео и выпустить несколько спектаклей.

На этом эксперимент для меня завершён. Результатом я доволен; продолжать выпускать ролики пока не планирую. Инструмент остался, фильмы тоже. Их можно посмотреть на моём канале: например, историю про предложение на шесть миллионов или мастера, которому понадобилась одна страница из интернета.